KT-6891 Type argument of generic type before dot is not resolved
KT-7373 Type parameter names are not suggested KT-6838 Class declared in same file is not suggested in completion #KT-6891 Fixed #KT-7373 Fixed #KT-6838 Fixed
This commit is contained in:
@@ -117,6 +117,14 @@ public class TypeResolver(
|
|||||||
var result: PossiblyBareType? = null
|
var result: PossiblyBareType? = null
|
||||||
typeElement?.accept(object : JetVisitorVoid() {
|
typeElement?.accept(object : JetVisitorVoid() {
|
||||||
override fun visitUserType(type: JetUserType) {
|
override fun visitUserType(type: JetUserType) {
|
||||||
|
if (type.qualifier != null) { // we must resolve all type references in arguments of qualifier type
|
||||||
|
for (typeArgument in type.qualifier!!.typeArguments) {
|
||||||
|
typeArgument.typeReference?.let {
|
||||||
|
ForceResolveUtil.forceResolveAllContents(resolveType(c, it))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val referenceExpression = type.getReferenceExpression()
|
val referenceExpression = type.getReferenceExpression()
|
||||||
val referencedName = type.getReferencedName()
|
val referencedName = type.getReferencedName()
|
||||||
if (referenceExpression == null || referencedName == null) return
|
if (referenceExpression == null || referencedName == null) return
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class C {
|
||||||
|
val prop: List<F<caret>>
|
||||||
|
}
|
||||||
|
|
||||||
|
class Foo
|
||||||
|
|
||||||
|
// EXIST: Foo
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
class C<TParam> {
|
||||||
|
val v: List<T<caret>
|
||||||
|
}
|
||||||
|
|
||||||
|
// EXIST: TParam
|
||||||
+12
@@ -901,6 +901,18 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("TypeArgFromTheSameFile.kt")
|
||||||
|
public void testTypeArgFromTheSameFile() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/TypeArgFromTheSameFile.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("TypeArgOfOwnerClass.kt")
|
||||||
|
public void testTypeArgOfOwnerClass() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/TypeArgOfOwnerClass.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("TypeParameterFromOuterClass.kt")
|
@TestMetadata("TypeParameterFromOuterClass.kt")
|
||||||
public void testTypeParameterFromOuterClass() throws Exception {
|
public void testTypeParameterFromOuterClass() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/TypeParameterFromOuterClass.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/TypeParameterFromOuterClass.kt");
|
||||||
|
|||||||
+12
@@ -901,6 +901,18 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("TypeArgFromTheSameFile.kt")
|
||||||
|
public void testTypeArgFromTheSameFile() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/TypeArgFromTheSameFile.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("TypeArgOfOwnerClass.kt")
|
||||||
|
public void testTypeArgOfOwnerClass() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/TypeArgOfOwnerClass.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("TypeParameterFromOuterClass.kt")
|
@TestMetadata("TypeParameterFromOuterClass.kt")
|
||||||
public void testTypeParameterFromOuterClass() throws Exception {
|
public void testTypeParameterFromOuterClass() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/TypeParameterFromOuterClass.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/TypeParameterFromOuterClass.kt");
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
class Generic<T> {
|
||||||
|
class Nested
|
||||||
|
}
|
||||||
|
|
||||||
|
class C {
|
||||||
|
val prop: Generic<<caret>Foo>.Nested? = null
|
||||||
|
}
|
||||||
|
|
||||||
|
class Foo
|
||||||
|
|
||||||
|
// REF: (<root>).Foo
|
||||||
@@ -353,6 +353,12 @@ public class ReferenceResolveTestGenerated extends AbstractReferenceResolveTest
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("TypeArgumentBeforeDot.kt")
|
||||||
|
public void testTypeArgumentBeforeDot() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/TypeArgumentBeforeDot.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("TypeArgumentUnresolvedClass.kt")
|
@TestMetadata("TypeArgumentUnresolvedClass.kt")
|
||||||
public void testTypeArgumentUnresolvedClass() throws Exception {
|
public void testTypeArgumentUnresolvedClass() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/TypeArgumentUnresolvedClass.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/TypeArgumentUnresolvedClass.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user