[FIR] Fix TEST SPEC tests

Ensure the test data contents for both the frontends
are identical. This is needed for proper analysis of
K2-differences.
This commit is contained in:
Nikolay Lunyak
2023-06-12 15:20:46 +03:00
committed by Space Team
parent e6633d3d92
commit 7541732752
583 changed files with 4053 additions and 5418 deletions
@@ -16,6 +16,8 @@ import org.jetbrains.kotlin.test.runners.AbstractFirPsiDiagnosticTest
import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerTest
import org.jetbrains.kotlin.test.services.*
import org.jetbrains.kotlin.test.utils.firTestDataFile
import org.jetbrains.kotlin.test.utils.isFirTestData
import org.jetbrains.kotlin.test.utils.originalTestDataFile
import java.io.File
open class FirTestDataConsistencyHandler(testServices: TestServices) : AfterAnalysisChecker(testServices) {
@@ -27,16 +29,19 @@ open class FirTestDataConsistencyHandler(testServices: TestServices) : AfterAnal
val testData = moduleStructure.originalTestDataFiles.first()
if (testData.extension == "kts") return
if (FirDiagnosticsDirectives.FIR_IDENTICAL in moduleStructure.allDirectives) return
val firTestData = testData.firTestDataFile
val (firTestData, originalTestData) = when {
testData.isFirTestData -> testData to testData.originalTestDataFile
else -> testData.firTestDataFile to testData
}
if (!firTestData.exists()) {
runFirTestAndGeneratedTestData(testData, firTestData)
return
}
val firPreprocessedTextData = firTestData.preprocessSource()
val originalPreprocessedTextData = testData.preprocessSource()
val originalPreprocessedTextData = originalTestData.preprocessSource()
testServices.assertions.assertEquals(firPreprocessedTextData, originalPreprocessedTextData) {
"Original and FIR test data aren't identical. " +
"Please, add changes from ${testData.name} to ${firTestData.name}"
"Please, add changes from ${originalTestData.name} to ${firTestData.name}"
}
}
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.test.bind
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.AdditionalFilesDirectives.SPEC_HELPERS
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB
import org.jetbrains.kotlin.test.frontend.classic.handlers.FirTestDataConsistencyHandler
import org.jetbrains.kotlin.test.frontend.fir.FirFailingTestSuppressor
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirIdenticalChecker
import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator
@@ -36,6 +37,7 @@ fun TestConfigurationBuilder.baseFirSpecDiagnosticTestConfiguration(baseDir: Str
useAfterAnalysisCheckers(
::FirIdenticalChecker,
::FirTestDataConsistencyHandler,
::FirFailingTestSuppressor,
)
@@ -1,6 +1,15 @@
// !DIAGNOSTICS: -UNREACHABLE_CODE -IMPLICIT_CAST_TO_ANY -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-296
* MAIN LINK: control--and-data-flow-analysis, control-flow-graph, expressions-1, conditional-expressions -> paragraph 1 -> sentence 1
* NUMBER: 4
* DESCRIPTION: check if-expressions must have both branches. (attempt to pass Nothing to if-condition with 'else' key word)
*/
// TESTCASE NUMBER: 1
fun case1() {
@@ -1,26 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
abstract class Base() {
<!ABSTRACT_FUNCTION_WITH_BODY!>abstract<!> fun foo() = {}
<!NON_ABSTRACT_FUNCTION_WITH_NO_BODY!>fun boo() : Unit<!>
abstract val a = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>""<!>
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val b<!>
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var d<!>
}
class Impl : Base() {
override fun foo(): () -> Unit {
TODO("not implemented")
}
override val a: String
get() = TODO("not implemented")
}
fun case1() {
val impl = Impl()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,118 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
<!REDUNDANT_MODIFIER!>open<!> abstract class Base {
abstract val a: Any
abstract var b: Any
internal abstract val c: Any
internal abstract var d: Any
abstract fun foo()
internal abstract fun boo(): Any
}
fun case1() {
val impl = BaseImplCase2(1, "1", 1.0)
}
class BaseImplCase2(
override var a: Any, override
<!VAR_OVERRIDDEN_BY_VAL!>val<!> b: Any, override var c: Any, override
<!VAR_OVERRIDDEN_BY_VAL!>val<!> d: Any = "5") : Base()
{
override fun foo() {}
override internal fun boo() {}
}
// TESTCASE NUMBER: 2
fun case2() {
val impl = ImplBaseCase2()
}
class ImplBaseCase2() : Base() {
override var a: Any
get() = TODO()
set(value) {}
override
<!VAR_OVERRIDDEN_BY_VAL!>val<!> b: Any
get() = TODO()
override var c: Any
get() = TODO()
set(value) {}
override
<!VAR_OVERRIDDEN_BY_VAL!>val<!> d: Any
get() = TODO()
override fun foo() {}
override fun boo(): Any {
return ""
}
}
/*
* TESTCASE NUMBER: 3
* NOTE: property is not implemented
*/
fun case3() {
ImplBaseCase3()
}
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class ImplBaseCase3<!>() : Base() {
override var b: Any
get() = TODO()
set(value) {}
override val c: Any
get() = TODO()
override var d: Any
get() = TODO()
set(value) {}
override fun foo() {
TODO()
}
override fun boo(): Any {
TODO()
}
}
/*
* TESTCASE NUMBER: 4
* NOTE: function is not implemented
*/
fun case4() {
ImplBaseCase4()
}
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class ImplBaseCase4<!>() : Base() {
override var b: Any
get() = TODO()
set(value) {}
override val c: Any
get() = TODO()
override var d: Any
get() = TODO()
set(value) {}
override fun foo() {}
override fun boo(): Any {
return 1
}
}
/*
* TESTCASE NUMBER: 5
* NOTE: incompatible modifiers final and abstract
*/
<!INCOMPATIBLE_MODIFIERS!>final<!> <!INCOMPATIBLE_MODIFIERS!>abstract<!> class Case5() {}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -11,7 +12,7 @@
*/
// FILE: TestCase1.kt
// TESTCASE NUMBER:1
// TESTCASE NUMBER: 1
package testPackCase1
<!REDUNDANT_MODIFIER!>open<!> abstract class Base {
@@ -24,6 +25,7 @@ package testPackCase1
abstract fun foo()
internal abstract fun boo(): Any
}
fun case1() {
val impl = BaseImplCase1(1, "1", 1.0)
}
@@ -134,7 +136,6 @@ package testPackCase4
internal abstract fun boo(): Any
}
fun case4() {
ImplBaseCase4()
}
@@ -160,4 +161,4 @@ fun case4() {
* TESTCASE NUMBER: 5
* NOTE: incompatible modifiers final and abstract
*/
<!INCOMPATIBLE_MODIFIERS!>final<!> <!INCOMPATIBLE_MODIFIERS!>abstract<!> class Case5() {}
<!INCOMPATIBLE_MODIFIERS!>final<!> <!INCOMPATIBLE_MODIFIERS!>abstract<!> class Case5() {}
@@ -1,89 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
private abstract class Base {
abstract val a: Any
abstract var b: Any
internal abstract val c: Any
internal abstract var d: Any
abstract fun foo()
internal abstract fun boo(): Any
}
fun case1() {
val impl = object : Base() {
override var a: Any
get() = TODO()
set(value) {}
override <!VAR_OVERRIDDEN_BY_VAL!>val<!> b: Any
get() = TODO()
override var c: Any
get() = TODO()
set(value) {}
override <!VAR_OVERRIDDEN_BY_VAL!>val<!> d: Any
get() = TODO()
override fun foo() {}
override fun boo(): Any {
return ""
}
}
}
/*
* TESTCASE NUMBER: 2
* NOTE: property is not implemented
*/
fun case2() {
val impl = <!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>object<!> : Base() {
override var b: Any
get() = TODO()
set(value) {}
override val c: Any
get() = TODO()
override var d: Any
get() = TODO()
set(value) {}
override fun foo() {
TODO()
}
override fun boo(): Any {
TODO()
}
}
}
/*
* TESTCASE NUMBER: 3
* NOTE: function is not implemented
*/
fun case3() {
val impl = <!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>object<!> : Base() {
override var b: Any
get() = TODO()
set(value) {}
override val c: Any
get() = TODO()
override var d: Any
get() = TODO()
set(value) {}
override fun foo() {}
override fun boo(): Any {
return 1
}
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -46,7 +47,6 @@ fun case1() {
}
}
// FILE: TestCase2.kt
/*
* TESTCASE NUMBER: 2
@@ -65,8 +65,6 @@ private abstract class Base {
internal abstract fun boo(): Any
}
fun case2() {
val impl = <!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>object<!> : Base() {
override var b: Any
@@ -1,54 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
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)
{}
}
/*
* TESTCASE NUMBER: 2
*/
class Case2(override val a: String, override var b: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String<!>) : Base() {
override fun foo(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>CharSequence?<!> {
return ""
}
}
/*
* TESTCASE NUMBER: 3
* NOTE: abstract nested class members are not implemented
*/
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,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -34,8 +35,6 @@ class Case1 : Base() {
{}
}
// FILE: TestCase2.kt
// TESTCASE NUMBER: 2
package testPackCase2
@@ -76,5 +75,3 @@ class MainClass {
}
}
@@ -1,6 +1,15 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FULL_JDK
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-213
* MAIN LINK: declarations, classifier-declaration, class-declaration, abstract-classes -> paragraph 2 -> sentence 1
* NUMBER: 4
* DESCRIPTION: Abstract classes may contain abstract members, which should be implemented in an inner class that inherits from that abstract type
*/
class MainClass {
abstract class Base1() {
abstract val a: CharSequence
@@ -1,46 +0,0 @@
// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FULL_JDK
// FILE: base/BaseJava.java
package base;
public abstract class BaseJava {
public BaseJavaCase1()
{}
public BaseJavaCase1(Boolean b)
{ foo(b); }
public void boo(Boolean b)
{ foo(b); }
abstract void foo(Boolean b);
}
// FILE: Impl.kt
package implBase
import base.*
// TESTCASE NUMBER: 1
<!INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER_ERROR!>class Case1<!> : BaseJava() {}
fun case1() {
val v = Case1()
v.boo(true)
}
/*
* TESTCASE NUMBER: 2
*/
abstract class AbstractClassCase2 : BaseJava() {}
<!INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER_ERROR!>class Case2<!> : AbstractClassCase2() {}
fun case2() {
val v = Case2()
v.boo(true)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,71 +0,0 @@
// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FULL_JDK
// FILE: base/BaseJava.java
package base;
public abstract class BaseJava {
public BaseJavaCase1()
{}
public BaseJavaCase1(Boolean b)
{ foo(b); }
public void boo(Boolean b)
{ foo(b); }
abstract void foo(Boolean b);
}
// FILE: Impl.kt
package implBase
import base.*
// TESTCASE NUMBER: 1
class Case1 : BaseJava() {
<!CANNOT_OVERRIDE_INVISIBLE_MEMBER!>override<!> fun foo(b: Boolean?) {}
}
fun case1() {
val v = Case1()
v.boo(true)
}
/*
* TESTCASE NUMBER: 2
*/
abstract class AbstractClassCase2 : BaseJava() {}
class Case2: AbstractClassCase2() {
<!CANNOT_OVERRIDE_INVISIBLE_MEMBER!>override<!> fun foo(b: Boolean?) {}
}
fun case2() {
val v = Case2()
v.boo(true)
}
// TESTCASE NUMBER: 3
<!INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER_ERROR!>class Case3<!> : BaseJava() {}
fun case3() {
val v = Case3()
v.boo(true)
}
/*
* TESTCASE NUMBER: 4
*/
abstract class AbstractClassCase4 : BaseJava() {}
<!INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER_ERROR!>class Case4<!> : AbstractClassCase4() {}
fun case4() {
val v = Case4()
v.boo(true)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,83 +0,0 @@
// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FULL_JDK
// MODULE: base
// FILE: BaseKotlin.kt
package base
abstract class BaseKotlin() {
fun boo(b: Boolean?) {
foo(b)
}
internal abstract fun foo(b: Boolean?)
}
//MODULE: implBase(base)
//FILE: Impl.kt
package implBase
import base.*
// TESTCASE NUMBER: 1
class Case1 : BaseKotlin() {
<!CANNOT_OVERRIDE_INVISIBLE_MEMBER!>override<!> fun foo(b: Boolean?) {}
}
fun case1() {
val v = Case1()
v.boo(true)
val o = object : BaseKotlin() {
<!CANNOT_OVERRIDE_INVISIBLE_MEMBER!>override<!> fun foo(b: Boolean?) {}
}
}
/*
* TESTCASE NUMBER: 2
*/
abstract class AbstractClassCase2 : BaseKotlin() {}
class Case2: AbstractClassCase2() {
<!CANNOT_OVERRIDE_INVISIBLE_MEMBER!>override<!> fun foo(b: Boolean?) {}
}
fun case2() {
val v = Case2()
v.boo(true)
val o = object : AbstractClassCase2() {
<!CANNOT_OVERRIDE_INVISIBLE_MEMBER!>override<!> fun foo(b: Boolean?) {}
}
}
// TESTCASE NUMBER: 3
<!INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER_ERROR!>class Case3<!> : BaseKotlin() {}
fun case3() {
val v = Case3()
v.boo(true)
val o = <!INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER_ERROR!>object<!> : BaseKotlin() {}
}
/*
* TESTCASE NUMBER: 4
*/
abstract class AbstractClassCase4 : BaseKotlin() {}
<!INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER_ERROR!>class Case4<!> : AbstractClassCase4() {}
fun case4() {
val v = Case4()
v.boo(true)
val o = <!INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER_ERROR!>object<!> : AbstractClassCase4() {}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -3,6 +3,19 @@
// SKIP_TXT
// FULL_JDK
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-213
* MAIN LINK: declarations, classifier-declaration, class-declaration, abstract-classes -> paragraph 2 -> sentence 1
* PRIMARY LINKS: inheritance, overriding -> paragraph 7 -> sentence 1
* NUMBER: 8
* DESCRIPTION: Abstract classes may contain one or more abstract members, which should be implemented in a subtype of this abstract class
* ISSUES: KT-27825
*/
// MODULE: base
// FILE: AbstractClassCase1.kt
package base
@@ -1,65 +0,0 @@
// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// FULL_JDK
// MODULE: libModule
// FILE: libModule/BaseJava1.java
package libModule;
public abstract class BaseJava1 {
/*package-private*/ abstract void boojava();
}
// FILE: BaseKotlin1.kt
package libModule
public abstract class BaseKotlin1 {
internal abstract fun bookotlin()
}
// MODULE: mainModule(libModule)
// FILE: mainModule/JavaClassWithAbstractKotlinClass.java
package mainModule
import libModule.*
/*
* TESTCASE NUMBER: 1
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-35325
*/
public class JavaClassWithAbstractKotlinClass {
public void zoo()
{
//todo: INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER should be expected
BaseKotlin1 baseKotlin = new BaseKotlin1() {};
BaseKotlin1 baseKotlin = new BaseKotlinImpl();
baseKotlin.bookotlin$libModule(); //highlight Error: usage of Kotlin internal declaration from different module
BaseKotlinImpl baseKotlinImpl = new BaseKotlinImpl();
baseKotlinImpl.bookotlin$libModule(); //there is no any Error, but should be
}
class BaseKotlinImpl extends BaseKotlin1 {
@Override
public void bookotlin$libModule() {
System.out.println("wefrgth");
}
}
}
// FILE: KotlinClassWithAbstractJavaClass.kt
package mainModule
import libModule.*
// TESTCASE NUMBER: 2
class KotlinClassWithAbstractJavaClass() {
fun foo() {
val baseJava1 = <!INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER_ERROR!>object<!> : BaseJava1() {}
val baseKotlin = <!INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER_ERROR!>object<!> : BaseKotlin1() {}
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,6 +1,17 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-213
* MAIN LINK: declarations, classifier-declaration, class-declaration, abstract-classes -> paragraph 2 -> sentence 1
* NUMBER: 2
* DESCRIPTION: Abstract classes may contain one or more abstract members, which should be implemented in a subtype of this abstract class
* HELPERS: checkType, functions
* ISSUES: KT-27825
*/
// TESTCASE NUMBER: 1
fun case1(){
@@ -1,6 +1,17 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-213
* MAIN LINK: declarations, classifier-declaration, class-declaration, abstract-classes -> paragraph 2 -> sentence 1
* NUMBER: 3
* DESCRIPTION: Abstract classes may contain one or more abstract members, which should be implemented in a subtype of this abstract class
* HELPERS: checkType, functions
*/
// TESTCASE NUMBER: 1
// NOTE: attempt to implement inner abstract class as anonymous class
open class MainCase1() {
@@ -1,12 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
// TESTCASE NUMBER: 1
class C1(x1: Boolean, val x2: Boolean, var x3: Boolean)
// TESTCASE NUMBER: 2
class C2(x1: Boolean, var x2: Boolean, vararg var x3: Boolean)
// TESTCASE NUMBER: 3
class C3(x1: Boolean, vararg val x2: Boolean, var x3: Boolean)
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
@@ -1,27 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
// TESTCASE NUMBER: 1
class Case1<T>() {
class A(t: <!UNRESOLVED_REFERENCE!>T<!>)
class B(x: List<<!UNRESOLVED_REFERENCE!>T<!>>)
class C(c: () -> <!UNRESOLVED_REFERENCE!>T<!>)
class E(n: Nothing, t: <!UNRESOLVED_REFERENCE!>T<!>)
}
// TESTCASE NUMBER: 2
class Case2<T>() {
data class A(<!DATA_CLASS_NOT_PROPERTY_PARAMETER!>t: <!UNRESOLVED_REFERENCE!>T<!><!>)
data class B(<!DATA_CLASS_NOT_PROPERTY_PARAMETER!>x: List<<!UNRESOLVED_REFERENCE!>T<!>><!>)
data class C(<!DATA_CLASS_NOT_PROPERTY_PARAMETER!>c: () -> <!UNRESOLVED_REFERENCE!>T<!><!>)
data class E(<!DATA_CLASS_NOT_PROPERTY_PARAMETER!>n: Nothing<!>, <!DATA_CLASS_NOT_PROPERTY_PARAMETER!>t: <!UNRESOLVED_REFERENCE!>T<!><!>)
}
// TESTCASE NUMBER: 3
class Case3<T>() {
enum class A(t: <!UNRESOLVED_REFERENCE!>T<!>)
enum class B(x: List<<!UNRESOLVED_REFERENCE!>T<!>>)
enum class C(c: () -> <!UNRESOLVED_REFERENCE!>T<!>)
enum class E(n: Nothing, t: <!UNRESOLVED_REFERENCE!>T<!>)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
@@ -1,20 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
// TESTCASE NUMBER: 1
data class A(<!DATA_CLASS_NOT_PROPERTY_PARAMETER!>x: Any?<!>)
data class B(<!DATA_CLASS_NOT_PROPERTY_PARAMETER!>x: Any<!>)
data class C(<!DATA_CLASS_NOT_PROPERTY_PARAMETER!>c: () -> Any<!>)
data class D(<!DATA_CLASS_NOT_PROPERTY_PARAMETER!>e: Enum<*><!>)
data class E(<!DATA_CLASS_NOT_PROPERTY_PARAMETER!>n: Nothing<!>)
data class F<T>(<!DATA_CLASS_NOT_PROPERTY_PARAMETER!>t: T<!>)
// TESTCASE NUMBER: 2
class Case2<T>() {
data class A(<!DATA_CLASS_NOT_PROPERTY_PARAMETER!>t: <!UNRESOLVED_REFERENCE!>T<!><!>)
data class B(<!DATA_CLASS_NOT_PROPERTY_PARAMETER!>x: List<<!UNRESOLVED_REFERENCE!>T<!>><!>)
data class C(<!DATA_CLASS_NOT_PROPERTY_PARAMETER!>c: () -> <!UNRESOLVED_REFERENCE!>T<!><!>)
data class E(<!DATA_CLASS_NOT_PROPERTY_PARAMETER!>n: Nothing<!>, <!DATA_CLASS_NOT_PROPERTY_PARAMETER!>t: <!UNRESOLVED_REFERENCE!>T<!><!>)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
@@ -1,11 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
// TESTCASE NUMBER: 1
class Case1<T>() {
class A(val t: <!UNRESOLVED_REFERENCE!>T<!>)
class B(val x: List<<!UNRESOLVED_REFERENCE!>T<!>>)
class C(val c: () -> <!UNRESOLVED_REFERENCE!>T<!>)
class E(val n: Nothing, val t: <!UNRESOLVED_REFERENCE!>T<!>)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
@@ -1,11 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
// TESTCASE NUMBER: 1
class Case1<T>() {
class A(var t: <!UNRESOLVED_REFERENCE!>T<!>)
class B(var x: List<<!UNRESOLVED_REFERENCE!>T<!>>)
class C(var c: () -> <!UNRESOLVED_REFERENCE!>T<!>)
class E(var n: Nothing, var t: <!UNRESOLVED_REFERENCE!>T<!>)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
@@ -1,6 +1,21 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-544
* MAIN LINK: declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 5 -> sentence 1
* PRIMARY LINKS: declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 4 -> sentence 1
* declarations, classifier-declaration, class-declaration -> paragraph 1 -> sentence 1
* declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 2 -> sentence 1
* declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 6 -> sentence 1
* SECONDARY LINKS: declarations, classifier-declaration, class-declaration -> paragraph 2 -> sentence 2
* declarations, classifier-declaration, class-declaration -> paragraph 2 -> sentence 6
* NUMBER: 1
* DESCRIPTION: top level declaration primary constructor with regular constructor parameter
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
class A(x: Any?){
@@ -1,6 +1,21 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-544
* MAIN LINK: declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 5 -> sentence 1
* PRIMARY LINKS: declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 4 -> sentence 1
* declarations, classifier-declaration, class-declaration -> paragraph 1 -> sentence 1
* declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 2 -> sentence 1
* declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 6 -> sentence 1
* SECONDARY LINKS: declarations, classifier-declaration, class-declaration -> paragraph 2 -> sentence 2
* declarations, classifier-declaration, class-declaration -> paragraph 2 -> sentence 6
* NUMBER: 2
* DESCRIPTION: Primary constructor for nested class with regular constructor parameter
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
class Case1 {
@@ -1,6 +1,21 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-544
* MAIN LINK: declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 5 -> sentence 1
* PRIMARY LINKS: declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 4 -> sentence 1
* declarations, classifier-declaration, class-declaration -> paragraph 1 -> sentence 1
* declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 2 -> sentence 1
* declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 6 -> sentence 1
* SECONDARY LINKS: declarations, classifier-declaration, class-declaration -> paragraph 2 -> sentence 2
* declarations, classifier-declaration, class-declaration -> paragraph 2 -> sentence 6
* NUMBER: 3
* DESCRIPTION: Primary constructor for inner class with regular constructor parameter
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
class Case1 {
@@ -1,38 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
fun <T> List<T>.case1() {
class Case1(t: T)
class A(t: T)
class B(x: List<T>)
class C(c: () -> T)
class E(n: Nothing, t: T)
}
// TESTCASE NUMBER: 2
val <T> List<T>.case2: Int
get() = {
class A(t: T)
class B(x: List<T>)
class C(c: () -> T)
class E(n: Nothing, t: T)
1
}()
// TESTCASE NUMBER: 3
var <T> List<T>.case3: Unit
get() {
class A(t: T)
class B(x: List<T>)
class C(c: () -> T)
class E(n: Nothing, t: T)
1
}
set(i: Unit) {
class A(t: T)
class B(x: List<T>)
class C(c: () -> T)
class E(n: Nothing, t: T)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,38 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
fun <T> List<T>.case1() {
class Case1(t: T)
class A(t: T)
class B(x: List<T>)
class C(c: () -> T)
class E(n: Nothing, t: T)
}
// TESTCASE NUMBER: 2
val <T> List<T>.case2: Int
get() = {
class A(t: T)
class B(x: List<T>)
class C(c: () -> T)
class E(n: Nothing, t: T)
1
}()
// TESTCASE NUMBER: 3
var <T> List<T>.case3: Unit
get() {
class A(t: T)
class B(x: List<T>)
class C(c: () -> T)
class E(n: Nothing, t: T)
1
}
set(i: Unit) {
class A(t: T)
class B(x: List<T>)
class C(c: () -> T)
class E(n: Nothing, t: T)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,6 +1,21 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNRESOLVED_REFERENCE -UNREACHABLE_CODE
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-544
* MAIN LINK: declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 5 -> sentence 2
* PRIMARY LINKS: declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 4 -> sentence 1
* declarations, classifier-declaration, class-declaration -> paragraph 1 -> sentence 1
* declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 2 -> sentence 1
* declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 6 -> sentence 1
* SECONDARY LINKS: declarations, classifier-declaration, class-declaration -> paragraph 2 -> sentence 2
* declarations, classifier-declaration, class-declaration -> paragraph 2 -> sentence 6
* NUMBER: 1
* DESCRIPTION: top level declaration primary constructor with read-only property constructor parameter
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
class A(val x: Any?) {
@@ -1,6 +1,21 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNRESOLVED_REFERENCE -UNREACHABLE_CODE
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-544
* MAIN LINK: declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 5 -> sentence 2
* PRIMARY LINKS: declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 4 -> sentence 1
* declarations, classifier-declaration, class-declaration -> paragraph 1 -> sentence 1
* declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 2 -> sentence 1
* declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 6 -> sentence 1
* SECONDARY LINKS: declarations, classifier-declaration, class-declaration -> paragraph 2 -> sentence 2
* declarations, classifier-declaration, class-declaration -> paragraph 2 -> sentence 6
* NUMBER: 2
* DESCRIPTION: Primary constructor for nested class with read-only property constructor parameter
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
class Case1 {
@@ -1,6 +1,21 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNRESOLVED_REFERENCE -UNREACHABLE_CODE
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-544
* MAIN LINK: declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 5 -> sentence 2
* PRIMARY LINKS: declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 4 -> sentence 1
* declarations, classifier-declaration, class-declaration -> paragraph 1 -> sentence 1
* declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 2 -> sentence 1
* declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 6 -> sentence 1
* SECONDARY LINKS: declarations, classifier-declaration, class-declaration -> paragraph 2 -> sentence 2
* declarations, classifier-declaration, class-declaration -> paragraph 2 -> sentence 6
* NUMBER: 3
* DESCRIPTION: Primary constructor for inner class with mutable property constructor parameter
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
class Case1 {
@@ -1,59 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION -UNREACHABLE_CODE
// SKIP_TXT
// TESTCASE NUMBER: 1
fun <T> List<T>.case1() {
class Case1(val t: T)
class A(val t: T)
class B(val x: List<T>)
class C(val c: () -> T)
class E(val n: Nothing, val t: T)
}
// TESTCASE NUMBER: 2
val <T> List<T>.case2: Int
get() = {
class A(val t: T)
class B(val x: List<T>)
class C(val c: () -> T)
class E(val n: Nothing=TODO(), val t: T)
fun test() {
A(this.first())
B(this)
C { this.last() }
E(t = this[2])
}
1
}()
// TESTCASE NUMBER: 3
var <T> List<T>.case3: Unit
get() {
class A(val t: T)
class B(val x: List<T>)
class C(val c: () -> T)
class E(val n: Nothing = TODO(), t: T)
fun test() {
A(this.first())
B(this)
C { this.last() }
E(t = this[2])
}
}
set(i: Unit) {
class A(val t: T)
class B(val x: List<T>)
class C(val c: () -> T)
class E( t: T, val n: Nothing)
fun test() {
A(this.first())
B(this)
C { this.last() }
E(t = this[2], TODO())
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION -UNREACHABLE_CODE
// SKIP_TXT
@@ -1,6 +1,21 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNREACHABLE_CODE
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-544
* MAIN LINK: declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 5 -> sentence 3
* PRIMARY LINKS: declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 4 -> sentence 1
* declarations, classifier-declaration, class-declaration -> paragraph 1 -> sentence 1
* declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 2 -> sentence 1
* declarations, classifier-declaration, class-declaration, constructor-declaration -> paragraph 6 -> sentence 1
* SECONDARY LINKS: declarations, classifier-declaration, class-declaration -> paragraph 2 -> sentence 2
* declarations, classifier-declaration, class-declaration -> paragraph 2 -> sentence 6
* NUMBER: 1
* DESCRIPTION: top level declaration primary constructor with mutable property constructor parameter
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
class A(var x: Any?) {
@@ -1,22 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
// TESTCASE NUMBER: 1
class Case1 {
class A(var x: Any?)
class B(var x: Any)
class C(var c: () -> Any)
class D(var e: Enum<*>)
class E(var n: Nothing)
class F<T>(var t: T)
}
// TESTCASE NUMBER: 2
class Case2<T>() {
class A<T : CharSequence>(var e: T)
class B<T : java.util.AbstractCollection<Int>>(var e: T)
class C<T : java.lang.Exception>(var e: T)
class D<T : Enum<*>>(var e: T)
class F<T>(var t: T)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
@@ -1,23 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
// TESTCASE NUMBER: 1
class Case1 {
inner class A(var x: Any?)
inner class B(var x: Any)
inner class C(var c: () -> Any)
inner class D(var e: Enum<*>)
inner class E(var n: Nothing)
inner class F<T>(var t: T)
}
// TESTCASE NUMBER: 2
class Case2<T>() {
inner class A(var x: Any?, t: T)
inner class B(var x: T)
inner class C(var c: () -> T)
inner class D<T : Enum<*>>(var e: T)
inner class E(var n: Nothing, var t: T)
inner class F<T>(var t: T)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
@@ -1,59 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
fun <T> List<T>.case1() {
class Case1(var t: T)
class A(var t: T)
class B(var x: List<T>)
class C(var c: () -> T)
class E(var n: Nothing, var t: T)
}
// TESTCASE NUMBER: 2
val <T> List<T>.case2: Int
get() = {
class A(var t: T)
class B(var x: List<T>)
class C(var c: () -> T)
class E(var n: Nothing=TODO(), var t: T)
fun test() {
A(this.first())
B(this)
C { this.last() }
E(t = this[2])
}
1
}()
// TESTCASE NUMBER: 3
var <T> List<T>.case3: Unit
get() {
class A(var t: T)
class B(var x: List<T>)
class C(var c: () -> T)
class E(var n: Nothing = TODO(), t: T)
fun test() {
A(this.first())
B(this)
C { this.last() }
E(t = this[2])
}
}
set(i: Unit) {
class A(var t: T)
class B(var x: List<T>)
class C(var c: () -> T)
class E( t: T, var n: Nothing =TODO())
fun test() {
A(this.first())
B(this)
C { this.last() }
E(t = this[2])
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,6 +1,15 @@
// !DIAGNOSTICS: -UNREACHABLE_CODE -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-218
* MAIN LINK: declarations, property-declaration, local-property-declaration -> paragraph 1 -> sentence 1
* PRIMARY LINKS: declarations, property-declaration, property-initialization -> paragraph 1 -> sentence 1
* NUMBER: 1
* DESCRIPTION: All non-abstract properties must be definitely initialized before their first use.
*/
/*
* TESTCASE NUMBER: 1
@@ -1,6 +1,18 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-218
* MAIN LINK: expressions, additive-expression -> paragraph 4 -> sentence 1
* PRIMARY LINKS: expressions, additive-expression -> paragraph 4 -> sentence 2
* overloadable-operators -> paragraph 4 -> sentence 1
* NUMBER: 1
* DESCRIPTION: The return type of these functions is not restricted.
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
class Case1(var a: Int) {
operator fun minus(o: Int): Case1 { TODO() }
@@ -1,11 +1,20 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-213
* MAIN LINK: expressions, built-in-types-and-their-semantics, kotlin.nothing-1 -> paragraph 1 -> sentence 1
* NUMBER: 1
* DESCRIPTION: check the type of jump expressions is Nothing and code placed on the left side of expression will never be executed
*/
// TESTCASE NUMBER: 1
fun case1() {
var name: Any? = null
val men = arrayListOf(Person("Phill"), Person(), Person("Bob"))
val men = arrayListOf(Person1("Phill"), Person1(), Person1("Bob"))
for (k in men) {
k.name
loop@ for (i in men) {
@@ -20,13 +29,13 @@ fun case1() {
val a = 1
}
class Person(var name: String? = null) {}
class Person1(var name: String? = null) {}
// TESTCASE NUMBER: 2
fun case2() {
var name: Any? = null
val men = arrayListOf(Person("Phill"), Person(), Person("Bob"))
val men = arrayListOf(Person2("Phill"), Person2(), Person2("Bob"))
for (k in men) {
loop@ for (i in men) {
i.name
@@ -40,6 +49,8 @@ fun case2() {
val a = 1
}
class Person2(var name: String? = null) {}
// TESTCASE NUMBER: 3
fun case3() {
@@ -66,4 +66,4 @@ fun case3() {
if (x == 3) return
}
val a = 1
}
}
@@ -1,16 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
// TESTCASE NUMBER: 1
class A(val a: Int) {
fun compareTo(other: A): Int = run {
this.a - other.a
}
}
fun case1() {
val a3 = A(-1)
val a4 = A(-3)
val x = (a3 <!OPERATOR_MODIFIER_REQUIRED!>><!> a4)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
@@ -1,6 +1,16 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-218
* MAIN LINK: expressions, comparison-expressions -> paragraph 4 -> sentence 1
* PRIMARY LINKS: overloadable-operators -> paragraph 4 -> sentence 1
* NUMBER: 1
* DESCRIPTION: The compareTo operator function must have return type kotlin.Int
*/
// TESTCASE NUMBER: 1
class Case1(val a: Int) {
var isCompared = false
@@ -2,6 +2,16 @@
// SKIP_TXT
// FULL_JDK
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-313
* MAIN LINK: expressions, conditional-expression -> paragraph 6 -> sentence 1
* NUMBER: 1
* DESCRIPTION: The type of the condition expression must be a subtype of kotlin.Boolean
* HELPERS: checkType
*/
// MODULE: libModule
// FILE: libModule/JavaContainer.java
package libModule;
@@ -1,11 +0,0 @@
// TESTCASE NUMBER: 1
fun case_1() {
true checkType { <!NONE_APPLICABLE!>check<!><Boolean?>() }
false checkType { <!NONE_APPLICABLE!>check<!><Boolean?>() }
true checkType { <!NONE_APPLICABLE!>check<!><Any?>() }
false checkType { <!NONE_APPLICABLE!>check<!><Any>() }
true checkType { <!NONE_APPLICABLE!>check<!><Nothing?>() }
false checkType { <!NONE_APPLICABLE!>check<!><Nothing>() }
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
@@ -1,6 +1,20 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-435
* MAIN LINK: expressions, constant-literals, character-literals -> paragraph 1 -> sentence 1
* PRIMARY LINKS: expressions, constant-literals, character-literals -> paragraph 1 -> sentence 2
* expressions, constant-literals, character-literals -> paragraph 2 -> sentence 1
* expressions, constant-literals, character-literals -> paragraph 2 -> sentence 2
* expressions, constant-literals, character-literals -> paragraph 4 -> sentence 1
* NUMBER: 1
* DESCRIPTION: A character literal defines a constant holding a unicode character value
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
fun case1() {
val c = <!EMPTY_CHARACTER_LITERAL!>''<!>
@@ -1,6 +1,18 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-218
* MAIN LINK: expressions, constant-literals, character-literals -> paragraph 4 -> sentence 1
* PRIMARY LINKS: expressions, constant-literals, character-literals -> paragraph 5 -> sentence 1
* NUMBER: 1
* DESCRIPTION: to define a character the unicode codepoint escaped symbol \u could be used with followed by exactly four hexadecimal digits.
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
fun case1() {
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, integer-literals, binary-integer-literals -> paragraph 1 -> sentence 2
* NUMBER: 1
* DESCRIPTION: Binary integer literals with an underscore after the prefix.
*/
// TESTCASE NUMBER: 1
val value_1 = <!ILLEGAL_UNDERSCORE!>0b_1110100000<!>
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, integer-literals, binary-integer-literals -> paragraph 1 -> sentence 2
* NUMBER: 3
* DESCRIPTION: Binary integer literals with an underscore in the last position.
*/
// TESTCASE NUMBER: 1
val value_1 = <!ILLEGAL_UNDERSCORE!>0b0_1_1_0_1_1_____<!>
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, integer-literals, hexadecimal-integer-literals -> paragraph 1 -> sentence 2
* NUMBER: 1
* DESCRIPTION: Hexadecimal integer literals with an underscore after the prefix.
*/
// TESTCASE NUMBER: 1
val value_1 = <!ILLEGAL_UNDERSCORE!>0x_1234567890<!>
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, integer-literals, hexadecimal-integer-literals -> paragraph 1 -> sentence 2
* NUMBER: 4
* DESCRIPTION: Hexadecimal integer literals with an underscore in the last position.
*/
// TESTCASE NUMBER: 1
val value_1 = <!ILLEGAL_UNDERSCORE!>0x3_4_5_6_7_8_____<!>
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 1 -> sentence 1
* NUMBER: 2
* DESCRIPTION: Real literals with a many digits in a whole-number part and a fraction part (including conforms).
*/
// TESTCASE NUMBER: 1
val value_1 = 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 1 -> sentence 3
* NUMBER: 2
* DESCRIPTION: Real literals suffixed by f/F (the float suffix) with a many digits in a whole-number part and a fraction part (including conforms).
*/
// TESTCASE NUMBER: 1
val value_1 = 0.000000000000000000000000000000000000000000001f
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-435
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 2 -> sentence 1
* NUMBER: 2
* DESCRIPTION: Real literals with a not allowed exponent mark at the beginning.
*/
// TESTCASE NUMBER: 1
val value_1 = <!UNRESOLVED_REFERENCE!>E0<!>
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-435
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 2 -> sentence 1
* NUMBER: 3
* DESCRIPTION: Real literals suffixed by f/F (float suffix) with a not allowed exponent mark at the beginning.
*/
// TESTCASE NUMBER: 1
val value_1 = <!UNRESOLVED_REFERENCE!>E0f<!>
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-435
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 2 -> sentence 1
* NUMBER: 1
* DESCRIPTION: Simple real literals with an exponent mark.
*/
// TESTCASE NUMBER: 1
val value_1 = 0.0e0
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-435
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 2 -> sentence 1
* NUMBER: 2
* DESCRIPTION: Real literals suffixed by f/F (float suffix) with an exponent mark.
*/
// TESTCASE NUMBER: 1
val value_1 = 0.0e0f
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 3 -> sentence 1
* NUMBER: 1
* DESCRIPTION: Simple real literals with omitted a whole-number part.
*/
// TESTCASE NUMBER: 1
val value_1 = .0
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 3 -> sentence 1
* NUMBER: 2
* DESCRIPTION: Real literals with omitted a whole-number part and an exponent mark.
*/
// TESTCASE NUMBER: 1
val value_1 = .0e0
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 3 -> sentence 1
* NUMBER: 5
* DESCRIPTION: Real literals suffixed by f/F (float suffix) with omitted a whole-number part and an exponent mark.
*/
// TESTCASE NUMBER: 1
val value_1 = .0e0f
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 3 -> sentence 2
* NUMBER: 1
* DESCRIPTION: Simple real literals with omitted a fraction part, suffixed by f/F (float suffix).
*/
// TESTCASE NUMBER: 1
val value_1 = 0F
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 3 -> sentence 2
* NUMBER: 2
* DESCRIPTION: Real literals with omitted a fraction part and an exponent mark.
*/
// TESTCASE NUMBER: 1
val value_1 = 0e0
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 3 -> sentence 2
* NUMBER: 3
* DESCRIPTION: Real literals with omitted a fraction part and an exponent mark, suffixed by f/F (float suffix).
*/
// TESTCASE NUMBER: 1
val value_1 = 0e0f
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 4 -> sentence 1
* NUMBER: 2
* DESCRIPTION: Real literals with underscores at the end.
*/
// TESTCASE NUMBER: 1
val value_1= <!ILLEGAL_UNDERSCORE!>.0_0e-0___<!>
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 4 -> sentence 2
* NUMBER: 1
* DESCRIPTION: Real literals with underscores before an exponent mark.
*/
// TESTCASE NUMBER: 1
val value_1 = <!ILLEGAL_UNDERSCORE!>0_E0<!>
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 4 -> sentence 2
* NUMBER: 2
* DESCRIPTION: Real literals with underscores after an exponent mark.
*/
// TESTCASE NUMBER: 1
val value_1 = <!ILLEGAL_UNDERSCORE!>0e___0<!>
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 4 -> sentence 2
* NUMBER: 3
* DESCRIPTION: Real literals with underscores around an exponent mark.
*/
// TESTCASE NUMBER: 1
val value_1 = <!ILLEGAL_UNDERSCORE!>.0__e_0<!>
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 4 -> sentence 1
* NUMBER: 1
* DESCRIPTION: Real literals with underscores in a whole-number part and a fraction part.
*/
// TESTCASE NUMBER: 1
val value_1 = 0.0_0
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 4 -> sentence 1
* NUMBER: 2
* DESCRIPTION: Real literals suffixed by f/F (float suffix) with underscores in a whole-number part and a fraction part.
*/
// TESTCASE NUMBER: 1
val value_1 = 0.0_0f
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 4 -> sentence 1
* NUMBER: 3
* DESCRIPTION: Real literals suffixed by f/F (float suffix) with an exponent mark and underscores in a whole-number part, a fraction part and an exponent part.
*/
// TESTCASE NUMBER: 1
val value_1 = 0.0_0e1_0f
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 4 -> sentence 1
* NUMBER: 4
* DESCRIPTION: Real literals with an omitted whole-number part and underscores in a whole-number part, a fraction part and an exponent part.
*/
// TESTCASE NUMBER: 1
val value_1 = .0_0
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 4 -> sentence 1
* NUMBER: 5
* DESCRIPTION: Real literals with an omitted fraction part and underscores in a whole-number part, a fraction part and an exponent part.
*/
// TESTCASE NUMBER: 1
val value_1 = 0_0F
@@ -1,3 +1,13 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 5 -> sentence 1
* NUMBER: 1
* DESCRIPTION: A type checking of a simple real literal (with/without underscores).
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
val value_1 = 0.1 checkType { check<Double>() }
@@ -1,3 +1,13 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 5 -> sentence 1
* NUMBER: 2
* DESCRIPTION: A type checking of a real literal with an exponent mark.
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
val value_1 = 0.0e0 checkType { check<Double>() }
@@ -1,3 +1,13 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 5 -> sentence 1
* NUMBER: 3
* DESCRIPTION: A type checking of a real literal with omitted a whole-number part.
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
val value_1 = .0 checkType { check<Double>() }
@@ -1,3 +1,13 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 5 -> sentence 1
* NUMBER: 4
* DESCRIPTION: A type checking of a real literal with omitted a whole-number part and an exponent mark.
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
val value_1 = .0e0 checkType { check<Double>() }
@@ -1,3 +1,13 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, real-literals -> paragraph 5 -> sentence 1
* NUMBER: 5
* DESCRIPTION: A type checking of a real literal with omitted a fraction part and an exponent mark.
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
val value_1 = 0e0 checkType { check<Double>() }
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, the-types-for-integer-literals -> paragraph 1 -> sentence 1
* NUMBER: 1
* DESCRIPTION: Binary and hexadecimal integer literals with a long literal mark only.
*/
// TESTCASE NUMBER: 1
val value_1 = <!INT_LITERAL_OUT_OF_RANGE!>0bl<!>
@@ -1,3 +1,12 @@
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, the-types-for-integer-literals -> paragraph 1 -> sentence 1
* NUMBER: 2
* DESCRIPTION: Various integer literals with a not allowed underscore before the long literal mark.
*/
// TESTCASE NUMBER: 1
val value_1 = <!ILLEGAL_UNDERSCORE!>0b0_l<!>
@@ -1,5 +1,15 @@
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-100
* MAIN LINK: expressions, constant-literals, the-types-for-integer-literals -> paragraph 1 -> sentence 2
* NUMBER: 1
* DESCRIPTION: Various integer literals with not allowed long literal mark in lower case (type checking).
* HELPERS: checkType
*/
// TESTCASE NUMBER: 1
fun case_1() {
0<!WRONG_LONG_SUFFIX!>l<!> <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>checkType<!> { check<Long>() }

Some files were not shown because too many files have changed in this diff Show More