[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:
committed by
Space Team
parent
e6633d3d92
commit
7541732752
+8
-3
@@ -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}"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -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,
|
||||
)
|
||||
|
||||
|
||||
+9
@@ -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() {
|
||||
|
||||
-26
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
|
||||
// SKIP_TXT
|
||||
|
||||
|
||||
-118
@@ -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() {}
|
||||
+4
-3
@@ -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() {}
|
||||
|
||||
-89
@@ -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,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
|
||||
|
||||
-54
@@ -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
-4
@@ -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 {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
-46
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
|
||||
// SKIP_TXT
|
||||
|
||||
-71
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
|
||||
// SKIP_TXT
|
||||
|
||||
-83
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
|
||||
// SKIP_TXT
|
||||
|
||||
+13
@@ -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
|
||||
|
||||
-65
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
|
||||
// SKIP_TXT
|
||||
|
||||
+11
@@ -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(){
|
||||
|
||||
+11
@@ -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() {
|
||||
|
||||
-12
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// SKIP_TXT
|
||||
|
||||
|
||||
-27
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// SKIP_TXT
|
||||
|
||||
|
||||
-20
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// SKIP_TXT
|
||||
|
||||
|
||||
-11
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// SKIP_TXT
|
||||
|
||||
|
||||
-11
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// SKIP_TXT
|
||||
|
||||
|
||||
+15
@@ -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?){
|
||||
|
||||
+15
@@ -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 {
|
||||
|
||||
+15
@@ -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 {
|
||||
|
||||
-38
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
|
||||
// SKIP_TXT
|
||||
|
||||
|
||||
-38
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
|
||||
// SKIP_TXT
|
||||
|
||||
|
||||
+15
@@ -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?) {
|
||||
|
||||
+15
@@ -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 {
|
||||
|
||||
+15
@@ -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 {
|
||||
|
||||
-59
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION -UNREACHABLE_CODE
|
||||
// SKIP_TXT
|
||||
|
||||
|
||||
+15
@@ -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?) {
|
||||
|
||||
-22
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// SKIP_TXT
|
||||
|
||||
|
||||
-23
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// SKIP_TXT
|
||||
|
||||
|
||||
-59
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
|
||||
// SKIP_TXT
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
Vendored
+12
@@ -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() }
|
||||
|
||||
+14
-3
@@ -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() {
|
||||
|
||||
+1
-1
@@ -66,4 +66,4 @@ fun case3() {
|
||||
if (x == 3) return
|
||||
}
|
||||
val a = 1
|
||||
}
|
||||
}
|
||||
|
||||
-16
@@ -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)
|
||||
}
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
|
||||
// SKIP_TXT
|
||||
|
||||
|
||||
+10
@@ -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
|
||||
|
||||
+10
@@ -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;
|
||||
|
||||
-11
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
*
|
||||
|
||||
+14
@@ -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!>''<!>
|
||||
|
||||
+12
@@ -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() {
|
||||
|
||||
+9
@@ -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<!>
|
||||
|
||||
|
||||
+9
@@ -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
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
*
|
||||
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
*
|
||||
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
/*
|
||||
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
|
||||
*
|
||||
|
||||
+9
@@ -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<!>
|
||||
|
||||
|
||||
+9
@@ -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_____<!>
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+9
@@ -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<!>
|
||||
|
||||
|
||||
+9
@@ -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<!>
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+9
@@ -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___<!>
|
||||
|
||||
|
||||
+9
@@ -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<!>
|
||||
|
||||
|
||||
+9
@@ -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<!>
|
||||
|
||||
|
||||
+9
@@ -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<!>
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+9
@@ -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
|
||||
|
||||
|
||||
+10
@@ -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>() }
|
||||
|
||||
|
||||
+10
@@ -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>() }
|
||||
|
||||
|
||||
+10
@@ -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>() }
|
||||
|
||||
|
||||
+10
@@ -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>() }
|
||||
|
||||
|
||||
+10
@@ -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>() }
|
||||
|
||||
|
||||
+9
@@ -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<!>
|
||||
|
||||
|
||||
+9
@@ -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<!>
|
||||
|
||||
|
||||
+10
@@ -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
Reference in New Issue
Block a user