Add tests for local variables with type parameters (KT-8341)
This commit is contained in:
@@ -29,6 +29,7 @@ val remoteRunTests by task<Test> {
|
||||
val includeTests = setOf(
|
||||
"checkers.DiagnosticsTestSpecGenerated\$NotLinked\$Contracts*",
|
||||
"checkers.DiagnosticsTestSpecGenerated\$NotLinked\$Annotations*",
|
||||
"checkers.DiagnosticsTestSpecGenerated\$NotLinked\$Local_variables\$Type_parameters*",
|
||||
"codegen.BlackBoxCodegenTestSpecGenerated\$NotLinked\$Annotations\$Type_annotations*",
|
||||
"codegen.BlackBoxCodegenTestSpecGenerated\$NotLinked\$Objects\$Inheritance*"
|
||||
)
|
||||
|
||||
Vendored
+104
@@ -0,0 +1,104 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
*
|
||||
* SECTIONS: local-variables, type-parameters
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: Local variables with forbidden type parameters.
|
||||
* UNEXPECTED BEHAVIOUR
|
||||
* ISSUES: KT-8341
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1() {
|
||||
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T><!> x1 = 1
|
||||
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T><!> x2 = 1
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2() {
|
||||
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T><!> x1: Int = 1
|
||||
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T><!> x2: Int = 1
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3() {
|
||||
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T><!> x1: Map<Int, Int> = mapOf(1 to 1)
|
||||
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T><!> x2: Map<Int, Int> = mapOf(1 to 1)
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
fun case_4() {
|
||||
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T><!> y1: Number where <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>: <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!> = 1
|
||||
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T><!> y2: Number where <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>: <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!> = 1
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
fun case_5() {
|
||||
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T : <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>><!> x1: Map<Int, Int> = mapOf(1 to 1)
|
||||
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T : <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>><!> x2: Map<Int, Int> = mapOf(1 to 1)
|
||||
}
|
||||
|
||||
/*
|
||||
* TESTCASE NUMBER: 6
|
||||
* UNEXPECTED BEHAVIOUR
|
||||
*/
|
||||
fun case_6() {
|
||||
val <T : <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>> (x1, y1) = Pair(1, 2)
|
||||
var <T : <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>> (x2, y2) = Pair(1, 2)
|
||||
}
|
||||
|
||||
/*
|
||||
* TESTCASE NUMBER: 7
|
||||
* UNEXPECTED BEHAVIOUR
|
||||
*/
|
||||
fun case_7() {
|
||||
val <T : <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>> (x1, y1) where <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>: <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!> = Pair(1, 2)
|
||||
var <T : <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>> (x2, y2) where <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>: <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!> = Pair(1, 2)
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 8
|
||||
fun case_8() {
|
||||
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><A, B : <!DEBUG_INFO_MISSING_UNRESOLVED!>A<!>, C : <!DEBUG_INFO_MISSING_UNRESOLVED!>B<!>, D : <!DEBUG_INFO_MISSING_UNRESOLVED!>C<!>, E : <!DEBUG_INFO_MISSING_UNRESOLVED!>D<!>><!> x1 = 1
|
||||
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><A, B : <!DEBUG_INFO_MISSING_UNRESOLVED!>A<!>, C : <!DEBUG_INFO_MISSING_UNRESOLVED!>B<!>, D : <!DEBUG_INFO_MISSING_UNRESOLVED!>C<!>, E : <!DEBUG_INFO_MISSING_UNRESOLVED!>D<!>><!> x2 = 2
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 9
|
||||
fun case_9(y: Boolean?) = when (val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T><!> x = y) {
|
||||
true -> null
|
||||
false -> null
|
||||
null -> null
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 10
|
||||
fun case_10(x: Boolean?) = when (val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T><!> <!NAME_SHADOWING!>x<!> where <!DEBUG_INFO_MISSING_UNRESOLVED!>T<!>: suspend () -> <!DEBUG_INFO_MISSING_UNRESOLVED!>Unit<!>, <!DEBUG_INFO_MISSING_UNRESOLVED!>T<!>: <!DEBUG_INFO_MISSING_UNRESOLVED!>Boolean<!> = x) {
|
||||
true -> null
|
||||
false -> null
|
||||
null -> null
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 11
|
||||
fun case_11() {
|
||||
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T><!> <!REDECLARATION!>x<!> by lazy { 1 }
|
||||
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T><!> <!NAME_SHADOWING, REDECLARATION!>x<!> by <!DELEGATE_SPECIAL_FUNCTION_MISSING!>lazy { 1 }<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 12
|
||||
fun case_12() {
|
||||
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T : <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>><!> <!REDECLARATION!>x<!>: Int
|
||||
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T : <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>><!> <!NAME_SHADOWING, REDECLARATION!>x<!>: Int
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 13
|
||||
fun case_13() {
|
||||
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T : <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>><!> <!REDECLARATION!>x<!>: Int where <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>: <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>
|
||||
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T : <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>><!> <!NAME_SHADOWING, REDECLARATION!>x<!>: Int where <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>: <!DEBUG_INFO_MISSING_UNRESOLVED!>__UNRESOLVED__<!>
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 14
|
||||
fun case_14() {
|
||||
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T : <!DEBUG_INFO_MISSING_UNRESOLVED!>T<!>><!> x1 = 1
|
||||
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING!><T : <!DEBUG_INFO_MISSING_UNRESOLVED!>T<!>><!> x2 = 1
|
||||
}
|
||||
+44
@@ -2369,5 +2369,49 @@ public class DiagnosticsTestSpecGenerated extends AbstractDiagnosticsTestSpec {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/tests-spec/testData/diagnostics/notLinked/local-variables")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
public static class Local_variables extends AbstractDiagnosticsTestSpec {
|
||||
private void runTest(String testDataFilePath) throws Exception {
|
||||
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
|
||||
}
|
||||
|
||||
public void testAllFilesPresentInLocal_variables() throws Exception {
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/tests-spec/testData/diagnostics/notLinked/local-variables"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.ANY, true);
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/tests-spec/testData/diagnostics/notLinked/local-variables/type-parameters")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
public static class Type_parameters extends AbstractDiagnosticsTestSpec {
|
||||
private void runTest(String testDataFilePath) throws Exception {
|
||||
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
|
||||
}
|
||||
|
||||
public void testAllFilesPresentInType_parameters() throws Exception {
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/tests-spec/testData/diagnostics/notLinked/local-variables/type-parameters"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.ANY, true);
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/tests-spec/testData/diagnostics/notLinked/local-variables/type-parameters/neg")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
public static class Neg extends AbstractDiagnosticsTestSpec {
|
||||
private void runTest(String testDataFilePath) throws Exception {
|
||||
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
|
||||
}
|
||||
|
||||
@TestMetadata("1.kt")
|
||||
public void test1() throws Exception {
|
||||
runTest("compiler/tests-spec/testData/diagnostics/notLinked/local-variables/type-parameters/neg/1.kt");
|
||||
}
|
||||
|
||||
public void testAllFilesPresentInNeg() throws Exception {
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/tests-spec/testData/diagnostics/notLinked/local-variables/type-parameters/neg"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.ANY, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user