diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/smartcasts/SmartCastUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/smartcasts/SmartCastUtils.java index cd90343982d..1077f003549 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/smartcasts/SmartCastUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/smartcasts/SmartCastUtils.java @@ -18,6 +18,8 @@ package org.jetbrains.jet.lang.resolve.calls.smartcasts; import com.google.common.collect.Lists; import com.google.common.collect.Sets; +import kotlin.Function1; +import kotlin.KotlinPackage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.psi.JetExpression; @@ -65,6 +67,26 @@ public class SmartCastUtils { return variants; } + @NotNull + public static List getSmartCastVariantsWithLessSpecificExcluded( + @NotNull ReceiverValue receiverToCast, + @NotNull BindingContext bindingContext, + @NotNull DataFlowInfo dataFlowInfo + ) { + final List variants = getSmartCastVariants(receiverToCast, bindingContext, dataFlowInfo); + return KotlinPackage.filter(variants, new Function1() { + @Override + public Boolean invoke(final JetType type) { + return !KotlinPackage.any(variants, new Function1() { + @Override + public Boolean invoke(JetType another) { + return another != type && JetTypeChecker.DEFAULT.isSubtypeOf(another, type); + } + }); + } + }); + } + /** * @return variants @param receiverToCast may be cast to according to @param dataFlowInfo, @param receiverToCast itself is NOT included */ diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.kt b/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.kt index 59907595db6..f9fcba677a4 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.kt +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.kt @@ -80,7 +80,7 @@ public object TipsManager{ val dataFlowInfo = context.getDataFlowInfo(expression) val mask = kindFilter.withoutKinds(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS_MASK).exclude(DescriptorKindExclude.Extensions) - for (variant in SmartCastUtils.getSmartCastVariants(receiverValue, context, dataFlowInfo)) { + for (variant in SmartCastUtils.getSmartCastVariantsWithLessSpecificExcluded(receiverValue, context, dataFlowInfo)) { variant.getMemberScope().getDescriptorsFiltered(mask, nameFilter).filterTo(descriptors, ::filterIfInfix) } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/KotlinLookupElementFactory.kt b/idea/src/org/jetbrains/jet/plugin/completion/KotlinLookupElementFactory.kt index ae39e508b3e..8366860619d 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/KotlinLookupElementFactory.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/KotlinLookupElementFactory.kt @@ -35,19 +35,25 @@ import org.jetbrains.jet.lang.resolve.java.JavaResolverUtils import com.intellij.codeInsight.completion.JavaPsiClassReferenceElement public object KotlinLookupElementFactory { - public fun createLookupElement(analyzer: KotlinCodeAnalyzer, descriptor: DeclarationDescriptor): LookupElement { + public fun createLookupElement(analyzer: KotlinCodeAnalyzer, descriptor: DeclarationDescriptor, boldImmediateMembers: Boolean): LookupElement { val _descriptor = if (descriptor is CallableMemberDescriptor) DescriptorUtils.unwrapFakeOverride(descriptor) else descriptor - return createLookupElement(analyzer, _descriptor, DescriptorToSourceUtils.descriptorToDeclaration(_descriptor)) + val bold = boldImmediateMembers && descriptor is CallableMemberDescriptor && descriptor.getKind() == CallableMemberDescriptor.Kind.DECLARATION + return createLookupElement(analyzer, _descriptor, DescriptorToSourceUtils.descriptorToDeclaration(_descriptor), bold) } public fun createLookupElementForJavaClass(psiClass: PsiClass): LookupElement { return JavaPsiClassReferenceElement(psiClass).setInsertHandler(KotlinClassInsertHandler) } - private fun createLookupElement(analyzer: KotlinCodeAnalyzer, descriptor: DeclarationDescriptor, declaration: PsiElement?): LookupElement { + private fun createLookupElement( + analyzer: KotlinCodeAnalyzer, + descriptor: DeclarationDescriptor, + declaration: PsiElement?, + bold: Boolean + ): LookupElement { if (descriptor is ClassifierDescriptor && declaration is PsiClass && declaration !is KotlinLightClass && @@ -92,6 +98,10 @@ public object KotlinLookupElementFactory { element = element.withStrikeoutness(true) } + if (bold) { + element = element.withBoldness(true) + } + val insertHandler = getDefaultInsertHandler(descriptor) element = element.withInsertHandler(insertHandler) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/LookupElementsCollector.kt b/idea/src/org/jetbrains/jet/plugin/completion/LookupElementsCollector.kt index eecb96d0a15..6061797ce64 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/LookupElementsCollector.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/LookupElementsCollector.kt @@ -59,7 +59,7 @@ class LookupElementsCollector( public fun addDescriptorElements(descriptor: DeclarationDescriptor, suppressAutoInsertion: Boolean) { run { - val lookupElement = KotlinLookupElementFactory.createLookupElement(resolveSession, descriptor) + val lookupElement = KotlinLookupElementFactory.createLookupElement(resolveSession, descriptor, true) if (suppressAutoInsertion) { addElementWithAutoInsertionSuppressed(lookupElement) } @@ -76,7 +76,7 @@ class LookupElementsCollector( if (KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType(parameterType)) { val parameterCount = KotlinBuiltIns.getInstance().getParameterTypeProjectionsFromFunctionType(parameterType).size() if (parameterCount > 1) { - val lookupElement = KotlinLookupElementFactory.createLookupElement(resolveSession, descriptor) + val lookupElement = KotlinLookupElementFactory.createLookupElement(resolveSession, descriptor, true) addElement(object : LookupElementDecorator(lookupElement) { override fun renderElement(presentation: LookupElementPresentation) { super.renderElement(presentation) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/PackageDirectiveCompletion.kt b/idea/src/org/jetbrains/jet/plugin/completion/PackageDirectiveCompletion.kt index a62f60c1041..7eb96405e06 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/PackageDirectiveCompletion.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/PackageDirectiveCompletion.kt @@ -55,7 +55,7 @@ object PackageDirectiveCompletion { val variants = TipsManager.getPackageReferenceVariants(ref.expression, bindingContext, prefixMatcher.asNameFilter()) for (variant in variants) { - val lookupElement = KotlinLookupElementFactory.createLookupElement(resolveSession, variant) + val lookupElement = KotlinLookupElementFactory.createLookupElement(resolveSession, variant, false) if (!lookupElement.getLookupString().contains(DUMMY_IDENTIFIER)) { result.addElement(lookupElement) } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/smart/SmartCompletion.kt b/idea/src/org/jetbrains/jet/plugin/completion/smart/SmartCompletion.kt index c8808fb50ae..c9981a4b33b 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/smart/SmartCompletion.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/smart/SmartCompletion.kt @@ -117,7 +117,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression, else -> ExpectedInfoClassification.NOT_MATCHES } } - result.addLookupElements(expectedInfos, classifier, { createLookupElement(descriptor, resolveSession, bindingContext) }) + result.addLookupElements(expectedInfos, classifier, { createLookupElement(descriptor, resolveSession, bindingContext, true) }) if (receiver == null) { toFunctionReferenceLookupElement(descriptor, functionExpectedInfos)?.let { result.add(it) } @@ -237,7 +237,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression, val matchedExpectedInfos = functionExpectedInfos.filter { functionType.isSubtypeOf(it.type) } if (matchedExpectedInfos.isEmpty()) return null - var lookupElement = createLookupElement(descriptor, resolveSession, bindingContext) + var lookupElement = createLookupElement(descriptor, resolveSession, bindingContext, true) val text = "::" + (if (descriptor is ConstructorDescriptor) descriptor.getContainingDeclaration().getName() else descriptor.getName()) lookupElement = object: LookupElementDecorator(lookupElement) { override fun getLookupString() = text @@ -296,7 +296,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression, if (jetType.isError()) return null val classifier = jetType.getConstructor().getDeclarationDescriptor() ?: return null - val lookupElement = createLookupElement(classifier, resolveSession, bindingContext) + val lookupElement = createLookupElement(classifier, resolveSession, bindingContext, false) val lookupString = lookupElement.getLookupString() val typeArgs = jetType.getArguments() diff --git a/idea/src/org/jetbrains/jet/plugin/completion/smart/StaticMembers.kt b/idea/src/org/jetbrains/jet/plugin/completion/smart/StaticMembers.kt index 25bd370168b..47e8b33c5fc 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/smart/StaticMembers.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/smart/StaticMembers.kt @@ -105,7 +105,7 @@ class StaticMembers(val bindingContext: BindingContext, val resolveSession: Reso } private fun createLookupElement(memberDescriptor: DeclarationDescriptor, classDescriptor: ClassDescriptor): LookupElement { - val lookupElement = createLookupElement(memberDescriptor, resolveSession, bindingContext) + val lookupElement = createLookupElement(memberDescriptor, resolveSession, bindingContext, false) val qualifierPresentation = classDescriptor.getName().asString() val qualifierText = qualifiedNameForSourceCode(classDescriptor) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/smart/TypeInstantiationItems.kt b/idea/src/org/jetbrains/jet/plugin/completion/smart/TypeInstantiationItems.kt index 1ca84dd089c..cfee77a4fc3 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/smart/TypeInstantiationItems.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/smart/TypeInstantiationItems.kt @@ -67,7 +67,7 @@ class TypeInstantiationItems(val resolveSession: ResolveSessionForBodies, val bi } if (allConstructors.isNotEmpty() && visibleConstructors.isEmpty()) return - var lookupElement = createLookupElement(classifier, resolveSession, bindingContext) + var lookupElement = createLookupElement(classifier, resolveSession, bindingContext, false) var lookupString = lookupElement.getLookupString() var allLookupStrings = setOf(lookupString) @@ -164,7 +164,7 @@ class TypeInstantiationItems(val resolveSession: ResolveSessionForBodies, val bi val samConstructor = scope.getFunctions(`class`.getName()) .filterIsInstance(javaClass()) .singleOrNull() ?: return - val lookupElement = createLookupElement(samConstructor, resolveSession, bindingContext) + val lookupElement = createLookupElement(samConstructor, resolveSession, bindingContext, false) .assignSmartCompletionPriority(SmartCompletionItemPriority.INSTANTIATION) .addTail(tail) collection.add(lookupElement) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/smart/Utils.kt b/idea/src/org/jetbrains/jet/plugin/completion/smart/Utils.kt index 914f3e13328..a176991a1c6 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/smart/Utils.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/smart/Utils.kt @@ -186,8 +186,13 @@ fun functionType(function: FunctionDescriptor): JetType? { function.getReturnType() ?: return null) } -fun createLookupElement(descriptor: DeclarationDescriptor, resolveSession: ResolveSessionForBodies, bindingContext: BindingContext): LookupElement { - var element = KotlinLookupElementFactory.createLookupElement(resolveSession, descriptor) +fun createLookupElement( + descriptor: DeclarationDescriptor, + resolveSession: ResolveSessionForBodies, + bindingContext: BindingContext, + boldImmediateMembers: Boolean +): LookupElement { + var element = KotlinLookupElementFactory.createLookupElement(resolveSession, descriptor, boldImmediateMembers) if (descriptor is FunctionDescriptor && descriptor.getValueParameters().isNotEmpty()) { element = element.keepOldArgumentListOnTab() diff --git a/idea/testData/completion/basic/common/ImmediateMembers1.kt b/idea/testData/completion/basic/common/ImmediateMembers1.kt new file mode 100644 index 00000000000..26294df498a --- /dev/null +++ b/idea/testData/completion/basic/common/ImmediateMembers1.kt @@ -0,0 +1,23 @@ +trait T { + fun fromTrait(){} +} + +abstract class Base : T { + fun fromBase(){} +} + +class Derived : Base() { + override fun fromTrait() { } + + fun fromDerived(){} +} + +fun foo(d: Derived) { + d. +} + +// EXIST: { itemText: "fromTrait", attributes: "bold" } +// EXIST: { itemText: "fromDerived", attributes: "bold" } +// EXIST: { itemText: "fromBase", attributes: "" } +// EXIST: { itemText: "hashCode", attributes: "" } +// EXIST: { itemText: "equals", attributes: "" } diff --git a/idea/testData/completion/basic/common/ImmediateMembers2.kt b/idea/testData/completion/basic/common/ImmediateMembers2.kt new file mode 100644 index 00000000000..c09d06275c5 --- /dev/null +++ b/idea/testData/completion/basic/common/ImmediateMembers2.kt @@ -0,0 +1,25 @@ +trait T { + fun fromTrait(){} +} + +abstract class Base : T { + fun fromBase(){} +} + +class Derived : Base() { + override fun fromTrait() { } + + fun fromDerived(){} +} + +fun foo(o: Any) { + if (o is Derived) { + o. + } +} + +// EXIST: { itemText: "fromTrait", attributes: "bold" } +// EXIST: { itemText: "fromDerived", attributes: "bold" } +// EXIST: { itemText: "fromBase", attributes: "" } +// EXIST: { itemText: "hashCode", attributes: "" } +// EXIST: { itemText: "equals", attributes: "" } diff --git a/idea/testData/completion/basic/common/ImmediateMembers3.kt b/idea/testData/completion/basic/common/ImmediateMembers3.kt new file mode 100644 index 00000000000..3520ee9f2f8 --- /dev/null +++ b/idea/testData/completion/basic/common/ImmediateMembers3.kt @@ -0,0 +1,14 @@ +trait T { + fun f(){} +} + +fun foo(o: T) { + if (o is Runnable) { + o. + } +} + +// EXIST: { itemText: "run", attributes: "bold" } +// EXIST: { itemText: "f", attributes: "bold" } +// EXIST: { itemText: "hashCode", attributes: "" } +// EXIST: { itemText: "equals", attributes: "" } diff --git a/idea/testData/completion/basic/common/ImmediateMembers4.kt b/idea/testData/completion/basic/common/ImmediateMembers4.kt new file mode 100644 index 00000000000..4c34d7bdd47 --- /dev/null +++ b/idea/testData/completion/basic/common/ImmediateMembers4.kt @@ -0,0 +1,16 @@ +trait T { + fun foo1(){} + fun foo2(){} +} + +class B(worker: T) : T by worker { + override fun foo1() { } +} + +fun foo(b: B) { + b. +} + +// EXIST: { itemText: "foo1", attributes: "bold" } +// EXIST: { itemText: "foo2", attributes: "" } +// EXIST: { itemText: "equals", attributes: "" } diff --git a/idea/testData/completion/basic/common/ImmediateMembers5.kt b/idea/testData/completion/basic/common/ImmediateMembers5.kt new file mode 100644 index 00000000000..0aac2b3b5fc --- /dev/null +++ b/idea/testData/completion/basic/common/ImmediateMembers5.kt @@ -0,0 +1,24 @@ +trait T { + fun fromTrait(){} +} + +abstract class Base : T { + fun fromBase(){} +} + +class Derived : Base() { + override fun fromTrait() { } + + fun fromDerived(){} + + fun foo(d: Derived) { + + } +} + +// EXIST: { itemText: "foo", attributes: "bold" } +// EXIST: { itemText: "fromTrait", attributes: "bold" } +// EXIST: { itemText: "fromDerived", attributes: "bold" } +// EXIST: { itemText: "fromBase", attributes: "" } +// EXIST: { itemText: "hashCode", attributes: "" } +// EXIST: { itemText: "equals", attributes: "" } diff --git a/idea/testData/completion/smart/ClassObjectMembers.kt b/idea/testData/completion/smart/ClassObjectMembers.kt index 4ff119b5776..4bc4684108c 100644 --- a/idea/testData/completion/smart/ClassObjectMembers.kt +++ b/idea/testData/completion/smart/ClassObjectMembers.kt @@ -14,10 +14,10 @@ fun foo(){ val k : K = } -// EXIST: { lookupString:"foo", itemText:"K.foo", tailText:" (sample)", typeText:"K" } -// EXIST: { lookupString:"bar", itemText:"K.bar", tailText:"() (sample)", typeText:"K" } +// EXIST: { lookupString:"foo", itemText:"K.foo", tailText:" (sample)", typeText:"K", attributes:"" } +// EXIST: { lookupString:"bar", itemText:"K.bar", tailText:"() (sample)", typeText:"K", attributes:"" } // ABSENT: { itemText: "K.x" } // ABSENT: { itemText:"K.kk" } -// EXIST: { lookupString:"kk", itemText:"!! K.kk", tailText:" (sample)", typeText:"K?" } -// EXIST: { lookupString:"kk", itemText:"?: K.kk", tailText:" (sample)", typeText:"K?" } +// EXIST: { lookupString:"kk", itemText:"!! K.kk", tailText:" (sample)", typeText:"K?", attributes:"" } +// EXIST: { lookupString:"kk", itemText:"?: K.kk", tailText:" (sample)", typeText:"K?", attributes:"" } // ABSENT: { itemText: "K.privateVal" } diff --git a/idea/testData/completion/smart/ImmediateMembers.kt b/idea/testData/completion/smart/ImmediateMembers.kt new file mode 100644 index 00000000000..699e22aab21 --- /dev/null +++ b/idea/testData/completion/smart/ImmediateMembers.kt @@ -0,0 +1,22 @@ +trait T { + fun fromTrait() = "" +} + +abstract class Base : T { + fun fromBase() = "" +} + +class Derived : Base() { + override fun fromTrait() = "" + + val fromDerived: String = "" +} + +fun foo(d: Derived): String { + return d. +} + +// EXIST: { itemText: "fromTrait", attributes: "bold" } +// EXIST: { itemText: "fromDerived", attributes: "bold" } +// EXIST: { itemText: "fromBase", attributes: "" } +// EXIST: { itemText: "toString", attributes: "" } diff --git a/idea/testData/completion/smart/JavaStaticFields.kt b/idea/testData/completion/smart/JavaStaticFields.kt index 6103877028d..f5a47953fe2 100644 --- a/idea/testData/completion/smart/JavaStaticFields.kt +++ b/idea/testData/completion/smart/JavaStaticFields.kt @@ -2,5 +2,5 @@ fun foo(){ var l : java.util.Locale = } -// EXIST: { lookupString:"ENGLISH", itemText:"Locale.ENGLISH", tailText:" (java.util)", typeText:"Locale!" } -// EXIST: { lookupString:"FRENCH", itemText:"Locale.FRENCH", tailText:" (java.util)", typeText:"Locale!" } +// EXIST: { lookupString:"ENGLISH", itemText:"Locale.ENGLISH", tailText:" (java.util)", typeText:"Locale!", attributes:"" } +// EXIST: { lookupString:"FRENCH", itemText:"Locale.FRENCH", tailText:" (java.util)", typeText:"Locale!", attributes:"" } diff --git a/idea/testData/completion/smart/JavaStaticMethods.kt b/idea/testData/completion/smart/JavaStaticMethods.kt index 9d87c00bcda..9d31bcbc3dd 100644 --- a/idea/testData/completion/smart/JavaStaticMethods.kt +++ b/idea/testData/completion/smart/JavaStaticMethods.kt @@ -2,6 +2,6 @@ fun foo(){ val l : java.util.Calendar = } -// EXIST: { lookupString:"getInstance", itemText:"Calendar.getInstance", tailText:"() (java.util)", typeText:"Calendar!" } -// EXIST: { lookupString:"getInstance", itemText:"Calendar.getInstance", tailText:"(TimeZone!) (java.util)", typeText:"Calendar!" } -// EXIST: { lookupString:"getInstance", itemText:"Calendar.getInstance", tailText:"(TimeZone!, Locale!) (java.util)", typeText:"Calendar!" } +// EXIST: { lookupString:"getInstance", itemText:"Calendar.getInstance", tailText:"() (java.util)", typeText:"Calendar!", attributes:"" } +// EXIST: { lookupString:"getInstance", itemText:"Calendar.getInstance", tailText:"(TimeZone!) (java.util)", typeText:"Calendar!", attributes:"" } +// EXIST: { lookupString:"getInstance", itemText:"Calendar.getInstance", tailText:"(TimeZone!, Locale!) (java.util)", typeText:"Calendar!", attributes:"" } diff --git a/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java index 3ce0c79770f..5768407a9bc 100644 --- a/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java @@ -304,6 +304,36 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes doTest(fileName); } + @TestMetadata("ImmediateMembers1.kt") + public void testImmediateMembers1() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ImmediateMembers1.kt"); + doTest(fileName); + } + + @TestMetadata("ImmediateMembers2.kt") + public void testImmediateMembers2() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ImmediateMembers2.kt"); + doTest(fileName); + } + + @TestMetadata("ImmediateMembers3.kt") + public void testImmediateMembers3() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ImmediateMembers3.kt"); + doTest(fileName); + } + + @TestMetadata("ImmediateMembers4.kt") + public void testImmediateMembers4() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ImmediateMembers4.kt"); + doTest(fileName); + } + + @TestMetadata("ImmediateMembers5.kt") + public void testImmediateMembers5() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ImmediateMembers5.kt"); + doTest(fileName); + } + @TestMetadata("ImportedEnumMembers.kt") public void testImportedEnumMembers() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ImportedEnumMembers.kt"); diff --git a/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java index 47e3e143f72..5493f18cdef 100644 --- a/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java @@ -304,6 +304,36 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT doTest(fileName); } + @TestMetadata("ImmediateMembers1.kt") + public void testImmediateMembers1() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ImmediateMembers1.kt"); + doTest(fileName); + } + + @TestMetadata("ImmediateMembers2.kt") + public void testImmediateMembers2() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ImmediateMembers2.kt"); + doTest(fileName); + } + + @TestMetadata("ImmediateMembers3.kt") + public void testImmediateMembers3() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ImmediateMembers3.kt"); + doTest(fileName); + } + + @TestMetadata("ImmediateMembers4.kt") + public void testImmediateMembers4() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ImmediateMembers4.kt"); + doTest(fileName); + } + + @TestMetadata("ImmediateMembers5.kt") + public void testImmediateMembers5() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ImmediateMembers5.kt"); + doTest(fileName); + } + @TestMetadata("ImportedEnumMembers.kt") public void testImportedEnumMembers() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ImportedEnumMembers.kt"); diff --git a/idea/tests/org/jetbrains/jet/completion/JvmSmartCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JvmSmartCompletionTestGenerated.java index 4d55dcc6726..ea1e9a4af39 100644 --- a/idea/tests/org/jetbrains/jet/completion/JvmSmartCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JvmSmartCompletionTestGenerated.java @@ -300,6 +300,12 @@ public class JvmSmartCompletionTestGenerated extends AbstractJvmSmartCompletionT doTest(fileName); } + @TestMetadata("ImmediateMembers.kt") + public void testImmediateMembers() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/smart/ImmediateMembers.kt"); + doTest(fileName); + } + @TestMetadata("ImplicitlyTypedFunBody.kt") public void testImplicitlyTypedFunBody() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/smart/ImplicitlyTypedFunBody.kt");