Fix absence of reference for type parameters

This commit is contained in:
Nikolay Krasko
2013-07-29 17:18:26 +04:00
parent b3f0a23c1d
commit 7ec170f6ec
5 changed files with 45 additions and 0 deletions
@@ -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();
@@ -0,0 +1,10 @@
package testing
fun <T> someFun() {
fun innerFun(a: <caret>T) {
}
}
// REF: T
@@ -0,0 +1,7 @@
class A<X> {
fun foo(a: <caret>X) {
}
}
// REF: X
@@ -0,0 +1,9 @@
package test
class A
class Test {
fun some(a: <caret>A) = 12
}
// REF: (test).A
@@ -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");