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:
Valentin Kipyatkov
2015-08-07 21:32:23 +03:00
parent f658cce1f1
commit 8b749ee76d
7 changed files with 61 additions and 0 deletions
@@ -117,6 +117,14 @@ public class TypeResolver(
var result: PossiblyBareType? = null
typeElement?.accept(object : JetVisitorVoid() {
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 referencedName = type.getReferencedName()
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
@@ -901,6 +901,18 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes
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")
public void testTypeParameterFromOuterClass() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/TypeParameterFromOuterClass.kt");
@@ -901,6 +901,18 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT
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")
public void testTypeParameterFromOuterClass() throws Exception {
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);
}
@TestMetadata("TypeArgumentBeforeDot.kt")
public void testTypeArgumentBeforeDot() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/TypeArgumentBeforeDot.kt");
doTest(fileName);
}
@TestMetadata("TypeArgumentUnresolvedClass.kt")
public void testTypeArgumentUnresolvedClass() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/TypeArgumentUnresolvedClass.kt");