[Tests] Add spec tests in FIR + LightTree configuration

In some tests PSI and LT differ. Test data was fixed accordingly.

In the following tests I consider that difference is acceptable:
- compiler/tests-spec/testData/diagnostics/linked/expressions/try-expression/p-1/neg/3.1.kt
- compiler/tests-spec/testData/diagnostics/linked/expressions/try-expression/p-1/neg/4.1.kt

This is because:
- It only happens when recovering from syntax errors happened above in
code. I was unable to reproduce it in valid code.
- It doesn't break parsing further, the rest of the errors in file are
reported identically.

The rest of the tests will be fixed in subsequent commits.

^KT-62704 Fixed
This commit is contained in:
Roman Efremov
2024-01-25 17:06:57 +01:00
committed by Space Team
parent 18b9cf3bc6
commit 8edb1842a5
11 changed files with 7758 additions and 11 deletions
@@ -26,6 +26,12 @@ abstract class AbstractFirDiagnosticTestSpecBase(parser: FirParser) : AbstractFi
}
abstract class AbstractFirPsiDiagnosticTestSpec : AbstractFirDiagnosticTestSpecBase(FirParser.Psi)
abstract class AbstractFirLightTreeDiagnosticTestSpec : AbstractFirDiagnosticTestSpecBase(FirParser.LightTree) {
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
builder.useAdditionalService { LightTreeSyntaxDiagnosticsReporterHolder() }
}
}
fun TestConfigurationBuilder.baseFirSpecDiagnosticTestConfiguration(baseDir: String = ".") {
defaultDirectives {
@@ -0,0 +1,77 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// COMPARE_WITH_LIGHT_TREE
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-213
* MAIN LINK: declarations, classifier-declaration, class-declaration, abstract-classes -> paragraph 2 -> sentence 1
* NUMBER: 3
* DESCRIPTION: attempt to implement abstract members with invalid types
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER: 1
package testPackCase1
abstract class Base {
abstract val a: CharSequence
abstract var b: CharSequence
abstract fun foo(): CharSequence
}
class Case1 : Base() {
override fun foo(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>Any<!>
{
return ""
}
override val a: <!PROPERTY_TYPE_MISMATCH_ON_OVERRIDE!>Any?<!>
get() = TODO()
override var b: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String<!>
get() = TODO()
set(value)
{}
}
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testPackCase2
abstract class Base {
abstract val a: CharSequence
abstract var b: CharSequence
abstract fun foo(): CharSequence
}
class Case2(override val a: String, <!VAR_TYPE_MISMATCH_ON_OVERRIDE{LT}!>override var b: <!VAR_TYPE_MISMATCH_ON_OVERRIDE{PSI}!>String<!><!>) : Base() {
override fun foo(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>CharSequence?<!> {
return ""
}
}
// FILE: TestCase3.kt
// TESTCASE NUMBER: 3
package testPackCase3
abstract class Base {
abstract val a: CharSequence
abstract var b: CharSequence
abstract fun foo(): CharSequence
}
class Case3 {
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class ImplBase1<!> : MainClass.Base1() {}
}
class MainClass {
abstract class Base1() {
abstract val a: CharSequence
abstract var b: CharSequence
abstract fun foo(): CharSequence
}
}
@@ -1,6 +1,6 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// COMPARE_WITH_LIGHT_TREE
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
@@ -1,5 +1,6 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// COMPARE_WITH_LIGHT_TREE
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
@@ -71,4 +72,4 @@ fun case6() {
} catch (e: ExcA)<!SYNTAX!><!>
catch (e: ExcB) {
}
}
}<!SYNTAX{LT}!><!>
@@ -1,5 +1,6 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// COMPARE_WITH_LIGHT_TREE
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
@@ -1,5 +1,6 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// COMPARE_WITH_LIGHT_TREE
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
@@ -33,7 +34,7 @@ fun case2() {
throwException()
} catch (e: ExcB) {
} finally
<!SYNTAX!><!>}<!SYNTAX!><!>
<!SYNTAX!><!>}<!SYNTAX{PSI}!><!>
// TESTCASE NUMBER: 3
@@ -1,5 +1,6 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// COMPARE_WITH_LIGHT_TREE
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
@@ -1,5 +1,6 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
// SKIP_TXT
// COMPARE_WITH_LIGHT_TREE
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
@@ -31,8 +32,8 @@ fun case_3() {
// TESTCASE NUMBER: 4
fun case_4() {
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS!><T><!> y1: Number where __UNRESOLVED__: __UNRESOLVED__ = 1
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS!><T><!> y2: Number where __UNRESOLVED__: __UNRESOLVED__ = 1
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS!><T><!> y1: Number where <!NAME_IN_CONSTRAINT_IS_NOT_A_TYPE_PARAMETER{LT}!>__UNRESOLVED__<!>: __UNRESOLVED__ = 1
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS!><T><!> y2: Number where <!NAME_IN_CONSTRAINT_IS_NOT_A_TYPE_PARAMETER{LT}!>__UNRESOLVED__<!>: __UNRESOLVED__ = 1
}
// TESTCASE NUMBER: 5
@@ -46,8 +47,8 @@ fun case_5() {
* UNEXPECTED BEHAVIOUR
*/
fun case_6() {
val <T : __UNRESOLVED__> (x1, y1) = Pair(1, 2)
var <T : __UNRESOLVED__> (x2, y2) = Pair(1, 2)
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS{LT}!><T : __UNRESOLVED__><!> (x1, y1) = Pair(1, 2)
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS{LT}!><T : __UNRESOLVED__><!> (x2, y2) = Pair(1, 2)
}
/*
@@ -55,8 +56,8 @@ fun case_6() {
* UNEXPECTED BEHAVIOUR
*/
fun case_7() {
val <T : __UNRESOLVED__> (x1, y1) where __UNRESOLVED__: __UNRESOLVED__ = Pair(1, 2)
var <T : __UNRESOLVED__> (x2, y2) where __UNRESOLVED__: __UNRESOLVED__ = Pair(1, 2)
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS{LT}!><T : __UNRESOLVED__><!> (x1, y1) where __UNRESOLVED__: __UNRESOLVED__ = Pair(1, 2)
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS{LT}!><T : __UNRESOLVED__><!> (x2, y2) where __UNRESOLVED__: __UNRESOLVED__ = Pair(1, 2)
}
// TESTCASE NUMBER: 8
@@ -93,8 +94,8 @@ fun case_12() {
// TESTCASE NUMBER: 13
fun case_13() {
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS!><T : <!UNRESOLVED_REFERENCE!>__UNRESOLVED__<!>><!> <!REDECLARATION!>x<!>: Int where __UNRESOLVED__: __UNRESOLVED__
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS!><T : <!UNRESOLVED_REFERENCE!>__UNRESOLVED__<!>><!> <!REDECLARATION!>x<!>: Int where __UNRESOLVED__: __UNRESOLVED__
val <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS!><T : <!UNRESOLVED_REFERENCE!>__UNRESOLVED__<!>><!> <!REDECLARATION!>x<!>: Int where <!NAME_IN_CONSTRAINT_IS_NOT_A_TYPE_PARAMETER{LT}!>__UNRESOLVED__<!>: __UNRESOLVED__
var <!LOCAL_VARIABLE_WITH_TYPE_PARAMETERS!><T : <!UNRESOLVED_REFERENCE!>__UNRESOLVED__<!>><!> <!REDECLARATION!>x<!>: Int where <!NAME_IN_CONSTRAINT_IS_NOT_A_TYPE_PARAMETER{LT}!>__UNRESOLVED__<!>: __UNRESOLVED__
}
// TESTCASE NUMBER: 14
@@ -1,5 +1,6 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
// SKIP_TXT
// COMPARE_WITH_LIGHT_TREE
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.spec.utils.GeneralConfiguration.SPEC_TEST_PATH
import org.jetbrains.kotlin.spec.utils.GeneralConfiguration.TESTS_MAP_FILENAME
import org.jetbrains.kotlin.spec.utils.SectionsJsonMapGenerator
import org.jetbrains.kotlin.spec.utils.TestsJsonMapGenerator
import org.jetbrains.kotlin.test.runners.AbstractFirLightTreeDiagnosticTestSpec
import org.jetbrains.kotlin.test.runners.AbstractFirPsiDiagnosticTestSpec
import org.jetbrains.kotlin.test.utils.CUSTOM_TEST_DATA_EXTENSION_PATTERN
import java.io.File
@@ -72,6 +73,13 @@ fun generateTests() {
excludedPattern = CUSTOM_TEST_DATA_EXTENSION_PATTERN
)
}
testClass<AbstractFirLightTreeDiagnosticTestSpec> {
model(
"diagnostics",
excludeDirs = listOf("helpers") + detectDirsWithTestsMapFileOnly("diagnostics"),
excludedPattern = CUSTOM_TEST_DATA_EXTENSION_PATTERN
)
}
}
}
}