diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AllUnderImportsScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AllUnderImportsScope.kt index a17b22d7a3e..6f8f1c2d5fe 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AllUnderImportsScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AllUnderImportsScope.kt @@ -42,7 +42,7 @@ class AllUnderImportsScope : JetScope { return scopes.flatMap { it.getDescriptors(kindFilter, nameFilter) } } - override fun getClassifier(name: Name): ClassifierDescriptor? { + override fun getClassifier(name: Name, location: Location): ClassifierDescriptor? { return scopes.asSequence().map { it.getClassifier(name) }.filterNotNull().singleOrNull() } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java index f24215e3e6d..aa13eded01d 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java @@ -41,10 +41,7 @@ import org.jetbrains.kotlin.resolve.constants.ConstantValue; import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator; import org.jetbrains.kotlin.resolve.dataClassUtils.DataClassUtilsPackage; import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil; -import org.jetbrains.kotlin.resolve.scopes.JetScope; -import org.jetbrains.kotlin.resolve.scopes.JetScopeUtils; -import org.jetbrains.kotlin.resolve.scopes.WritableScope; -import org.jetbrains.kotlin.resolve.scopes.WritableScopeImpl; +import org.jetbrains.kotlin.resolve.scopes.*; import org.jetbrains.kotlin.storage.StorageManager; import org.jetbrains.kotlin.types.*; import org.jetbrains.kotlin.types.checker.JetTypeChecker; @@ -528,7 +525,7 @@ public class DescriptorResolver { Name name = nameExpression.getReferencedNameAsName(); - ClassifierDescriptor classifier = scope.getClassifier(name); + ClassifierDescriptor classifier = scope.getClassifier(name, Location.NOWHERE); if (classifier instanceof TypeParameterDescriptor && classifier.getContainingDeclaration() == descriptor) continue; if (classifier != null) { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.java index 5fe877ce391..91adbadf01b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.java @@ -228,7 +228,7 @@ public class QualifiedExpressionResolver { descriptors.add(packageDescriptor); } - ClassifierDescriptor classifierDescriptor = outerScope.getClassifier(referencedName); + ClassifierDescriptor classifierDescriptor = outerScope.getClassifier(referencedName, Location.NOWHERE); if (classifierDescriptor != null) { descriptors.add(classifierDescriptor); } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/SingleImportScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/SingleImportScope.kt index 4269ba34168..a9593bb3a30 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/SingleImportScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/SingleImportScope.kt @@ -20,11 +20,11 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.JetScopeImpl -import org.jetbrains.kotlin.types.JetType +import org.jetbrains.kotlin.resolve.scopes.Location import org.jetbrains.kotlin.utils.Printer class SingleImportScope(private val aliasName: Name, private val descriptors: Collection) : JetScopeImpl() { - override fun getClassifier(name: Name) + override fun getClassifier(name: Name, location: Location) = if (name == aliasName) descriptors.filterIsInstance().singleOrNull() else null override fun getPackage(name: Name) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyDeclarationResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyDeclarationResolver.java index a76f9581e60..7b1c10b41e3 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyDeclarationResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyDeclarationResolver.java @@ -70,7 +70,7 @@ public class LazyDeclarationResolver { // class A {} class A { fun foo(): A} // and if we find the class by name only, we may b-not get the right one. // This call is only needed to make sure the classes are written to trace - ClassifierDescriptor scopeDescriptor = resolutionScope.getClassifier(classOrObject.getNameAsSafeName()); + ClassifierDescriptor scopeDescriptor = resolutionScope.getClassifier(classOrObject.getNameAsSafeName(), Location.NOWHERE); DeclarationDescriptor descriptor = getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, classOrObject); if (descriptor == null) { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt index 2acefedc88b..4ac5549a8f1 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt @@ -234,7 +234,7 @@ class LazyImportScope( return Visibilities.isVisible(ReceiverValue.IRRELEVANT_RECEIVER, descriptor, importResolver.moduleDescriptor) == includeVisible } - override fun getClassifier(name: Name): ClassifierDescriptor? { + override fun getClassifier(name: Name, location: Location): ClassifierDescriptor? { return importResolver.selectSingleFromImports(name, LookupMode.ONLY_CLASSES_AND_PACKAGES) { scope, name -> val descriptor = scope.getClassifier(name) if (descriptor != null && isClassVisible(descriptor as ClassDescriptor/*no type parameter can be imported*/)) descriptor else null diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSession.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSession.java index 45358ac7b8f..0feb54c2c5d 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSession.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSession.java @@ -40,6 +40,7 @@ import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyAnnotationsContextImpl; import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyPackageDescriptor; import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyScriptDescriptor; import org.jetbrains.kotlin.resolve.scopes.JetScope; +import org.jetbrains.kotlin.resolve.scopes.Location; import org.jetbrains.kotlin.storage.*; import javax.inject.Inject; @@ -281,7 +282,7 @@ public class ResolveSession implements KotlinCodeAnalyzer, LazyClassContext { public ClassDescriptor getClassDescriptorForScript(@NotNull JetScript script) { JetScope resolutionScope = lazyDeclarationResolver.resolutionScopeToResolveDeclaration(script); FqName fqName = ScriptNameUtil.classNameForScript(script); - ClassifierDescriptor classifier = resolutionScope.getClassifier(fqName.shortName()); + ClassifierDescriptor classifier = resolutionScope.getClassifier(fqName.shortName(), Location.NOWHERE); assert classifier != null : "No descriptor for " + fqName + " in file " + script.getContainingFile(); return (ClassDescriptor) classifier; } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java index efde25a3dc0..becd0b36fec 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/ResolveSessionUtils.java @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.name.SpecialNames; import org.jetbrains.kotlin.psi.JetNamedDeclaration; import org.jetbrains.kotlin.psi.JetNamedDeclarationUtil; import org.jetbrains.kotlin.resolve.scopes.JetScope; +import org.jetbrains.kotlin.resolve.scopes.Location; import java.util.ArrayList; import java.util.Collection; @@ -83,7 +84,7 @@ public class ResolveSessionUtils { JetScope scope = outerScope; for (Name name : path.pathSegments()) { - ClassifierDescriptor classifier = scope.getClassifier(name); + ClassifierDescriptor classifier = scope.getClassifier(name, Location.NOWHERE); if (!(classifier instanceof ClassDescriptor)) return null; scope = ((ClassDescriptor) classifier).getUnsubstitutedInnerClassesScope(); } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/AbstractLazyMemberScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/AbstractLazyMemberScope.kt index 87c30685663..b65d8136cf9 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/AbstractLazyMemberScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/AbstractLazyMemberScope.kt @@ -62,7 +62,7 @@ protected constructor( override fun getContainingDeclaration() = thisDescriptor - override fun getClassifier(name: Name): ClassDescriptor? = classDescriptors(name).firstOrNull() + override fun getClassifier(name: Name, location: Location): ClassDescriptor? = classDescriptors(name).firstOrNull() override fun getFunctions(name: Name, location: Location): Collection = functionDescriptors(name) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java index 7426c82f89a..a7b30da5929 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassDescriptor.java @@ -349,7 +349,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes } Name name = ((JetClassOrObjectInfo) companionObjectInfo).getName(); assert name != null; - getUnsubstitutedMemberScope().getClassifier(name); + getUnsubstitutedMemberScope().getClassifier(name, Location.NOWHERE); ClassDescriptor companionObjectDescriptor = c.getTrace().get(BindingContext.CLASS, companionObject); if (companionObjectDescriptor instanceof LazyClassDescriptor) { assert DescriptorUtils.isCompanionObject(companionObjectDescriptor) : "Not a companion object: " + companionObjectDescriptor; diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/WritableScopeImpl.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/WritableScopeImpl.kt index a2226105a3a..341f134a4cb 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/WritableScopeImpl.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/WritableScopeImpl.kt @@ -166,7 +166,7 @@ public class WritableScopeImpl @jvmOverloads constructor( addVariableOrClassDescriptor(classifierDescriptor) } - override fun getClassifier(name: Name): ClassifierDescriptor? { + override fun getClassifier(name: Name, location: Location): ClassifierDescriptor? { checkMayRead() return variableOrClassDescriptorByName(name) as? ClassifierDescriptor @@ -276,7 +276,7 @@ public class WritableScopeImpl @jvmOverloads constructor( return concatInOrder(functionsByName(name, descriptorLimit), workerScope.getFunctions(name)) } - override fun getClassifier(name: Name): ClassifierDescriptor? { + override fun getClassifier(name: Name, location: Location): ClassifierDescriptor? { checkMayRead() return variableOrClassDescriptorByName(name, descriptorLimit) as? ClassifierDescriptor diff --git a/compiler/tests/org/jetbrains/kotlin/resolve/annotation/AbstractAnnotationDescriptorResolveTest.java b/compiler/tests/org/jetbrains/kotlin/resolve/annotation/AbstractAnnotationDescriptorResolveTest.java index 1aa06c2aa1d..8f18262b572 100644 --- a/compiler/tests/org/jetbrains/kotlin/resolve/annotation/AbstractAnnotationDescriptorResolveTest.java +++ b/compiler/tests/org/jetbrains/kotlin/resolve/annotation/AbstractAnnotationDescriptorResolveTest.java @@ -206,7 +206,7 @@ public abstract class AbstractAnnotationDescriptorResolveTest extends JetLiteFix @NotNull protected static ClassDescriptor getClassDescriptor(@NotNull PackageFragmentDescriptor packageView, @NotNull String name) { Name className = Name.identifier(name); - ClassifierDescriptor aClass = packageView.getMemberScope().getClassifier(className); + ClassifierDescriptor aClass = packageView.getMemberScope().getClassifier(className, Location.NOWHERE); assertNotNull("Failed to find class: " + packageView.getName() + "." + className, aClass); assert aClass instanceof ClassDescriptor : "Not a class: " + aClass; return (ClassDescriptor) aClass; @@ -216,7 +216,7 @@ public abstract class AbstractAnnotationDescriptorResolveTest extends JetLiteFix private static ClassDescriptor getInnerClassDescriptor(@NotNull ClassDescriptor classDescriptor, @NotNull String name) { Name propertyName = Name.identifier(name); JetScope memberScope = classDescriptor.getMemberScope(Collections.emptyList()); - ClassifierDescriptor innerClass = memberScope.getClassifier(propertyName); + ClassifierDescriptor innerClass = memberScope.getClassifier(propertyName, Location.NOWHERE); assert innerClass instanceof ClassDescriptor : "Failed to find inner class " + propertyName + " in class " + diff --git a/compiler/tests/org/jetbrains/kotlin/test/util/DescriptorValidator.java b/compiler/tests/org/jetbrains/kotlin/test/util/DescriptorValidator.java index 5181fd4bb76..b3f7e6b6668 100644 --- a/compiler/tests/org/jetbrains/kotlin/test/util/DescriptorValidator.java +++ b/compiler/tests/org/jetbrains/kotlin/test/util/DescriptorValidator.java @@ -426,7 +426,7 @@ public class DescriptorValidator { public Void visitTypeParameterDescriptor( TypeParameterDescriptor descriptor, JetScope scope ) { - assertFound(scope, descriptor, scope.getClassifier(descriptor.getName()), true); + assertFound(scope, descriptor, scope.getClassifier(descriptor.getName(), Location.NOWHERE), true); return null; } @@ -434,7 +434,7 @@ public class DescriptorValidator { public Void visitClassDescriptor( ClassDescriptor descriptor, JetScope scope ) { - assertFound(scope, descriptor, scope.getClassifier(descriptor.getName()), true); + assertFound(scope, descriptor, scope.getClassifier(descriptor.getName(), Location.NOWHERE), true); return null; } diff --git a/compiler/tests/org/jetbrains/kotlin/types/JetTypeCheckerTest.java b/compiler/tests/org/jetbrains/kotlin/types/JetTypeCheckerTest.java index 608c06c003b..ed86e795109 100644 --- a/compiler/tests/org/jetbrains/kotlin/types/JetTypeCheckerTest.java +++ b/compiler/tests/org/jetbrains/kotlin/types/JetTypeCheckerTest.java @@ -623,7 +623,7 @@ public class JetTypeCheckerTest extends JetLiteFixture { else { Name shortName = fqName.shortName(); assert shortName.equals(defaultImport.getImportedName()); - writableScope.addClassifierDescriptor(module.getPackage(fqName.parent()).getMemberScope().getClassifier(shortName)); + writableScope.addClassifierDescriptor(module.getPackage(fqName.parent()).getMemberScope().getClassifier(shortName, Location.NOWHERE)); } } scopeChain.add(module.getPackage(FqName.ROOT).getMemberScope()); diff --git a/compiler/tests/org/jetbrains/kotlin/types/TypeSubstitutorTest.java b/compiler/tests/org/jetbrains/kotlin/types/TypeSubstitutorTest.java index b7cddf77cf2..a1c46cc2448 100644 --- a/compiler/tests/org/jetbrains/kotlin/types/TypeSubstitutorTest.java +++ b/compiler/tests/org/jetbrains/kotlin/types/TypeSubstitutorTest.java @@ -85,7 +85,7 @@ public class TypeSubstitutorTest extends KotlinTestWithEnvironment { JetFile jetFile = JetPsiFactory(getProject()).createFile(text); ModuleDescriptor module = LazyResolveTestUtil.resolveLazily(Collections.singletonList(jetFile), getEnvironment()); JetScope topLevelDeclarations = module.getPackage(FqName.ROOT).getMemberScope(); - ClassifierDescriptor contextClass = topLevelDeclarations.getClassifier(Name.identifier("___Context")); + ClassifierDescriptor contextClass = topLevelDeclarations.getClassifier(Name.identifier("___Context"), Location.NOWHERE); assert contextClass instanceof ClassDescriptor; WritableScopeImpl typeParameters = new WritableScopeImpl(JetScope.Empty.INSTANCE$, module, RedeclarationHandler.THROW_EXCEPTION, "Type parameter scope"); @@ -124,7 +124,7 @@ public class TypeSubstitutorTest extends KotlinTestWithEnvironment { String typeParameterName = pair.first; String replacementProjectionString = pair.second; - ClassifierDescriptor classifier = scope.getClassifier(Name.identifier(typeParameterName)); + ClassifierDescriptor classifier = scope.getClassifier(Name.identifier(typeParameterName), Location.NOWHERE); assertNotNull("No type parameter named " + typeParameterName, classifier); assertTrue(typeParameterName + " is not a type parameter: " + classifier, classifier instanceof TypeParameterDescriptor); diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt index 90951433e91..b711eb60811 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt @@ -35,12 +35,12 @@ import org.jetbrains.kotlin.load.java.structure.JavaArrayType import org.jetbrains.kotlin.load.java.structure.JavaClass import org.jetbrains.kotlin.load.java.structure.JavaConstructor import org.jetbrains.kotlin.load.java.structure.JavaMethod -import org.jetbrains.kotlin.load.java.structure.* import org.jetbrains.kotlin.load.java.typeEnhacement.enhanceSignatures import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.DescriptorFactory import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter +import org.jetbrains.kotlin.resolve.scopes.Location import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.types.TypeUtils import org.jetbrains.kotlin.utils.* @@ -285,7 +285,7 @@ public class LazyJavaClassMemberScope( override fun getDispatchReceiverParameter(): ReceiverParameterDescriptor? = DescriptorUtils.getDispatchReceiverParameterIfNeeded(getContainingDeclaration()) - override fun getClassifier(name: Name): ClassifierDescriptor? = nestedClasses(name) + override fun getClassifier(name: Name, location: Location): ClassifierDescriptor? = nestedClasses(name) override fun getClassNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection = nestedClassIndex().keySet() + enumEntryIndex().keySet() diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticClassScope.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticClassScope.kt index 08eee39184a..c705ff59a4c 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticClassScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaStaticClassScope.kt @@ -16,14 +16,18 @@ package org.jetbrains.kotlin.load.java.lazy.descriptors -import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.resolve.DescriptorUtils -import org.jetbrains.kotlin.name.* +import org.jetbrains.kotlin.descriptors.ClassifierDescriptor +import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext import org.jetbrains.kotlin.load.java.structure.JavaClass -import org.jetbrains.kotlin.resolve.DescriptorFactory.* -import org.jetbrains.kotlin.utils.addIfNotNull +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.resolve.DescriptorFactory.createEnumValueOfMethod +import org.jetbrains.kotlin.resolve.DescriptorFactory.createEnumValuesMethod +import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter +import org.jetbrains.kotlin.resolve.scopes.Location +import org.jetbrains.kotlin.utils.addIfNotNull public class LazyJavaStaticClassScope( c: LazyJavaResolverContext, @@ -54,7 +58,7 @@ public class LazyJavaStaticClassScope( memberIndex().getAllFieldNames() override fun getClassNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection = listOf() - override fun getClassifier(name: Name): ClassifierDescriptor? = null + override fun getClassifier(name: Name, location: Location): ClassifierDescriptor? = null override fun getSubPackages(): Collection = listOf() diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyPackageFragmentScopeForJavaPackage.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyPackageFragmentScopeForJavaPackage.kt index 945c8e4c361..a36369fe860 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyPackageFragmentScopeForJavaPackage.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyPackageFragmentScopeForJavaPackage.kt @@ -70,7 +70,7 @@ public class LazyPackageFragmentScopeForJavaPackage( } } - override fun getClassifier(name: Name): ClassifierDescriptor? = classes(name) + override fun getClassifier(name: Name, location: Location): ClassifierDescriptor? = classes(name) override fun getProperties(name: Name, location: Location) = deserializedPackageScope().getProperties(name) override fun getFunctions(name: Name, location: Location) = deserializedPackageScope().getFunctions(name) + super.getFunctions(name) diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java index cf10714de9e..f5f11a4c43e 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java @@ -237,7 +237,7 @@ public class KotlinBuiltIns { @NotNull private ClassDescriptor getAnnotationClassByName(@NotNull Name simpleName) { - ClassifierDescriptor classifier = annotationPackageFragment.getMemberScope().getClassifier(simpleName); + ClassifierDescriptor classifier = annotationPackageFragment.getMemberScope().getClassifier(simpleName, UsageLocation.NO_LOCATION); assert classifier instanceof ClassDescriptor : "Must be a class descriptor " + simpleName + ", but was " + (classifier == null ? "null" : classifier.toString()); return (ClassDescriptor) classifier; @@ -252,7 +252,7 @@ public class KotlinBuiltIns { @Nullable public ClassDescriptor getBuiltInClassByNameNullable(@NotNull Name simpleName) { - ClassifierDescriptor classifier = getBuiltInsPackageFragment().getMemberScope().getClassifier(simpleName); + ClassifierDescriptor classifier = getBuiltInsPackageFragment().getMemberScope().getClassifier(simpleName, Location.NOWHERE); assert classifier == null || classifier instanceof ClassDescriptor : "Must be a class descriptor " + simpleName + ", but was " + classifier; return (ClassDescriptor) classifier; @@ -401,7 +401,7 @@ public class KotlinBuiltIns { @Nullable public ClassDescriptor getAnnotationTargetEnumEntry(@NotNull Name name) { - ClassifierDescriptor result = getAnnotationTargetEnum().getUnsubstitutedInnerClassesScope().getClassifier(name); + ClassifierDescriptor result = getAnnotationTargetEnum().getUnsubstitutedInnerClassesScope().getClassifier(name, UsageLocation.NO_LOCATION); return result instanceof ClassDescriptor ? (ClassDescriptor) result : null; } diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java index f9e9dd0462b..407bf43e7f3 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.name.SpecialNames; import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter; import org.jetbrains.kotlin.resolve.scopes.FilteringScope; import org.jetbrains.kotlin.resolve.scopes.JetScope; +import org.jetbrains.kotlin.resolve.scopes.Location; import org.jetbrains.kotlin.types.ErrorUtils; import org.jetbrains.kotlin.types.JetType; import org.jetbrains.kotlin.types.LazyType; @@ -387,7 +388,8 @@ public class DescriptorUtils { @Nullable public static ClassDescriptor getInnerClassByName(@NotNull ClassDescriptor classDescriptor, @NotNull String innerClassName) { - ClassifierDescriptor classifier = classDescriptor.getDefaultType().getMemberScope().getClassifier(Name.identifier(innerClassName)); + ClassifierDescriptor classifier = + classDescriptor.getDefaultType().getMemberScope().getClassifier(Name.identifier(innerClassName), Location.NOWHERE); assert classifier instanceof ClassDescriptor : "Inner class " + innerClassName + " in " + classDescriptor + " should be instance of ClassDescriptor, but was: " + (classifier == null ? "null" : classifier.getClass()); diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/AbstractScopeAdapter.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/AbstractScopeAdapter.kt index 33d831185ad..3c8c18af272 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/AbstractScopeAdapter.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/AbstractScopeAdapter.kt @@ -39,7 +39,7 @@ public abstract class AbstractScopeAdapter : JetScope { return workerScope.getPackage(name) } - override fun getClassifier(name: Name): ClassifierDescriptor? { + override fun getClassifier(name: Name, location: Location): ClassifierDescriptor? { return workerScope.getClassifier(name) } diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/ChainedScope.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/ChainedScope.kt index ebfa671371e..f454fbf7eb6 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/ChainedScope.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/ChainedScope.kt @@ -50,7 +50,7 @@ public open class ChainedScope( return result ?: emptySet() } - override fun getClassifier(name: Name): ClassifierDescriptor? + override fun getClassifier(name: Name, location: Location): ClassifierDescriptor? = getFirstMatch { it.getClassifier(name) } override fun getPackage(name: Name): PackageViewDescriptor? diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/ExplicitImportsScope.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/ExplicitImportsScope.kt index 8ac95c3a375..06afd636c10 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/ExplicitImportsScope.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/ExplicitImportsScope.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.utils.Printer import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull public class ExplicitImportsScope(private val descriptors: Collection) : JetScopeImpl() { - override fun getClassifier(name: Name) = descriptors.filter { it.getName() == name }.firstIsInstanceOrNull() + override fun getClassifier(name: Name, location: Location) = descriptors.filter { it.getName() == name }.firstIsInstanceOrNull() override fun getPackage(name: Name)= descriptors.filter { it.getName() == name }.firstIsInstanceOrNull() diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/FilteringScope.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/FilteringScope.kt index a625cbbb917..fd00ba19ddd 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/FilteringScope.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/FilteringScope.kt @@ -33,7 +33,7 @@ public class FilteringScope(private val workerScope: JetScope, private val predi override fun getPackage(name: Name) = filterDescriptor(workerScope.getPackage(name)) - override fun getClassifier(name: Name) = filterDescriptor(workerScope.getClassifier(name)) + override fun getClassifier(name: Name, location: Location) = filterDescriptor(workerScope.getClassifier(name)) override fun getProperties(name: Name, location: Location) = workerScope.getProperties(name).filter(predicate) diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/InnerClassesScopeWrapper.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/InnerClassesScopeWrapper.kt index 45609117d65..8987f3d8aec 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/InnerClassesScopeWrapper.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/InnerClassesScopeWrapper.kt @@ -21,7 +21,7 @@ import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor import org.jetbrains.kotlin.name.Name public class InnerClassesScopeWrapper(override val workerScope: JetScope) : AbstractScopeAdapter() { - override fun getClassifier(name: Name) = workerScope.getClassifier(name) as? ClassDescriptor + override fun getClassifier(name: Name, location: Location) = workerScope.getClassifier(name) as? ClassDescriptor override fun getDeclarationsByLabel(labelName: Name) = workerScope.getDeclarationsByLabel(labelName).filterIsInstance() diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/JetScope.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/JetScope.kt index 8c46f2fe457..2a5cde44eeb 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/JetScope.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/JetScope.kt @@ -25,7 +25,7 @@ import java.lang.reflect.Modifier public interface JetScope { - public fun getClassifier(name: Name): ClassifierDescriptor? + public fun getClassifier(name: Name, location: Location = Location.NOWHERE): ClassifierDescriptor? public fun getPackage(name: Name): PackageViewDescriptor? diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/JetScopeImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/JetScopeImpl.kt index 139a85f1243..92600deefda 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/JetScopeImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/JetScopeImpl.kt @@ -22,7 +22,7 @@ import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.utils.Printer public abstract class JetScopeImpl : JetScope { - override fun getClassifier(name: Name): ClassifierDescriptor? = null + override fun getClassifier(name: Name, location: Location): ClassifierDescriptor? = null override fun getProperties(name: Name, location: Location): Collection = setOf() diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/StaticScopeForKotlinClass.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/StaticScopeForKotlinClass.kt index 43ab55086d1..f4ac59ea1c1 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/StaticScopeForKotlinClass.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/StaticScopeForKotlinClass.kt @@ -28,7 +28,7 @@ import java.util.ArrayList public class StaticScopeForKotlinClass( private val containingClass: ClassDescriptor ) : JetScopeImpl() { - override fun getClassifier(name: Name) = null // TODO + override fun getClassifier(name: Name, location: Location) = null // TODO private val functions: List by lazy { if (containingClass.getKind() != ClassKind.ENUM_CLASS) { diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/SubstitutingScope.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/SubstitutingScope.kt index 16a94e4e0fd..41244b9bb1b 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/SubstitutingScope.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/SubstitutingScope.kt @@ -65,7 +65,7 @@ public class SubstitutingScope(private val workerScope: JetScope, private val su override fun getLocalVariable(name: Name) = substitute(workerScope.getLocalVariable(name)) - override fun getClassifier(name: Name) = substitute(workerScope.getClassifier(name)) + override fun getClassifier(name: Name, location: Location) = substitute(workerScope.getClassifier(name)) override fun getFunctions(name: Name, location: Location) = substitute(workerScope.getFunctions(name)) diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java index f87a75b003f..03be18d80f8 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java @@ -81,8 +81,9 @@ public class ErrorUtils { this.debugMessage = debugMessage; } + @Nullable @Override - public ClassifierDescriptor getClassifier(@NotNull Name name) { + public ClassifierDescriptor getClassifier(@NotNull Name name, @NotNull Location location) { return createErrorClass(name.asString()); } @@ -180,7 +181,7 @@ public class ErrorUtils { @Nullable @Override - public ClassifierDescriptor getClassifier(@NotNull Name name) { + public ClassifierDescriptor getClassifier(@NotNull Name name, @NotNull Location location) { throw new IllegalStateException(); } diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt index 76bb9499002..3d1a171cbd3 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt @@ -106,7 +106,7 @@ public abstract class DeserializedMemberScope protected constructor( override fun getProperties(name: Name, location: Location): Collection = properties.invoke(name) - override fun getClassifier(name: Name) = getClassDescriptor(name) + override fun getClassifier(name: Name, location: Location) = getClassDescriptor(name) protected abstract fun getClassDescriptor(name: Name): ClassifierDescriptor? diff --git a/idea/ide-common/src/org/jetbrains/kotlin/idea/util/TypeUtils.kt b/idea/ide-common/src/org/jetbrains/kotlin/idea/util/TypeUtils.kt index 9864f331b0c..4ac7a36c10b 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/idea/util/TypeUtils.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/idea/util/TypeUtils.kt @@ -88,4 +88,4 @@ public fun JetType.approximateWithResolvableType(scope: JetScope?, checkTypePara if (isError() || isResolvableInScope(scope, checkTypeParameters)) return this return supertypes().firstOrNull { it.isResolvableInScope(scope, checkTypeParameters) } ?: KotlinBuiltIns.getInstance().getAnyType() -} \ No newline at end of file +} diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/missingDependencies.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/missingDependencies.kt index dbfd26ea74f..08427d768dd 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/missingDependencies.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/missingDependencies.kt @@ -16,20 +16,21 @@ package org.jetbrains.kotlin.idea.decompiler.textBuilder -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.annotations.Annotations +import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl +import org.jetbrains.kotlin.descriptors.impl.ConstructorDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.scopes.JetScope import org.jetbrains.kotlin.resolve.scopes.JetScopeImpl -import org.jetbrains.kotlin.utils.Printer -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.types.error.MissingDependencyErrorClass -import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl -import org.jetbrains.kotlin.types.TypeSubstitutor -import org.jetbrains.kotlin.types.TypeProjection -import org.jetbrains.kotlin.descriptors.impl.ConstructorDescriptorImpl -import org.jetbrains.kotlin.descriptors.annotations.Annotations +import org.jetbrains.kotlin.resolve.scopes.Location import org.jetbrains.kotlin.types.ErrorUtils.createErrorType +import org.jetbrains.kotlin.types.TypeProjection +import org.jetbrains.kotlin.types.TypeSubstitutor +import org.jetbrains.kotlin.types.error.MissingDependencyErrorClass +import org.jetbrains.kotlin.utils.Printer private class PackageFragmentWithMissingDependencies(override val fqName: FqName, moduleDescriptor: ModuleDescriptor) : PackageFragmentDescriptorImpl(moduleDescriptor, fqName) { @@ -47,7 +48,7 @@ private class ScopeWithMissingDependencies(val fqName: FqName, val containing: D p.println("Special scope for decompiler, containing class with any name") } - override fun getClassifier(name: Name): ClassifierDescriptor? { + override fun getClassifier(name: Name, location: Location): ClassifierDescriptor? { return MissingDependencyErrorClassDescriptor(getContainingDeclaration(), fqName.child(name)) } } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/HeuristicSignatures.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/HeuristicSignatures.kt index b1b305b7aa3..53c508d5e12 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/HeuristicSignatures.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/HeuristicSignatures.kt @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.resolve.BindingTraceContext import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.scopes.ChainedScope import org.jetbrains.kotlin.resolve.scopes.JetScope +import org.jetbrains.kotlin.resolve.scopes.Location import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.types.SubstitutionUtils import org.jetbrains.kotlin.types.TypeUtils @@ -109,6 +110,6 @@ public object HeuristicSignatures { private class TypeParametersScope(params: Collection) : JetScope by JetScope.Empty { private val paramsByName = params.map { it.getName() to it }.toMap() - override fun getClassifier(name: Name) = paramsByName[name] + override fun getClassifier(name: Name, location: Location) = paramsByName[name] } -} \ No newline at end of file +} diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt index c5481944753..f5ed472e50c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt @@ -246,4 +246,4 @@ private fun TypePredicate.getRepresentativeTypes(): Set { is AllTypes -> emptySet() else -> throw AssertionError("Invalid type predicate: ${this}") } -} \ No newline at end of file +}