From 7ec170f6ec13cd6b0f1e01d5c0d06c357f70f4e6 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 29 Jul 2013 17:18:26 +0400 Subject: [PATCH] Fix absence of reference for type parameters --- .../descriptors/LazyTypeParameterDescriptor.java | 4 ++++ .../references/GenericFunctionParameter.kt | 10 ++++++++++ .../references/GenericTypeInFunctionParameter.kt | 7 +++++++ .../resolve/references/InMethodParameter.kt | 9 +++++++++ .../resolve/ReferenceResolveTestGenerated.java | 15 +++++++++++++++ 5 files changed, 45 insertions(+) create mode 100644 idea/testData/resolve/references/GenericFunctionParameter.kt create mode 100644 idea/testData/resolve/references/GenericTypeInFunctionParameter.kt create mode 100644 idea/testData/resolve/references/InMethodParameter.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java index 4313681269c..59ae4e5c007 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java @@ -26,6 +26,7 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorVisitor; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.psi.*; +import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.lazy.LazyDescriptor; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils; @@ -71,6 +72,9 @@ public class LazyTypeParameterDescriptor implements TypeParameterDescriptor, Laz this.containingDeclaration = containingDeclaration; this.index = index; this.name = ResolveSessionUtils.safeNameForLazyResolve(jetTypeParameter.getNameAsName()); + + this.resolveSession.getTrace().record(BindingContext.TYPE_PARAMETER, jetTypeParameter, this); + this.reified = jetTypeParameter.hasModifier(JetTokens.REIFIED_KEYWORD); StorageManager storageManager = resolveSession.getStorageManager(); diff --git a/idea/testData/resolve/references/GenericFunctionParameter.kt b/idea/testData/resolve/references/GenericFunctionParameter.kt new file mode 100644 index 00000000000..7f05c8a4be8 --- /dev/null +++ b/idea/testData/resolve/references/GenericFunctionParameter.kt @@ -0,0 +1,10 @@ +package testing + +fun someFun() { + fun innerFun(a: T) { + + } +} + +// REF: T + diff --git a/idea/testData/resolve/references/GenericTypeInFunctionParameter.kt b/idea/testData/resolve/references/GenericTypeInFunctionParameter.kt new file mode 100644 index 00000000000..7abd1fbf23c --- /dev/null +++ b/idea/testData/resolve/references/GenericTypeInFunctionParameter.kt @@ -0,0 +1,7 @@ +class A { + fun foo(a: X) { + + } +} + +// REF: X \ No newline at end of file diff --git a/idea/testData/resolve/references/InMethodParameter.kt b/idea/testData/resolve/references/InMethodParameter.kt new file mode 100644 index 00000000000..c3a256a4c66 --- /dev/null +++ b/idea/testData/resolve/references/InMethodParameter.kt @@ -0,0 +1,9 @@ +package test + +class A + +class Test { + fun some(a: A) = 12 +} + +// REF: (test).A \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java b/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java index 570e48939f3..cb91d3797e7 100644 --- a/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java @@ -71,6 +71,16 @@ public class ReferenceResolveTestGenerated extends AbstractResolveBaseTest { doTest("idea/testData/resolve/references/CtrlClickResolve.kt"); } + @TestMetadata("GenericFunctionParameter.kt") + public void testGenericFunctionParameter() throws Exception { + doTest("idea/testData/resolve/references/GenericFunctionParameter.kt"); + } + + @TestMetadata("GenericTypeInFunctionParameter.kt") + public void testGenericTypeInFunctionParameter() throws Exception { + doTest("idea/testData/resolve/references/GenericTypeInFunctionParameter.kt"); + } + @TestMetadata("InClassParameter.kt") public void testInClassParameter() throws Exception { doTest("idea/testData/resolve/references/InClassParameter.kt"); @@ -86,6 +96,11 @@ public class ReferenceResolveTestGenerated extends AbstractResolveBaseTest { doTest("idea/testData/resolve/references/InFunctionParameterType.kt"); } + @TestMetadata("InMethodParameter.kt") + public void testInMethodParameter() throws Exception { + doTest("idea/testData/resolve/references/InMethodParameter.kt"); + } + @TestMetadata("InObjectClassObject.kt") public void testInObjectClassObject() throws Exception { doTest("idea/testData/resolve/references/InObjectClassObject.kt");