diff --git a/idea/ide-common/src/org/jetbrains/kotlin/idea/util/CallType.kt b/idea/ide-common/src/org/jetbrains/kotlin/idea/util/CallType.kt index 043cdf8bc47..8375d37d1dd 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/idea/util/CallType.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/idea/util/CallType.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. + * Copyright 2010-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,7 +25,6 @@ import org.jetbrains.kotlin.psi.psiUtil.getReceiverExpression import org.jetbrains.kotlin.psi.psiUtil.isImportDirectiveExpression import org.jetbrains.kotlin.psi.psiUtil.isPackageDirectiveExpression import org.jetbrains.kotlin.resolve.BindingContext -import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfoAfter import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfoBefore import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory @@ -89,8 +88,8 @@ sealed class CallType(val descriptorKindFilter: Descript } private object CallableReferenceExclude : DescriptorKindExclude() { - override fun excludes(descriptor: DeclarationDescriptor) /* currently not supported for locals, synthetic and genetic */ - = descriptor !is CallableMemberDescriptor || descriptor.kind == CallableMemberDescriptor.Kind.SYNTHESIZED || descriptor.typeParameters.isNotEmpty() + override fun excludes(descriptor: DeclarationDescriptor) /* currently not supported for locals and synthetic */ + = descriptor !is CallableMemberDescriptor || descriptor.kind == CallableMemberDescriptor.Kind.SYNTHESIZED override val fullyExcludedDescriptorKinds: Int get() = 0 diff --git a/idea/idea-completion/testData/basic/common/callableReference/EmptyQualifier.kt b/idea/idea-completion/testData/basic/common/callableReference/EmptyQualifier.kt index fee6e7ee827..a5ac111da7f 100644 --- a/idea/idea-completion/testData/basic/common/callableReference/EmptyQualifier.kt +++ b/idea/idea-completion/testData/basic/common/callableReference/EmptyQualifier.kt @@ -9,7 +9,6 @@ var globalVar = 1 fun funWithFunctionParameter(p: () -> Unit) {} -// callable references to generic functions are not supported currently fun genericFun(t: T): T = t class C { @@ -54,7 +53,7 @@ abstract class AbstractClass // ABSENT: class // ABSENT: class.java // EXIST: { itemText: "funWithFunctionParameter", tailText: "(p: () -> Unit) ()", attributes: "" } -// ABSENT: genericFun +// EXIST: { itemText: "genericFun", tailText: "(t: T) ()", attributes: "" } // ABSENT: "kotlin" // ABSENT: "java" diff --git a/idea/idea-completion/testData/basic/common/callableReference/GenericConstructor.kt b/idea/idea-completion/testData/basic/common/callableReference/GenericConstructor.kt new file mode 100644 index 00000000000..981a07b189c --- /dev/null +++ b/idea/idea-completion/testData/basic/common/callableReference/GenericConstructor.kt @@ -0,0 +1,8 @@ +class Wrapper(val value: T) + +fun test() { + listOf().map(::Wrap) +} + +// EXIST: { lookupString: "Wrapper", itemText: "Wrapper", tailText: "(value: T)", attributes: "" } +// NOTHING_ELSE \ 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 a6adaabdb07..617b0a9d0fd 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 @@ -1261,6 +1261,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes doTest(fileName); } + @TestMetadata("GenericConstructor.kt") + public void testGenericConstructor() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/callableReference/GenericConstructor.kt"); + doTest(fileName); + } + @TestMetadata("HigherOrderFunction.kt") public void testHigherOrderFunction() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/callableReference/HigherOrderFunction.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 e81342ca190..81d618adc85 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 @@ -1261,6 +1261,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT doTest(fileName); } + @TestMetadata("GenericConstructor.kt") + public void testGenericConstructor() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/callableReference/GenericConstructor.kt"); + doTest(fileName); + } + @TestMetadata("HigherOrderFunction.kt") public void testHigherOrderFunction() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/callableReference/HigherOrderFunction.kt");