diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java index 69b975138b6..3a97aba8f92 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java @@ -262,16 +262,9 @@ public abstract class AbstractLazyMemberScope getImplicitReceiversHierarchy() { - ReceiverParameterDescriptor receiver = getImplicitReceiver(); - if (receiver != null) { - return Collections.singletonList(receiver); - } return Collections.emptyList(); } - @Nullable - protected abstract ReceiverParameterDescriptor getImplicitReceiver(); - // Do not change this, override in concrete subclasses: // it is very easy to compromise laziness of this class, and fail all the debugging // a generic implementation can't do this properly diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java index 82abd68fe41..b659da76f6f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java @@ -243,6 +243,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes private JetScope computeScopeForMemberDeclarationResolution() { WritableScopeImpl thisScope = new WritableScopeImpl(JetScope.EMPTY, this, RedeclarationHandler.DO_NOTHING, "Scope with 'this' for " + getName()); thisScope.addLabeledDeclaration(this); + thisScope.setImplicitReceiver(this.getThisAsReceiverParameter()); thisScope.changeLockLevel(WritableScope.LockLevel.READING); ClassDescriptor classObject = getClassObjectDescriptor(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassMemberScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassMemberScope.java index 10650fff537..705b328b1b0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassMemberScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassMemberScope.java @@ -326,12 +326,6 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope getConstructors() { ConstructorDescriptor constructor = getPrimaryConstructor(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageMemberScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageMemberScope.java index 73eeed89a94..d75e21afc5d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageMemberScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageMemberScope.java @@ -49,11 +49,6 @@ public class LazyPackageMemberScope extends AbstractLazyMemberScope result) { // No extra functions diff --git a/idea/testData/checker/regression/extensionMemberInClassObject.kt b/idea/testData/checker/regression/extensionMemberInClassObject.kt new file mode 100644 index 00000000000..11e4f96c9e2 --- /dev/null +++ b/idea/testData/checker/regression/extensionMemberInClassObject.kt @@ -0,0 +1,11 @@ +trait Bar { + fun T.bar() {} +} + +class A { + class object : Bar +} + +fun test() { + A.bar() +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/checkers/JetPsiCheckerTestGenerated.java b/idea/tests/org/jetbrains/jet/checkers/JetPsiCheckerTestGenerated.java index 69e6e1c339e..60e86eeca96 100644 --- a/idea/tests/org/jetbrains/jet/checkers/JetPsiCheckerTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/checkers/JetPsiCheckerTestGenerated.java @@ -318,6 +318,11 @@ public class JetPsiCheckerTestGenerated extends AbstractJetPsiCheckerTest { doTest("idea/testData/checker/regression/DoubleDefine.kt"); } + @TestMetadata("extensionMemberInClassObject.kt") + public void testExtensionMemberInClassObject() throws Exception { + doTest("idea/testData/checker/regression/extensionMemberInClassObject.kt"); + } + @TestMetadata("Jet11.kt") public void testJet11() throws Exception { doTest("idea/testData/checker/regression/Jet11.kt");