Fix absence of reference for type parameters
This commit is contained in:
+4
@@ -26,6 +26,7 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorVisitor;
|
|||||||
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
|
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
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.LazyDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils;
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils;
|
||||||
@@ -71,6 +72,9 @@ public class LazyTypeParameterDescriptor implements TypeParameterDescriptor, Laz
|
|||||||
this.containingDeclaration = containingDeclaration;
|
this.containingDeclaration = containingDeclaration;
|
||||||
this.index = index;
|
this.index = index;
|
||||||
this.name = ResolveSessionUtils.safeNameForLazyResolve(jetTypeParameter.getNameAsName());
|
this.name = ResolveSessionUtils.safeNameForLazyResolve(jetTypeParameter.getNameAsName());
|
||||||
|
|
||||||
|
this.resolveSession.getTrace().record(BindingContext.TYPE_PARAMETER, jetTypeParameter, this);
|
||||||
|
|
||||||
this.reified = jetTypeParameter.hasModifier(JetTokens.REIFIED_KEYWORD);
|
this.reified = jetTypeParameter.hasModifier(JetTokens.REIFIED_KEYWORD);
|
||||||
|
|
||||||
StorageManager storageManager = resolveSession.getStorageManager();
|
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");
|
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")
|
@TestMetadata("InClassParameter.kt")
|
||||||
public void testInClassParameter() throws Exception {
|
public void testInClassParameter() throws Exception {
|
||||||
doTest("idea/testData/resolve/references/InClassParameter.kt");
|
doTest("idea/testData/resolve/references/InClassParameter.kt");
|
||||||
@@ -86,6 +96,11 @@ public class ReferenceResolveTestGenerated extends AbstractResolveBaseTest {
|
|||||||
doTest("idea/testData/resolve/references/InFunctionParameterType.kt");
|
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")
|
@TestMetadata("InObjectClassObject.kt")
|
||||||
public void testInObjectClassObject() throws Exception {
|
public void testInObjectClassObject() throws Exception {
|
||||||
doTest("idea/testData/resolve/references/InObjectClassObject.kt");
|
doTest("idea/testData/resolve/references/InObjectClassObject.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user