From b88981f6782713a7c117e5b15bb0c254990cdaad Mon Sep 17 00:00:00 2001 From: "Natalia.Ukhorskaya" Date: Tue, 30 Apr 2013 21:14:40 +0400 Subject: [PATCH] Workaround for appearance of PsiClass from runtime in JavaDescriptorResolver --- compiler/frontend/src/jet/Library.jet | 9 +++++++-- compiler/testData/builtin-classes.txt | 7 ++++--- .../completion/basic/java/PropertyMetadata.kt | 11 +++++++++++ .../JetBasicJavaCompletionTestGenerated.java | 5 +++++ 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 idea/testData/completion/basic/java/PropertyMetadata.kt diff --git a/compiler/frontend/src/jet/Library.jet b/compiler/frontend/src/jet/Library.jet index dccfb3fd3b0..d78d036b747 100644 --- a/compiler/frontend/src/jet/Library.jet +++ b/compiler/frontend/src/jet/Library.jet @@ -65,13 +65,18 @@ public open class Throwable(message : String? = null, cause: Throwable? = null) public fun printStackTrace() : Unit } +/* + * Should have an abstract property 'name', overridden in PropertyMetadataImpl + */ public trait PropertyMetadata { - public val name: String + public fun getName(): String } /* * In front-end we need to resolve call PropertyMetadataImpl() in getter of delegated property * to be able generate it in back-end using ExpressionCodegen.invokeFunction */ -public class PropertyMetadataImpl(public override val name: String): PropertyMetadata +public class PropertyMetadataImpl(private val innerName: String): PropertyMetadata { + public override fun getName(): String = innerName +} diff --git a/compiler/testData/builtin-classes.txt b/compiler/testData/builtin-classes.txt index 49213867dbf..b9b026549f0 100644 --- a/compiler/testData/builtin-classes.txt +++ b/compiler/testData/builtin-classes.txt @@ -1357,12 +1357,13 @@ public trait Progression : jet.Iterable { } public trait PropertyMetadata { - public abstract val name: jet.String + public abstract fun getName(): jet.String } public final class PropertyMetadataImpl : jet.PropertyMetadata { - public constructor PropertyMetadataImpl(/*0*/ name: jet.String) - public open override /*1*/ val name: jet.String + public constructor PropertyMetadataImpl(/*0*/ innerName: jet.String) + private final val innerName: jet.String + public open override /*1*/ fun getName(): jet.String } public trait Range> { diff --git a/idea/testData/completion/basic/java/PropertyMetadata.kt b/idea/testData/completion/basic/java/PropertyMetadata.kt new file mode 100644 index 00000000000..69645b3b865 --- /dev/null +++ b/idea/testData/completion/basic/java/PropertyMetadata.kt @@ -0,0 +1,11 @@ +/* Number of result in completion should be fixed after removing duplicates */ +package first + +fun firstFun() { + val a = PropertyM +} + +// TIME: 1 +// EXIST: PropertyMetadata@PropertyMetadata~(jet) +// EXIST: PropertyMetadataImpl@PropertyMetadataImpl~(jet) +// NUMBER: 5 diff --git a/idea/tests/org/jetbrains/jet/completion/JetBasicJavaCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JetBasicJavaCompletionTestGenerated.java index 912c4c5bff4..dd6a7d5a412 100644 --- a/idea/tests/org/jetbrains/jet/completion/JetBasicJavaCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JetBasicJavaCompletionTestGenerated.java @@ -441,6 +441,11 @@ public class JetBasicJavaCompletionTestGenerated extends AbstractJavaCompletionT doTest("idea/testData/completion/basic/java/NoImportedJavaClassDuplication.kt"); } + @TestMetadata("PropertyMetadata.kt") + public void testPropertyMetadata() throws Exception { + doTest("idea/testData/completion/basic/java/PropertyMetadata.kt"); + } + @TestMetadata("TopLevelFromStandardLibrary.kt") public void testTopLevelFromStandardLibrary() throws Exception { doTest("idea/testData/completion/basic/java/TopLevelFromStandardLibrary.kt");