diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/importedFromObject.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/importedFromObject.kt index bdb7f6b7f0a..032ade25af7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/importedFromObject.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/importedFromObject.kt @@ -29,7 +29,11 @@ class FunctionImportedFromObject(val functionFromObject: FunctionDescriptor) : override fun substitute(substitutor: TypeSubstitutor) = functionFromObject.substitute(substitutor).wrap() - override fun getOriginal() = functionFromObject.original.wrap() + private val _original by lazy { + functionFromObject.original.wrap() + } + + override fun getOriginal() = _original override fun copy( newOwner: DeclarationDescriptor?, modality: Modality?, visibility: Visibility?, @@ -46,7 +50,11 @@ class PropertyImportedFromObject(val propertyFromObject: PropertyDescriptor) : override fun substitute(substitutor: TypeSubstitutor) = propertyFromObject.substitute(substitutor)?.wrap() - override fun getOriginal() = propertyFromObject.original.wrap() + private val _original by lazy { + propertyFromObject.original.wrap() + } + + override fun getOriginal() = _original override fun copy( newOwner: DeclarationDescriptor?, modality: Modality?, visibility: Visibility?, diff --git a/idea/idea-completion/testData/basic/common/ImportedMemberFromObject.kt b/idea/idea-completion/testData/basic/common/ImportedMemberFromObject.kt new file mode 100644 index 00000000000..405a79a5f7a --- /dev/null +++ b/idea/idea-completion/testData/basic/common/ImportedMemberFromObject.kt @@ -0,0 +1,15 @@ +package a + +import a.O.uniqueName + +object O { + fun uniqueName() { + } +} + +fun main() { + uniqueN +} + +// EXIST: uniqueName +// NUMBER: 1 \ No newline at end of file diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java index 8b75ad0c203..01b782d95ee 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java @@ -223,6 +223,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes doTest(fileName); } + @TestMetadata("ImportedMemberFromObject.kt") + public void testImportedMemberFromObject() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/ImportedMemberFromObject.kt"); + doTest(fileName); + } + @TestMetadata("InCallExpression.kt") public void testInCallExpression() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/InCallExpression.kt"); diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java index a7587fb8ec2..e018bbcf8f7 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java @@ -223,6 +223,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT doTest(fileName); } + @TestMetadata("ImportedMemberFromObject.kt") + public void testImportedMemberFromObject() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/ImportedMemberFromObject.kt"); + doTest(fileName); + } + @TestMetadata("InCallExpression.kt") public void testInCallExpression() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/InCallExpression.kt");