[FE 1.0] Don't fail with exception on unresolved type with type argument

^KT-50223 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2022-06-08 18:07:20 +02:00
committed by teamcity
parent 87dc1f7fde
commit 372879b8e7
8 changed files with 51 additions and 2 deletions
@@ -13356,6 +13356,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
runTest("compiler/testData/diagnostics/tests/incompleteCode/unresolvedOperation.kt");
}
@Test
@TestMetadata("unresolvedTypeWithTypeArguments.kt")
public void testUnresolvedTypeWithTypeArguments() throws Exception {
runTest("compiler/testData/diagnostics/tests/incompleteCode/unresolvedTypeWithTypeArguments.kt");
}
@Test
@TestMetadata("variableDeclarationInSelector.kt")
public void testVariableDeclarationInSelector() throws Exception {
@@ -13356,6 +13356,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
runTest("compiler/testData/diagnostics/tests/incompleteCode/unresolvedOperation.kt");
}
@Test
@TestMetadata("unresolvedTypeWithTypeArguments.kt")
public void testUnresolvedTypeWithTypeArguments() throws Exception {
runTest("compiler/testData/diagnostics/tests/incompleteCode/unresolvedTypeWithTypeArguments.kt");
}
@Test
@TestMetadata("variableDeclarationInSelector.kt")
public void testVariableDeclarationInSelector() throws Exception {
@@ -13356,6 +13356,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
runTest("compiler/testData/diagnostics/tests/incompleteCode/unresolvedOperation.kt");
}
@Test
@TestMetadata("unresolvedTypeWithTypeArguments.kt")
public void testUnresolvedTypeWithTypeArguments() throws Exception {
runTest("compiler/testData/diagnostics/tests/incompleteCode/unresolvedTypeWithTypeArguments.kt");
}
@Test
@TestMetadata("variableDeclarationInSelector.kt")
public void testVariableDeclarationInSelector() throws Exception {
@@ -136,10 +136,11 @@ class CompletionModeCalculator {
fixationDirectionsCollector: MutableSet<FixationDirectionForVariable>
) {
val typeArgumentsCount = type.argumentsCount()
if (typeArgumentsCount > 0) {
val typeConstructor = type.typeConstructor()
if (typeArgumentsCount > 0 && typeArgumentsCount == typeConstructor.parametersCount()) {
for (position in 0 until typeArgumentsCount) {
val argument = type.getArgument(position)
val parameter = type.typeConstructor().getParameter(position)
val parameter = typeConstructor.getParameter(position)
if (argument.isStarProjection())
continue
@@ -0,0 +1,7 @@
abstract class MyClass {
abstract fun <P1> foo(): (P1) -> <!UNRESOLVED_REFERENCE!>Unknown<String><!>
private fun callTryConvertConstant() {
<!UNRESOLVED_REFERENCE!>println<!>(foo<String>())
}
}
@@ -0,0 +1,7 @@
abstract class MyClass {
abstract fun <P1> foo(): (P1) -> <!UNRESOLVED_REFERENCE!>Unknown<!><String>
private fun callTryConvertConstant() {
<!UNRESOLVED_REFERENCE!>println<!>(foo<String>())
}
}
@@ -0,0 +1,10 @@
package
public abstract class MyClass {
public constructor MyClass()
private final fun callTryConvertConstant(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract fun </*0*/ P1> foo(): (P1) -> [Error type: Unresolved type for Unknown<String>]<kotlin.String>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -13362,6 +13362,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
runTest("compiler/testData/diagnostics/tests/incompleteCode/unresolvedOperation.kt");
}
@Test
@TestMetadata("unresolvedTypeWithTypeArguments.kt")
public void testUnresolvedTypeWithTypeArguments() throws Exception {
runTest("compiler/testData/diagnostics/tests/incompleteCode/unresolvedTypeWithTypeArguments.kt");
}
@Test
@TestMetadata("variableDeclarationInSelector.kt")
public void testVariableDeclarationInSelector() throws Exception {