diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index 45023e2870e..75ccf144724 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -75,6 +75,7 @@ import org.jetbrains.kotlin.resolve.inline.InlineUtil; import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodParameterKind; import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodParameterSignature; import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature; +import org.jetbrains.kotlin.resolve.scopes.Location; import org.jetbrains.kotlin.resolve.scopes.receivers.*; import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor; import org.jetbrains.kotlin.types.JetType; @@ -1074,7 +1075,8 @@ public class ExpressionCodegen extends JetVisitor implem assert loopRangeType != null; Type asmLoopRangeType = asmType(loopRangeType); - Collection incrementProp = loopRangeType.getMemberScope().getProperties(Name.identifier("increment")); + Collection incrementProp = + loopRangeType.getMemberScope().getProperties(Name.identifier("increment"), Location.NOWHERE); assert incrementProp.size() == 1 : loopRangeType + " " + incrementProp.size(); incrementType = asmType(incrementProp.iterator().next().getType()); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AllUnderImportsScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AllUnderImportsScope.kt index f80c038a654..b03f037510d 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AllUnderImportsScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AllUnderImportsScope.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.JetScope +import org.jetbrains.kotlin.resolve.scopes.Location import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.utils.Printer import java.util.ArrayList @@ -45,7 +46,7 @@ class AllUnderImportsScope : JetScope { return scopes.asSequence().map { it.getClassifier(name) }.filterNotNull().singleOrNull() } - override fun getProperties(name: Name): Collection { + override fun getProperties(name: Name, location: Location): Collection { return scopes.flatMap { it.getProperties(name) } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.java index 487ae768abb..b2ec0d3dcf8 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverrideResolver.java @@ -37,6 +37,7 @@ import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.resolve.calls.callResolverUtil.CallResolverUtilPackage; import org.jetbrains.kotlin.resolve.dataClassUtils.DataClassUtilsPackage; +import org.jetbrains.kotlin.resolve.scopes.Location; import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue; import org.jetbrains.kotlin.types.*; import org.jetbrains.kotlin.types.checker.JetTypeChecker; @@ -735,7 +736,7 @@ public class OverrideResolver { Set all = Sets.newLinkedHashSet(); all.addAll(supertype.getMemberScope().getFunctions(declared.getName())); //noinspection unchecked - all.addAll((Collection) supertype.getMemberScope().getProperties(declared.getName())); + all.addAll((Collection) supertype.getMemberScope().getProperties(declared.getName(), Location.NOWHERE)); for (CallableMemberDescriptor fromSuper : all) { if (OverridingUtil.DEFAULT.isOverridableBy(fromSuper, declared).getResult() == OVERRIDABLE) { if (Visibilities.isVisible(ReceiverValue.IRRELEVANT_RECEIVER, fromSuper, declared)) { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.java index 98f647407c3..c7caa605492 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.java @@ -235,7 +235,7 @@ public class QualifiedExpressionResolver { if (lookupMode == LookupMode.EVERYTHING) { descriptors.addAll(outerScope.getFunctions(referencedName)); - descriptors.addAll(outerScope.getProperties(referencedName)); + descriptors.addAll(outerScope.getProperties(referencedName, Location.NOWHERE)); VariableDescriptor localVariable = outerScope.getLocalVariable(referencedName); if (localVariable != null) { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/SingleImportScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/SingleImportScope.kt index 6b84617d723..188990bcf7f 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/SingleImportScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/SingleImportScope.kt @@ -30,7 +30,7 @@ class SingleImportScope(private val aliasName: Name, private val descriptors: Co override fun getPackage(name: Name) = if (name == aliasName) descriptors.filterIsInstance().singleOrNull() else null - override fun getProperties(name: Name) + override fun getProperties(name: Name, location: Location) = if (name == aliasName) descriptors.filterIsInstance() else emptyList() override fun getFunctions(name: Name) @@ -43,4 +43,4 @@ class SingleImportScope(private val aliasName: Name, private val descriptors: Co override fun printScopeStructure(p: Printer) { p.println(javaClass.getSimpleName(), ": ", aliasName) } -} \ No newline at end of file +} diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tasks/dynamicCalls.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tasks/dynamicCalls.kt index 528cdb6eed2..088e7ffcc87 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tasks/dynamicCalls.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tasks/dynamicCalls.kt @@ -29,6 +29,7 @@ import org.jetbrains.kotlin.resolve.calls.tasks.collectors.CallableDescriptorCol import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.resolve.scopes.JetScope import org.jetbrains.kotlin.resolve.scopes.JetScopeImpl +import org.jetbrains.kotlin.resolve.scopes.Location import org.jetbrains.kotlin.resolve.scopes.receivers.TransientReceiver import org.jetbrains.kotlin.types.DynamicType import org.jetbrains.kotlin.types.JetType @@ -76,7 +77,7 @@ object DynamicCallableDescriptors { return false } - override fun getProperties(name: Name): Collection { + override fun getProperties(name: Name, location: Location): Collection { return if (call.getValueArgumentList() == null && call.getValueArguments().isEmpty()) { listOf(createDynamicProperty(owner, name, call)) } 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 cbe952096cb..f77f4ef1dcd 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyDeclarationResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyDeclarationResolver.java @@ -26,11 +26,11 @@ import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.psi.psiUtil.PsiUtilPackage; import org.jetbrains.kotlin.renderer.DescriptorRenderer; -import org.jetbrains.kotlin.resolve.AnnotationResolver; import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.BindingTrace; import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyPackageDescriptor; import org.jetbrains.kotlin.resolve.scopes.JetScope; +import org.jetbrains.kotlin.resolve.scopes.Location; import org.jetbrains.kotlin.storage.LockBasedLazyResolveStorageManager; import javax.inject.Inject; @@ -146,7 +146,7 @@ public class LazyDeclarationResolver { // This is a primary constructor parameter ClassDescriptor classDescriptor = getClassDescriptor(jetClass); if (parameter.hasValOrVar()) { - classDescriptor.getDefaultType().getMemberScope().getProperties(parameter.getNameAsSafeName()); + classDescriptor.getDefaultType().getMemberScope().getProperties(parameter.getNameAsSafeName(), Location.NOWHERE); return getBindingContext().get(BindingContext.PRIMARY_CONSTRUCTOR_PARAMETER, parameter); } else { @@ -189,7 +189,7 @@ public class LazyDeclarationResolver { @Override public DeclarationDescriptor visitProperty(@NotNull JetProperty property, Void data) { JetScope scopeForDeclaration = resolutionScopeToResolveDeclaration(property); - scopeForDeclaration.getProperties(property.getNameAsSafeName()); + scopeForDeclaration.getProperties(property.getNameAsSafeName(), Location.NOWHERE); return getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, property); } 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 0093a919144..2e9ac103dc2 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt @@ -29,6 +29,7 @@ import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver.LookupMode import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.JetScope +import org.jetbrains.kotlin.resolve.scopes.Location import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.types.JetType @@ -245,7 +246,7 @@ class LazyImportScope( return importResolver.selectSingleFromImports(name, LookupMode.ONLY_CLASSES_AND_PACKAGES) { scope, name -> scope.getPackage(name) } } - override fun getProperties(name: Name): Collection { + override fun getProperties(name: Name, location: Location): Collection { if (filteringKind == FilteringKind.INVISIBLE_CLASSES) return listOf() return importResolver.collectFromImports(name, LookupMode.EVERYTHING) { scope, name -> scope.getProperties(name) } } 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 d6fe4b51cbf..25b97994d52 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 @@ -29,6 +29,7 @@ import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProvider import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.JetScope import org.jetbrains.kotlin.resolve.scopes.JetScopeImpl +import org.jetbrains.kotlin.resolve.scopes.Location import org.jetbrains.kotlin.storage.MemoizedFunctionToNotNull import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.types.JetType @@ -88,7 +89,7 @@ protected constructor( protected abstract fun getNonDeclaredFunctions(name: Name, result: MutableSet) - override fun getProperties(name: Name): Collection = propertyDescriptors(name) + override fun getProperties(name: Name, location: Location): Collection = propertyDescriptors(name) public fun doGetProperties(name: Name): Collection { val result = LinkedHashSet() diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt index 99ef7bf309e..4732a177c8b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt @@ -17,30 +17,31 @@ package org.jetbrains.kotlin.resolve.lazy.descriptors import com.google.common.collect.Lists -import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.descriptors.impl.ConstructorDescriptorImpl -import org.jetbrains.kotlin.diagnostics.Errors -import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.resolve.* -import org.jetbrains.kotlin.resolve.dataClassUtils.* -import org.jetbrains.kotlin.resolve.lazy.declarations.ClassMemberDeclarationProvider -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.resolve.scopes.JetScope -import org.jetbrains.kotlin.types.DeferredType -import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.storage.NullableLazyValue - -import java.util.* - +import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DELEGATION import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.FAKE_OVERRIDE +import org.jetbrains.kotlin.descriptors.impl.ConstructorDescriptorImpl +import org.jetbrains.kotlin.diagnostics.Errors +import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.psi.JetDeclaration +import org.jetbrains.kotlin.psi.JetProperty +import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.DelegationResolver.generateDelegatedMembers -import org.jetbrains.kotlin.storage.NotNullLazyValue -import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter -import org.jetbrains.kotlin.resolve.varianceChecker.VarianceChecker +import org.jetbrains.kotlin.resolve.dataClassUtils.createComponentName +import org.jetbrains.kotlin.resolve.dataClassUtils.isComponentLike import org.jetbrains.kotlin.resolve.lazy.LazyClassContext -import org.jetbrains.kotlin.psi.psiUtil.isObjectLiteral +import org.jetbrains.kotlin.resolve.lazy.declarations.ClassMemberDeclarationProvider +import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter +import org.jetbrains.kotlin.resolve.scopes.JetScope +import org.jetbrains.kotlin.resolve.scopes.Location +import org.jetbrains.kotlin.resolve.varianceChecker.VarianceChecker +import org.jetbrains.kotlin.storage.NotNullLazyValue +import org.jetbrains.kotlin.storage.NullableLazyValue +import org.jetbrains.kotlin.types.DeferredType +import org.jetbrains.kotlin.types.JetType +import java.util.ArrayList +import java.util.LinkedHashSet public open class LazyClassMemberScope( c: LazyClassContext, @@ -172,7 +173,7 @@ public open class LazyClassMemberScope( } } - override fun getProperties(name: Name): Collection { + override fun getProperties(name: Name, location: Location): Collection { // TODO: this should be handled by lazy property descriptors val properties = super.getProperties(name) resolveUnknownVisibilitiesForMembers(properties as Collection) diff --git a/compiler/tests/org/jetbrains/kotlin/resolve/annotation/AbstractAnnotationDescriptorResolveTest.java b/compiler/tests/org/jetbrains/kotlin/resolve/annotation/AbstractAnnotationDescriptorResolveTest.java index eae01ed1974..8827b7d1ff4 100644 --- a/compiler/tests/org/jetbrains/kotlin/resolve/annotation/AbstractAnnotationDescriptorResolveTest.java +++ b/compiler/tests/org/jetbrains/kotlin/resolve/annotation/AbstractAnnotationDescriptorResolveTest.java @@ -37,6 +37,7 @@ import org.jetbrains.kotlin.renderer.DescriptorRendererOptions; import org.jetbrains.kotlin.renderer.NameShortness; import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.scopes.JetScope; +import org.jetbrains.kotlin.resolve.scopes.Location; import org.jetbrains.kotlin.test.JetLiteFixture; import org.jetbrains.kotlin.test.JetTestUtils; import org.jetbrains.kotlin.types.TypeProjection; @@ -170,13 +171,13 @@ public abstract class AbstractAnnotationDescriptorResolveTest extends JetLiteFix protected static PropertyDescriptor getPropertyDescriptor(@NotNull PackageFragmentDescriptor packageView, @NotNull String name, boolean failOnMissing) { Name propertyName = Name.identifier(name); JetScope memberScope = packageView.getMemberScope(); - Collection properties = memberScope.getProperties(propertyName); + Collection properties = memberScope.getProperties(propertyName, Location.NOWHERE); if (properties.isEmpty()) { for (DeclarationDescriptor descriptor : memberScope.getAllDescriptors()) { if (descriptor instanceof ClassDescriptor) { Collection classProperties = ((ClassDescriptor) descriptor).getMemberScope(Collections.emptyList()) - .getProperties(propertyName); + .getProperties(propertyName, Location.NOWHERE); if (!classProperties.isEmpty()) { properties = classProperties; break; @@ -197,7 +198,7 @@ public abstract class AbstractAnnotationDescriptorResolveTest extends JetLiteFix private static PropertyDescriptor getPropertyDescriptor(@NotNull ClassDescriptor classDescriptor, @NotNull String name) { Name propertyName = Name.identifier(name); JetScope memberScope = classDescriptor.getMemberScope(Collections.emptyList()); - Collection properties = memberScope.getProperties(propertyName); + Collection properties = memberScope.getProperties(propertyName, Location.NOWHERE); assert properties.size() == 1 : "Failed to find property " + propertyName + " in class " + classDescriptor.getName(); return (PropertyDescriptor) properties.iterator().next(); } diff --git a/compiler/tests/org/jetbrains/kotlin/test/util/DescriptorValidator.java b/compiler/tests/org/jetbrains/kotlin/test/util/DescriptorValidator.java index 33c4e68ffad..f3145ba52a2 100644 --- a/compiler/tests/org/jetbrains/kotlin/test/util/DescriptorValidator.java +++ b/compiler/tests/org/jetbrains/kotlin/test/util/DescriptorValidator.java @@ -410,7 +410,7 @@ public class DescriptorValidator { public Void visitVariableDescriptor( VariableDescriptor descriptor, JetScope scope ) { - assertFound(scope, descriptor, scope.getProperties(descriptor.getName())); + assertFound(scope, descriptor, scope.getProperties(descriptor.getName(), Location.NOWHERE)); return null; } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaMemberScope.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaMemberScope.kt index 0628b88ac3f..ba85d53fa69 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaMemberScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaMemberScope.kt @@ -40,6 +40,7 @@ import org.jetbrains.kotlin.resolve.scopes.DescriptorKindExclude.NonExtensions import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.JetScope import org.jetbrains.kotlin.resolve.scopes.JetScopeImpl +import org.jetbrains.kotlin.resolve.scopes.Location import org.jetbrains.kotlin.storage.NotNullLazyValue import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.types.TypeUtils @@ -296,7 +297,7 @@ public abstract class LazyJavaMemberScope( return propertyType } - override fun getProperties(name: Name): Collection = properties(name) + override fun getProperties(name: Name, location: Location): Collection = properties(name) override fun getOwnDeclaredDescriptors() = getDescriptors() 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 37d5a9f613a..cb0a40cbcad 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 @@ -16,18 +16,24 @@ package org.jetbrains.kotlin.load.java.lazy.descriptors -import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.name.* -import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext -import org.jetbrains.kotlin.load.java.structure.JavaPackage -import org.jetbrains.kotlin.load.java.structure.JavaClass -import org.jetbrains.kotlin.load.java.lazy.findClassInJava -import org.jetbrains.kotlin.load.kotlin.PackageClassUtils -import org.jetbrains.kotlin.resolve.scopes.JetScope -import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinaryClass -import org.jetbrains.kotlin.utils.addIfNotNull +import org.jetbrains.kotlin.descriptors.ClassDescriptor +import org.jetbrains.kotlin.descriptors.ClassifierDescriptor +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor import org.jetbrains.kotlin.load.java.descriptors.SamConstructorDescriptorKindExclude +import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext +import org.jetbrains.kotlin.load.java.lazy.findClassInJava +import org.jetbrains.kotlin.load.java.structure.JavaClass +import org.jetbrains.kotlin.load.java.structure.JavaPackage +import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinaryClass +import org.jetbrains.kotlin.load.kotlin.PackageClassUtils +import org.jetbrains.kotlin.name.ClassId +import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter +import org.jetbrains.kotlin.resolve.scopes.JetScope +import org.jetbrains.kotlin.resolve.scopes.Location +import org.jetbrains.kotlin.utils.addIfNotNull public class LazyPackageFragmentScopeForJavaPackage( c: LazyJavaResolverContext, @@ -66,7 +72,7 @@ public class LazyPackageFragmentScopeForJavaPackage( override fun getClassifier(name: Name): ClassifierDescriptor? = classes(name) - override fun getProperties(name: Name) = deserializedPackageScope().getProperties(name) + override fun getProperties(name: Name, location: Location) = deserializedPackageScope().getProperties(name) override fun getFunctions(name: Name) = deserializedPackageScope().getFunctions(name) + super.getFunctions(name) override fun addExtraDescriptors(result: MutableSet, diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/FunctionClassScope.kt b/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/FunctionClassScope.kt index 97468a9311d..b59915b21af 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/FunctionClassScope.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/FunctionClassScope.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.OverridingUtil import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.JetScopeImpl +import org.jetbrains.kotlin.resolve.scopes.Location import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.utils.Printer import org.jetbrains.kotlin.utils.toReadOnlyList @@ -51,7 +52,7 @@ class FunctionClassScope( return allDescriptors().filterIsInstance().filter { it.getName() == name } } - override fun getProperties(name: Name): Collection { + override fun getProperties(name: Name, location: Location): Collection { return allDescriptors().filterIsInstance().filter { it.getName() == name } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/EnumEntrySyntheticClassDescriptor.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/EnumEntrySyntheticClassDescriptor.java index 7fe50931fc8..e02f44595eb 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/EnumEntrySyntheticClassDescriptor.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/EnumEntrySyntheticClassDescriptor.java @@ -25,10 +25,7 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.resolve.DescriptorFactory; import org.jetbrains.kotlin.resolve.OverridingUtil; -import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter; -import org.jetbrains.kotlin.resolve.scopes.JetScope; -import org.jetbrains.kotlin.resolve.scopes.JetScopeImpl; -import org.jetbrains.kotlin.resolve.scopes.StaticScopeForKotlinClass; +import org.jetbrains.kotlin.resolve.scopes.*; import org.jetbrains.kotlin.storage.MemoizedFunctionToNotNull; import org.jetbrains.kotlin.storage.NotNullLazyValue; import org.jetbrains.kotlin.storage.StorageManager; @@ -195,14 +192,14 @@ public class EnumEntrySyntheticClassDescriptor extends ClassDescriptorBase { @NotNull @Override @SuppressWarnings("unchecked") - public Collection getProperties(@NotNull Name name) { + public Collection getProperties(@NotNull Name name, @NotNull Location location) { return (Collection) properties.invoke(name); } @NotNull @SuppressWarnings("unchecked") private Collection computeProperties(@NotNull Name name) { - return resolveFakeOverrides(name, (Collection) getSupertypeScope().getProperties(name)); + return resolveFakeOverrides(name, (Collection) getSupertypeScope().getProperties(name, Location.NOWHERE)); } @NotNull @@ -270,7 +267,7 @@ public class EnumEntrySyntheticClassDescriptor extends ClassDescriptorBase { Collection result = new HashSet(); for (Name name : enumMemberNames.invoke()) { result.addAll(getFunctions(name)); - result.addAll(getProperties(name)); + result.addAll(getProperties(name, Location.NOWHERE)); } return result; } 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 91712ae2867..fae9a5a39d5 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/AbstractScopeAdapter.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/AbstractScopeAdapter.kt @@ -43,7 +43,7 @@ public abstract class AbstractScopeAdapter : JetScope { return workerScope.getClassifier(name) } - override fun getProperties(name: Name): Collection { + override fun getProperties(name: Name, location: Location): Collection { return workerScope.getProperties(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 276e6e68e57..847ad8ad901 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/ChainedScope.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/ChainedScope.kt @@ -56,7 +56,7 @@ public open class ChainedScope( override fun getPackage(name: Name): PackageViewDescriptor? = getFirstMatch { it.getPackage(name) } - override fun getProperties(name: Name): Collection + override fun getProperties(name: Name, location: Location): Collection = getFromAllScopes { it.getProperties(name) } override fun getLocalVariable(name: Name): VariableDescriptor? 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 55dadbd0179..1a946e0cbf3 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/ExplicitImportsScope.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/ExplicitImportsScope.kt @@ -27,7 +27,7 @@ public class ExplicitImportsScope(private val descriptors: Collection() - override fun getProperties(name: Name) = descriptors.filter { it.getName() == name }.filterIsInstance() + override fun getProperties(name: Name, location: Location) = descriptors.filter { it.getName() == name }.filterIsInstance() override fun getFunctions(name: Name) = descriptors.filter { it.getName() == name }.filterIsInstance() 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 9bfe6e2b90f..76fcdaa0de5 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/FilteringScope.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/FilteringScope.kt @@ -35,7 +35,7 @@ public class FilteringScope(private val workerScope: JetScope, private val predi override fun getClassifier(name: Name) = filterDescriptor(workerScope.getClassifier(name)) - override fun getProperties(name: Name) = workerScope.getProperties(name).filter(predicate) + override fun getProperties(name: Name, location: Location) = workerScope.getProperties(name).filter(predicate) override fun getSyntheticExtensionProperties(receiverTypes: Collection, name: Name): Collection = workerScope.getSyntheticExtensionProperties(receiverTypes, name).filter(predicate) 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 3a63e40ddd3..15bb2ab8532 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/JetScope.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/JetScope.kt @@ -29,7 +29,7 @@ public interface JetScope { public fun getPackage(name: Name): PackageViewDescriptor? - public fun getProperties(name: Name): Collection + public fun getProperties(name: Name, location: Location = Location.NOWHERE): Collection public fun getLocalVariable(name: Name): VariableDescriptor? 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 bb5905a005d..42641d702cf 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/JetScopeImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/JetScopeImpl.kt @@ -24,7 +24,7 @@ import org.jetbrains.kotlin.utils.Printer public abstract class JetScopeImpl : JetScope { override fun getClassifier(name: Name): ClassifierDescriptor? = null - override fun getProperties(name: Name): Collection = setOf() + override fun getProperties(name: Name, location: Location): Collection = setOf() override fun getLocalVariable(name: Name): VariableDescriptor? = null 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 91a2a362ea4..212cc34709c 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/SubstitutingScope.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/SubstitutingScope.kt @@ -61,7 +61,7 @@ public class SubstitutingScope(private val workerScope: JetScope, private val su return result } - override fun getProperties(name: Name) = substitute(workerScope.getProperties(name)) + override fun getProperties(name: Name, location: Location) = substitute(workerScope.getProperties(name)) override fun getLocalVariable(name: Name) = substitute(workerScope.getLocalVariable(name)) diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java index 86fc5e0d1f2..2dd7ec8f1fa 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.descriptors.impl.*; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter; import org.jetbrains.kotlin.resolve.scopes.JetScope; +import org.jetbrains.kotlin.resolve.scopes.Location; import org.jetbrains.kotlin.storage.LockBasedStorageManager; import org.jetbrains.kotlin.types.error.ErrorSimpleFunctionDescriptorImpl; import org.jetbrains.kotlin.utils.Printer; @@ -87,7 +88,7 @@ public class ErrorUtils { @NotNull @Override - public Set getProperties(@NotNull Name name) { + public Set getProperties(@NotNull Name name, @NotNull Location location) { return ERROR_VARIABLE_GROUP; } @@ -191,7 +192,7 @@ public class ErrorUtils { @NotNull @Override - public Collection getProperties(@NotNull Name name) { + public Collection getProperties(@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 e97a42ec83d..8464ff9f1d0 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 @@ -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.resolve.scopes.Location import org.jetbrains.kotlin.serialization.Flags import org.jetbrains.kotlin.serialization.ProtoBuf import org.jetbrains.kotlin.serialization.ProtoBuf.Callable.CallableKind import org.jetbrains.kotlin.serialization.deserialization.DeserializationContext -import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.utils.Printer import org.jetbrains.kotlin.utils.toReadOnlyList import java.util.ArrayList @@ -104,7 +104,7 @@ public abstract class DeserializedMemberScope protected constructor( protected open fun computeNonDeclaredProperties(name: Name, descriptors: MutableCollection) { } - override fun getProperties(name: Name): Collection = properties.invoke(name) + override fun getProperties(name: Name, location: Location): Collection = properties.invoke(name) override fun getClassifier(name: Name) = getClassDescriptor(name) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.java index 10f25d684b1..72fc37ec887 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.java @@ -60,6 +60,7 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil; import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer; import org.jetbrains.kotlin.resolve.scopes.JetScope; +import org.jetbrains.kotlin.resolve.scopes.Location; import java.io.IOException; import java.util.*; @@ -147,7 +148,7 @@ public class IDELightClassGenerationSupport extends LightClassGenerationSupport else if (declaration instanceof JetProperty) { JetProperty jetProperty = (JetProperty) declaration; Name name = jetProperty.getNameAsSafeName(); - Collection properties = packageDescriptor.getMemberScope().getProperties(name); + Collection properties = packageDescriptor.getMemberScope().getProperties(name, Location.NOWHERE); for (VariableDescriptor descriptor : properties) { ForceResolveUtil.forceResolveAllContents(descriptor); } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java index f16e7f26062..39bd1ec977e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java @@ -74,6 +74,7 @@ import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo; import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind; import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.resolve.scopes.JetScope; +import org.jetbrains.kotlin.resolve.scopes.Location; import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue; import org.jetbrains.kotlin.resolve.scopes.receivers.ThisReceiver; import org.jetbrains.kotlin.types.JetType; @@ -579,7 +580,7 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro Name newName = Name.identifier(info.getNewName()); Collection conflicts = oldDescriptor instanceof FunctionDescriptor ? callableScope.getFunctions(newName) - : callableScope.getProperties(newName); + : callableScope.getProperties(newName, Location.NOWHERE); for (CallableDescriptor conflict : conflicts) { if (conflict == oldDescriptor) continue; @@ -602,7 +603,7 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro } if (parametersScope != null) { if (kind == JetMethodDescriptor.Kind.PRIMARY_CONSTRUCTOR && valOrVar != JetValVar.None) { - for (VariableDescriptor property : parametersScope.getProperties(Name.identifier(parameterName))) { + for (VariableDescriptor property : parametersScope.getProperties(Name.identifier(parameterName), Location.NOWHERE)) { PsiElement propertyDeclaration = DescriptorToSourceUtils.descriptorToDeclaration(property); if (propertyDeclaration != null && !(propertyDeclaration.getParent() instanceof JetParameterList)) {