Add test for using underscored type in different positions
This commit is contained in:
+6
@@ -13485,6 +13485,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
|
||||
runTest("compiler/testData/diagnostics/tests/inference/underscoredTypeArgument.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("underscoredTypeInForbiddenPositions.kt")
|
||||
public void testUnderscoredTypeInForbiddenPositions() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/inference/underscoredTypeInForbiddenPositions.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("useFunctionLiteralsToInferType.kt")
|
||||
public void testUseFunctionLiteralsToInferType() throws Exception {
|
||||
|
||||
+6
@@ -13485,6 +13485,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
|
||||
runTest("compiler/testData/diagnostics/tests/inference/underscoredTypeArgument.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("underscoredTypeInForbiddenPositions.kt")
|
||||
public void testUnderscoredTypeInForbiddenPositions() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/inference/underscoredTypeInForbiddenPositions.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("useFunctionLiteralsToInferType.kt")
|
||||
public void testUseFunctionLiteralsToInferType() throws Exception {
|
||||
|
||||
+6
@@ -13485,6 +13485,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
|
||||
runTest("compiler/testData/diagnostics/tests/inference/underscoredTypeArgument.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("underscoredTypeInForbiddenPositions.kt")
|
||||
public void testUnderscoredTypeInForbiddenPositions() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/inference/underscoredTypeInForbiddenPositions.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("useFunctionLiteralsToInferType.kt")
|
||||
public void testUseFunctionLiteralsToInferType() throws Exception {
|
||||
|
||||
-2
@@ -23,9 +23,7 @@ fun box(): String {
|
||||
val z2: Pair<Int, Float> = foo<<!UNSUPPORTED!>@Anno3("")<!> /**/ _, @[/**/ <!UNSUPPORTED!>Anno<!> /**/ <!UNSUPPORTED!>Anno3("")<!> /**/] _,> { it.toFloat() }
|
||||
|
||||
val z31: Pair<<!UNRESOLVED_REFERENCE!>@Anno3("") _<!>, Float> = 1 to 1f
|
||||
val z32: Pair<<!UNRESOLVED_REFERENCE!>_<!>, Float> = 1 to 1f
|
||||
val z33: Pair<<!UNRESOLVED_REFERENCE!>@Anno3("") (_)<!>, Float> = 1 to 1f
|
||||
val z34: Pair<<!UNRESOLVED_REFERENCE!>((_))<!>, Float> = 1 to 1f
|
||||
val z35: Pair<<!UNRESOLVED_REFERENCE!>(@Anno3("") (_))<!>, Float> = 1 to 1f
|
||||
|
||||
return "OK"
|
||||
|
||||
-2
@@ -23,9 +23,7 @@ fun box(): String {
|
||||
val z2: Pair<Int, Float> = foo<<!UNSUPPORTED!>@Anno3("")<!> /**/ _, @[/**/ <!UNSUPPORTED!>Anno<!> /**/ <!UNSUPPORTED!>Anno3("")<!> /**/] _,> { it.toFloat() }
|
||||
|
||||
val z31: Pair<@Anno3("") <!UNRESOLVED_REFERENCE!>_<!>, Float> = 1 to 1f
|
||||
val z32: Pair<<!UNRESOLVED_REFERENCE!>_<!>, Float> = 1 to 1f
|
||||
val z33: Pair<@Anno3("") (<!UNRESOLVED_REFERENCE!>_<!>), Float> = 1 to 1f
|
||||
val z34: Pair<((<!UNRESOLVED_REFERENCE!>_<!>)), Float> = 1 to 1f
|
||||
val z35: Pair<(@Anno3("") (<!UNRESOLVED_REFERENCE!>_<!>)), Float> = 1 to 1f
|
||||
|
||||
return "OK"
|
||||
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
// !LANGUAGE: +PartiallySpecifiedTypeArguments
|
||||
// !DIAGNOSTICS: -UNCHECKED_CAST
|
||||
// WITH_RUNTIME
|
||||
|
||||
fun <K, T> foo(x: (K) -> T): Pair<K, T> = (1 as K) to (1f as T)
|
||||
|
||||
class Foo<K>
|
||||
|
||||
class Bar0<K : <!UNRESOLVED_REFERENCE!>_<<!UNRESOLVED_REFERENCE!>_<!>><!>>
|
||||
class Bar1<K : Foo<<!UNRESOLVED_REFERENCE!>_<!>>>
|
||||
class Bar2<K : <!UNRESOLVED_REFERENCE!>_<!>>
|
||||
class Bar3<K> where K : <!UNRESOLVED_REFERENCE!>_<!>
|
||||
class Bar4<<!UNDERSCORE_IS_RESERVED!>_<!>>
|
||||
|
||||
typealias A1<<!UNDERSCORE_IS_RESERVED!>_<!>> = <!TYPEALIAS_SHOULD_EXPAND_TO_CLASS!>_<!>
|
||||
typealias A2<T> = Foo<<!UNRESOLVED_REFERENCE!>_<!>>
|
||||
typealias A3<T> = (<!UNRESOLVED_REFERENCE!>_<!>) -> T
|
||||
typealias A4<T> = (T) -> () -> <!UNRESOLVED_REFERENCE!>_<!>
|
||||
typealias A5<T> = (T) -> (<!UNRESOLVED_REFERENCE!>((_))<!>) -> T
|
||||
|
||||
fun foo1(x: <!UNDERSCORE_USAGE_WITHOUT_BACKTICKS, UNRESOLVED_REFERENCE!>_<!>) {}
|
||||
fun foo2(x: Foo<<!UNDERSCORE_USAGE_WITHOUT_BACKTICKS, UNRESOLVED_REFERENCE!>_<!>>) {}
|
||||
fun foo3(): <!UNRESOLVED_REFERENCE!>_<!> {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
fun foo5(): Foo<<!UNRESOLVED_REFERENCE!>_<!>> {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
fun <K, <!UNDERSCORE_IS_RESERVED!>_<!>> foo6(): Foo<_> {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
fun <K : _, <!UNDERSCORE_IS_RESERVED!>_<!>> foo7(): Foo<_> {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
|
||||
class AA1 : <!UNRESOLVED_REFERENCE!>_<!>
|
||||
class AA2 : <!FINAL_SUPERTYPE, SUPERTYPE_NOT_INITIALIZED!>Foo<<!UNRESOLVED_REFERENCE, UNRESOLVED_REFERENCE!>_<!>><!>
|
||||
|
||||
fun <`_`> bar(): Foo<_> = TODO()
|
||||
|
||||
fun test() {
|
||||
val x1 = foo<Int, (<!UNRESOLVED_REFERENCE!>_<!>) -> Unit> { { it } }
|
||||
val x2 = foo<Int, (Int) -> <!UNRESOLVED_REFERENCE!>_<!>> { { it } }
|
||||
val x3 = foo<Int, (<!UNRESOLVED_REFERENCE!>(_)<!>) -> <!UNRESOLVED_REFERENCE!>_<!>> { { it } }
|
||||
val x4 = <!FUNCTION_CALL_EXPECTED!>foo<!><!UNRESOLVED_REFERENCE!><<!>Int<!SYNTAX!>, _ -> Float><!> { { <!UNRESOLVED_REFERENCE!>it<!> } }
|
||||
val x5 = foo<Int, Foo<(<!UNRESOLVED_REFERENCE!>_<!>) -> Float>> { <!ARGUMENT_TYPE_MISMATCH!>{ it }<!> }
|
||||
val x6 = foo<Int, Foo<(<!UNRESOLVED_REFERENCE!>_<!>) -> <!UNRESOLVED_REFERENCE!>_<!>>> { <!ARGUMENT_TYPE_MISMATCH!>{ it }<!> }
|
||||
val x7 = foo<Int, Foo<(Int) -> <!UNRESOLVED_REFERENCE!>_<!>>> { <!ARGUMENT_TYPE_MISMATCH!>{ it }<!> }
|
||||
|
||||
val z32: Pair<<!UNRESOLVED_REFERENCE!>_<!>, Float> = 1 to 1f
|
||||
val z34: Pair<<!UNRESOLVED_REFERENCE!>((_))<!>, Float> = 1 to 1f
|
||||
|
||||
val x8: (Float) -> Int = { x: <!UNDERSCORE_USAGE_WITHOUT_BACKTICKS, UNRESOLVED_REFERENCE!>_<!> -> 10 }
|
||||
val x9: (Foo<Float>) -> Int = { x: Foo<<!UNDERSCORE_USAGE_WITHOUT_BACKTICKS, UNRESOLVED_REFERENCE!>_<!>> -> 10 }
|
||||
|
||||
val x10 = object : <!UNRESOLVED_REFERENCE!>_<!> {}
|
||||
val x11 = object : Foo<<!UNRESOLVED_REFERENCE, UNRESOLVED_REFERENCE!>_<!>> {}
|
||||
|
||||
if (x11 is <!UNRESOLVED_REFERENCE!>_<!>) { }
|
||||
if (<!USELESS_IS_CHECK!>x11 is Foo<<!UNRESOLVED_REFERENCE!>_<!>><!>) { }
|
||||
|
||||
x10 as <!UNRESOLVED_REFERENCE!>_<!>
|
||||
x10 as Foo<<!UNRESOLVED_REFERENCE!>_<!>>
|
||||
|
||||
val x12: Foo<@<!UNDERSCORE_USAGE_WITHOUT_BACKTICKS, UNRESOLVED_REFERENCE!>_<!> Int>? = null
|
||||
val x13: Foo<@<!UNDERSCORE_USAGE_WITHOUT_BACKTICKS, UNRESOLVED_REFERENCE!>_<!>() Int>? = null
|
||||
val x14: Foo<@Anno(<!UNDERSCORE_USAGE_WITHOUT_BACKTICKS, UNRESOLVED_REFERENCE!>_<!>) Int>? = null
|
||||
|
||||
val x15: <!UNRESOLVED_REFERENCE!>_<<!UNRESOLVED_REFERENCE!>_<!>><!>? = null
|
||||
}
|
||||
|
||||
@Target(AnnotationTarget.TYPE)
|
||||
annotation class Anno(val x: Int)
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
// !LANGUAGE: +PartiallySpecifiedTypeArguments
|
||||
// !DIAGNOSTICS: -UNCHECKED_CAST
|
||||
// WITH_RUNTIME
|
||||
|
||||
fun <K, T> foo(x: (K) -> T): Pair<K, T> = (1 as K) to (1f as T)
|
||||
|
||||
class Foo<K>
|
||||
|
||||
class Bar0<K : <!UNRESOLVED_REFERENCE!>_<!><<!UNRESOLVED_REFERENCE!>_<!>>>
|
||||
class Bar1<K : Foo<<!UNRESOLVED_REFERENCE!>_<!>>>
|
||||
class Bar2<K : <!UNRESOLVED_REFERENCE!>_<!>>
|
||||
class Bar3<K> where K : <!UNRESOLVED_REFERENCE!>_<!>
|
||||
class Bar4<<!UNDERSCORE_IS_RESERVED!>_<!>>
|
||||
|
||||
typealias A1<<!UNDERSCORE_IS_RESERVED!>_<!>> = <!TYPEALIAS_SHOULD_EXPAND_TO_CLASS, UNDERSCORE_USAGE_WITHOUT_BACKTICKS!>_<!>
|
||||
typealias A2<T> = Foo<<!UNRESOLVED_REFERENCE!>_<!>>
|
||||
typealias A3<T> = (<!UNRESOLVED_REFERENCE!>_<!>) -> T
|
||||
typealias A4<T> = (T) -> () -> <!UNRESOLVED_REFERENCE!>_<!>
|
||||
typealias A5<T> = (T) -> (((<!UNRESOLVED_REFERENCE!>_<!>))) -> T
|
||||
|
||||
fun foo1(x: <!UNRESOLVED_REFERENCE!>_<!>) {}
|
||||
fun foo2(x: Foo<<!UNRESOLVED_REFERENCE!>_<!>>) {}
|
||||
fun foo3(): <!UNRESOLVED_REFERENCE!>_<!> {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
fun foo5(): Foo<<!UNRESOLVED_REFERENCE!>_<!>> {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
fun <K, <!UNDERSCORE_IS_RESERVED!>_<!>> foo6(): Foo<<!UNDERSCORE_USAGE_WITHOUT_BACKTICKS!>_<!>> {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
fun <K : <!UNDERSCORE_USAGE_WITHOUT_BACKTICKS!>_<!>, <!UNDERSCORE_IS_RESERVED!>_<!>> foo7(): Foo<<!UNDERSCORE_USAGE_WITHOUT_BACKTICKS!>_<!>> {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
|
||||
class AA1 : <!UNRESOLVED_REFERENCE!>_<!>
|
||||
class AA2 : <!FINAL_SUPERTYPE, SUPERTYPE_NOT_INITIALIZED!>Foo<<!UNRESOLVED_REFERENCE!>_<!>><!>
|
||||
|
||||
fun <`_`> bar(): Foo<<!UNDERSCORE_USAGE_WITHOUT_BACKTICKS!>_<!>> = TODO()
|
||||
|
||||
fun test() {
|
||||
val x1 = foo<Int, (_) -> Unit> { { <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>it<!> } }
|
||||
val x2 = foo<Int, (Int) -> <!UNRESOLVED_REFERENCE!>_<!>> { { it } }
|
||||
val x3 = foo<Int, ((_)) -> _> { { <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>it<!> } }
|
||||
val x4 = <!FUNCTION_CALL_EXPECTED, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>foo<!><!DEBUG_INFO_MISSING_UNRESOLVED!><<!>Int<!SYNTAX!>, _ -> Float><!> { { <!UNRESOLVED_REFERENCE!>it<!> } }
|
||||
val x5 = foo<Int, Foo<(<!UNRESOLVED_REFERENCE!>_<!>) -> Float>> { <!TYPE_MISMATCH!>{ <!TYPE_MISMATCH!>it<!> }<!> }
|
||||
val x6 = foo<Int, Foo<(<!UNRESOLVED_REFERENCE!>_<!>) -> <!UNRESOLVED_REFERENCE!>_<!>>> { <!TYPE_MISMATCH!>{ <!TYPE_MISMATCH!>it<!> }<!> }
|
||||
val x7 = foo<Int, Foo<(Int) -> <!UNRESOLVED_REFERENCE!>_<!>>> { <!TYPE_MISMATCH!>{ <!TYPE_MISMATCH!>it<!> }<!> }
|
||||
|
||||
val z32: Pair<<!UNRESOLVED_REFERENCE!>_<!>, Float> = 1 to 1f
|
||||
val z34: Pair<((<!UNRESOLVED_REFERENCE!>_<!>)), Float> = 1 to 1f
|
||||
|
||||
val x8: (Float) -> Int = { x: <!UNRESOLVED_REFERENCE!>_<!> -> 10 }
|
||||
val x9: (Foo<Float>) -> Int = { x: Foo<<!UNRESOLVED_REFERENCE!>_<!>> -> 10 }
|
||||
|
||||
val x10 = object : <!UNRESOLVED_REFERENCE!>_<!> {}
|
||||
val x11 = object : <!FINAL_SUPERTYPE, SUPERTYPE_NOT_INITIALIZED!>Foo<<!UNRESOLVED_REFERENCE!>_<!>><!> {}
|
||||
|
||||
if (x11 is <!UNRESOLVED_REFERENCE!>_<!>) { }
|
||||
if (x11 is <!INCOMPATIBLE_TYPES!>Foo<<!UNRESOLVED_REFERENCE!>_<!>><!>) { }
|
||||
|
||||
x10 as <!UNRESOLVED_REFERENCE!>_<!>
|
||||
x10 <!CAST_NEVER_SUCCEEDS!>as<!> Foo<<!UNRESOLVED_REFERENCE!>_<!>>
|
||||
|
||||
val x12: Foo<@<!UNRESOLVED_REFERENCE!>_<!> Int>? = null
|
||||
val x13: Foo<@<!UNRESOLVED_REFERENCE!>_<!>() Int>? = null
|
||||
val x14: Foo<@Anno(<!UNRESOLVED_REFERENCE!>_<!>) Int>? = null
|
||||
|
||||
val x15: <!UNRESOLVED_REFERENCE!>_<!><<!UNRESOLVED_REFERENCE!>_<!>>? = null
|
||||
}
|
||||
|
||||
@Target(AnnotationTarget.TYPE)
|
||||
annotation class Anno(val x: Int)
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
package
|
||||
|
||||
public fun </*0*/ _> bar(): Foo<_>
|
||||
public fun </*0*/ K, /*1*/ T> foo(/*0*/ x: (K) -> T): kotlin.Pair<K, T>
|
||||
public fun foo1(/*0*/ x: [ERROR : _]): kotlin.Unit
|
||||
public fun foo2(/*0*/ x: Foo<[ERROR : _]>): kotlin.Unit
|
||||
public fun foo3(): [ERROR : _]
|
||||
public fun foo5(): Foo<[ERROR : _]>
|
||||
public fun </*0*/ K, /*1*/ _> foo6(): Foo<_>
|
||||
public fun </*0*/ K : _, /*1*/ _> foo7(): Foo<_>
|
||||
public fun test(): kotlin.Unit
|
||||
|
||||
public final class AA1 {
|
||||
public constructor AA1()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class AA2 : Foo<[ERROR : _]> {
|
||||
public constructor AA2()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) public final annotation class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ x: kotlin.Int)
|
||||
public final val x: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class Bar0</*0*/ K> {
|
||||
public constructor Bar0</*0*/ K>()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class Bar1</*0*/ K : Foo<[ERROR : _]>> {
|
||||
public constructor Bar1</*0*/ K : Foo<[ERROR : _]>>()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class Bar2</*0*/ K> {
|
||||
public constructor Bar2</*0*/ K>()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class Bar3</*0*/ K> {
|
||||
public constructor Bar3</*0*/ K>()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class Bar4</*0*/ _> {
|
||||
public constructor Bar4</*0*/ _>()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class Foo</*0*/ K> {
|
||||
public constructor Foo</*0*/ K>()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
public typealias A1</*0*/ _> = _
|
||||
public typealias A2</*0*/ T> = Foo<[ERROR : _]>
|
||||
public typealias A3</*0*/ T> = ([ERROR : _]) -> T
|
||||
public typealias A4</*0*/ T> = (T) -> () -> [ERROR : _]
|
||||
public typealias A5</*0*/ T> = (T) -> ([ERROR : _]) -> T
|
||||
Generated
+6
@@ -13491,6 +13491,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
||||
runTest("compiler/testData/diagnostics/tests/inference/underscoredTypeArgument.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("underscoredTypeInForbiddenPositions.kt")
|
||||
public void testUnderscoredTypeInForbiddenPositions() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/inference/underscoredTypeInForbiddenPositions.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("useFunctionLiteralsToInferType.kt")
|
||||
public void testUseFunctionLiteralsToInferType() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user