Refactor: Introduce DeclarationDescriptor#module utility

This commit is contained in:
Pavel V. Talanov
2014-11-20 15:50:15 +03:00
parent 96100eec1d
commit 0319ef797e
5 changed files with 14 additions and 11 deletions
@@ -28,7 +28,7 @@ import org.jetbrains.jet.lang.types.ErrorUtils
import org.jetbrains.jet.lang.resolve.BindingContext
import org.jetbrains.jet.lang.resolve.BindingTraceContext
import org.jetbrains.jet.lang.resolve.BindingTrace
import org.jetbrains.jet.lang.resolve.DescriptorUtils
import org.jetbrains.jet.lang.resolve.descriptorUtil.module
public fun JetExpression.computeTypeInfoInContext(
scope: JetScope,
@@ -68,4 +68,4 @@ public fun JetType?.safeType(expression: JetExpression): JetType {
return ErrorUtils.createErrorType("Type for " + expression.getText())
}
private fun JetScope.getModule(): ModuleDescriptor = DescriptorUtils.getContainingModule(this.getContainingDeclaration())
private fun JetScope.getModule(): ModuleDescriptor = this.getContainingDeclaration().module
@@ -28,7 +28,6 @@ import org.jetbrains.jet.lang.resolve.name.Name
import org.jetbrains.jet.lang.resolve.name.FqName
import org.jetbrains.jet.lang.descriptors.*
import org.junit.Assert
import org.jetbrains.jet.lang.resolve.DescriptorUtils
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment
import org.jetbrains.jet.config.CompilerConfiguration
import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys
@@ -41,6 +40,7 @@ import org.jetbrains.jet.analyzer.ModuleInfo
import java.util.HashMap
import org.jetbrains.jet.analyzer.ModuleContent
import org.jetbrains.jet.lang.types.ErrorUtils
import org.jetbrains.jet.lang.resolve.descriptorUtil.module
public class MultiModuleJavaAnalysisCustomTest : UsefulTestCase() {
@@ -157,7 +157,7 @@ public class MultiModuleJavaAnalysisCustomTest : UsefulTestCase() {
val descriptorName = referencedDescriptor.getName().asString()
val expectedModuleName = "<${descriptorName.toLowerCase().first().toString()}>"
val moduleName = DescriptorUtils.getContainingModule(referencedDescriptor).getName().asString()
val moduleName = referencedDescriptor.module.getName().asString()
Assert.assertEquals(
"Java class $descriptorName in $context should be in module $expectedModuleName, but instead was in $moduleName",
expectedModuleName, moduleName
@@ -31,4 +31,7 @@ public fun DeclarationDescriptor.getImportableDescriptor(): DeclarationDescripto
if (this is ConstructorDescriptor || DescriptorUtils.isClassObject(this)) getContainingDeclaration()!! else this
public val DeclarationDescriptor.isExtension: Boolean
get() = this is CallableDescriptor && getExtensionReceiverParameter() != null
get() = this is CallableDescriptor && getExtensionReceiverParameter() != null
public val DeclarationDescriptor.module: ModuleDescriptor
get() = DescriptorUtils.getContainingModule(this)
@@ -21,7 +21,6 @@ import org.jetbrains.jet.lang.resolve.kotlin.PackagePartClassUtils
import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.descriptors.serialization.JavaProtoBuf
import org.jetbrains.jet.renderer.DescriptorRenderer
import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession
import com.intellij.openapi.diagnostic.Logger
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
import com.intellij.openapi.roots.libraries.LibraryUtil
@@ -37,6 +36,8 @@ import com.intellij.openapi.module.impl.scopes.JdkScope
import com.intellij.openapi.roots.JdkOrderEntry
import org.jetbrains.jet.lang.psi.JetPsiUtil
import org.jetbrains.jet.lang.resolve.java.JvmClassName
import org.jetbrains.jet.lang.resolve.descriptorUtil.module
import org.jetbrains.jet.plugin.caches.resolve.resolveToDescriptor
private val LOG = Logger.getInstance("org.jetbrains.jet.plugin.debugger")
@@ -58,13 +59,12 @@ fun findPackagePartInternalNameForLibraryFile(elementAt: JetElement): String? {
val packagePartFile = findPackagePartFileNamesForElement(topLevelDeclaration).singleOrNull()
if (packagePartFile != null) return packagePartFile
val resolveSession = topLevelDeclaration.getLazyResolveSession()
val descriptor = resolveSession.resolveToDescriptor(topLevelDeclaration)
val descriptor = topLevelDeclaration.resolveToDescriptor()
if (descriptor !is CallableDescriptor) return null
val packageFqName = topLevelDeclaration.getContainingJetFile().getPackageFqName()
val packageDescriptor = resolveSession.getModuleDescriptorForElement(topLevelDeclaration).getPackage(packageFqName)
val packageDescriptor = descriptor.module.getPackage(packageFqName)
if (packageDescriptor == null) {
reportError(topLevelDeclaration, descriptor)
return null
@@ -25,7 +25,6 @@ import org.jetbrains.jet.lang.resolve.java.PackageClassUtils
import com.intellij.openapi.project.Project
import org.jetbrains.jet.lang.descriptors.ClassDescriptor
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
import org.jetbrains.jet.lang.resolve.DescriptorUtils
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns
import org.jetbrains.jet.lang.resolve.resolveTopLevelClass
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor
@@ -34,6 +33,7 @@ import org.jetbrains.jet.lang.resolve.java.TopDownAnalyzerFacadeForJVM
import org.jetbrains.jet.lang.resolve.BindingTraceContext
import org.jetbrains.jet.lang.resolve.name.ClassId
import org.jetbrains.jet.lang.resolve.MemberComparator
import org.jetbrains.jet.lang.resolve.descriptorUtil.module
public class DecompiledTextConsistencyTest : JetLightCodeInsightFixtureTestCase() {
@@ -76,7 +76,7 @@ class ProjectBasedResolverForDecompiler(project: Project) : ResolverForDecompile
override fun resolveDeclarationsInPackage(packageFqName: FqName): Collection<DeclarationDescriptor> {
val packageView = module.getPackage(packageFqName) ?: return listOf()
return packageView.getMemberScope().getAllDescriptors() filter {
it is CallableMemberDescriptor && DescriptorUtils.getContainingModule(it) != KotlinBuiltIns.getInstance().getBuiltInsModule()
it is CallableMemberDescriptor && it.module != KotlinBuiltIns.getInstance().getBuiltInsModule()
} sortBy MemberComparator.INSTANCE
}
}