Minor: explicitly opt-in for diagnostics messages in MultiplatformAnalysisTests

This commit is contained in:
Dmitry Savvinov
2020-08-22 14:44:17 +03:00
parent 9cde42e2bc
commit 68d931969d
31 changed files with 56 additions and 46 deletions
@@ -4,5 +4,5 @@ actual interface A<T> {
} }
fun main() { fun main() {
bar().<!OVERLOAD_RESOLUTION_AMBIGUITY(" public abstract actual fun foo(x: String): Unit defined in A public abstract fun foo(x: String): Unit defined in A")!>foo<!>("") bar().<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>("")
} }
@@ -11,6 +11,6 @@ fun main() {
// Any behaviour is acceptable, as the code is erroneous. // Any behaviour is acceptable, as the code is erroneous.
// At the time of writing this test, we resolve to nearest A, i.e. // At the time of writing this test, we resolve to nearest A, i.e.
// 'fromBottom' is resolved, and 'fromLeft' is not. // 'fromBottom' is resolved, and 'fromLeft' is not.
A().<!UNRESOLVED_REFERENCE("fromLeft")!>fromLeft<!>() A().<!UNRESOLVED_REFERENCE!>fromLeft<!>()
A().fromBottom() A().fromBottom()
} }
@@ -1,3 +1,5 @@
// !RENDER_DIAGNOSTICS_MESSAGES
package sample package sample
expect class <!AMBIGUOUS_ACTUALS("Class 'A'", "bottom, left")!>A<!> { expect class <!AMBIGUOUS_ACTUALS("Class 'A'", "bottom, left")!>A<!> {
@@ -5,7 +5,7 @@ interface B : A
fun testA(x: A) { fun testA(x: A) {
x.foo() x.foo()
x.bar() x.bar()
x.<!UNRESOLVED_REFERENCE("baz")!>baz<!>() x.<!UNRESOLVED_REFERENCE!>baz<!>()
take_A_common_1(x) take_A_common_1(x)
take_A_common_2_1(x) take_A_common_2_1(x)
@@ -15,7 +15,7 @@ fun testA(x: A) {
fun testB(x: B) { fun testB(x: B) {
x.foo() x.foo()
x.bar() x.bar()
x.<!UNRESOLVED_REFERENCE("baz")!>baz<!>() x.<!UNRESOLVED_REFERENCE!>baz<!>()
take_A_common_1(x) take_A_common_1(x)
take_A_common_2_1(x) take_A_common_2_1(x)
@@ -12,5 +12,5 @@ fun take2(x: A): DD = null!!
fun take4(x: A): DD = null!! fun take4(x: A): DD = null!!
fun test(x: A) { fun test(x: A) {
<!OVERLOAD_RESOLUTION_AMBIGUITY(" public fun take4(x: A): AA defined in sample in file common-1.kt public fun take4(x: A): DD defined in sample in file common-2-3.kt")!>take4<!>(x) <!OVERLOAD_RESOLUTION_AMBIGUITY!>take4<!>(x)
} }
@@ -16,10 +16,10 @@ fun take0(x: D): Unit = null!!
fun test_1(x: D) { fun test_1(x: D) {
val res0: Unit = take0(x) val res0: Unit = take0(x)
<!OVERLOAD_RESOLUTION_AMBIGUITY(" public fun take1(x: A): AA defined in sample in file common-1.kt public fun take1(x: A): DD defined in sample in file common-2-3.kt public fun take1(x: B): BB defined in sample in file common-2-1.kt public fun take1(x: C): CC defined in sample in file common-2-2.kt")!>take1<!>(x) <!OVERLOAD_RESOLUTION_AMBIGUITY!>take1<!>(x)
val res2: BB = take2(x) val res2: BB = take2(x)
val res3: BB = take3(x) val res3: BB = take3(x)
<!OVERLOAD_RESOLUTION_AMBIGUITY(" public fun take4(x: A): AA defined in sample in file common-1.kt public fun take4(x: A): DD defined in sample in file common-2-3.kt")!>take4<!>(x) <!OVERLOAD_RESOLUTION_AMBIGUITY!>take4<!>(x)
} }
fun test_2() { fun test_2() {
@@ -1,8 +1,8 @@
actual class A actual class A
// Error: ACTUAL_WITHOUT_EXPECT, becuase we shouldn't see expects through usual dependencies // Error: ACTUAL_WITHOUT_EXPECT, becuase we shouldn't see expects through usual dependencies
actual class <!ACTUAL_WITHOUT_EXPECT("Actual class 'B'", "")!>B<!> actual class <!ACTUAL_WITHOUT_EXPECT!>B<!>
// OK: though we can't actualize B, we can see it and use it. // OK: though we can't actualize B, we can see it and use it.
fun useB(<!UNUSED_PARAMETER("b")!>b<!>: B) { fun useB(<!UNUSED_PARAMETER!>b<!>: B) {
} }
@@ -1,8 +1,8 @@
actual class A actual class A
// Error: ACTUAL_WITHOUT_EXPECT, becuase we shouldn't see expects through usual dependencies // Error: ACTUAL_WITHOUT_EXPECT, becuase we shouldn't see expects through usual dependencies
actual class <!ACTUAL_WITHOUT_EXPECT("Actual class 'B'", "")!>B<!> actual class <!ACTUAL_WITHOUT_EXPECT!>B<!>
// OK: though we can't actualize B, we can see it and use it. // OK: though we can't actualize B, we can see it and use it.
fun useB(<!UNUSED_PARAMETER("b")!>b<!>: B) { fun useB(<!UNUSED_PARAMETER!>b<!>: B) {
} }
@@ -1 +1 @@
expect class <!NO_ACTUAL_FOR_EXPECT("class 'B'", "b-common", "")!>B<!> expect class <!NO_ACTUAL_FOR_EXPECT!>B<!>
@@ -1,3 +1,3 @@
package foo package foo
expect class <!AMBIGUOUS_ACTUALS("Class 'A'", "bottom, middle")!>A<!> expect class <!AMBIGUOUS_ACTUALS!>A<!>
@@ -1,3 +1,5 @@
// !RENDER_DIAGNOSTICS_MESSAGES
package foo package foo
expect class <!AMBIGUOUS_ACTUALS("Class 'ActualInMiddleCompatibleInBottom'", "bottom, middle")!>ActualInMiddleCompatibleInBottom<!> expect class <!AMBIGUOUS_ACTUALS("Class 'ActualInMiddleCompatibleInBottom'", "bottom, middle")!>ActualInMiddleCompatibleInBottom<!>
@@ -1,3 +1,3 @@
package foo package foo
<!ACTUAL_WITHOUT_EXPECT("Class 'A'", " The following declaration is incompatible because visibility is different: public final expect class A ")!>private<!> class A <!ACTUAL_WITHOUT_EXPECT!>private<!> class A
@@ -1,3 +1,5 @@
// !RENDER_DIAGNOSTICS_MESSAGES
package foo package foo
expect class <!AMBIGUOUS_ACTUALS("Class 'A'", "bottom, middle")!>A<!> expect class <!AMBIGUOUS_ACTUALS("Class 'A'", "bottom, middle")!>A<!>
@@ -1,3 +1,5 @@
// !RENDER_DIAGNOSTICS_MESSAGES
package foo package foo
actual fun foo<!ACTUAL_WITHOUT_EXPECT("Actual function 'foo'", " The following declaration is incompatible because number of value parameters is different: public expect fun foo(): Int ")!>(x: Int)<!>: Int = x actual fun foo<!ACTUAL_WITHOUT_EXPECT("Actual function 'foo'", " The following declaration is incompatible because number of value parameters is different: public expect fun foo(): Int ")!>(x: Int)<!>: Int = x
@@ -1 +1,3 @@
// !RENDER_DIAGNOSTICS_MESSAGES
actual class <!AMBIGUOUS_EXPECTS("Actual class 'A'", "left, right")!>A<!> actual class <!AMBIGUOUS_EXPECTS("Actual class 'A'", "left, right")!>A<!>
@@ -1 +1 @@
expect fun foo<!NO_ACTUAL_FOR_EXPECT("function 'foo'", "bottom for JVM", " The following declaration is incompatible because number of value parameters is different: public actual fun foo(): Int ")!>(x: Int)<!>: Int expect fun foo<!NO_ACTUAL_FOR_EXPECT!>(x: Int)<!>: Int
@@ -3,4 +3,4 @@ package foo
expect class ExpectInCommonActualInMiddle expect class ExpectInCommonActualInMiddle
expect class ExpectInCommonActualInPlatforms expect class ExpectInCommonActualInPlatforms
expect class <!NO_ACTUAL_FOR_EXPECT("class 'ExpectInCommonWithoutActual'", "js for JS", ""), NO_ACTUAL_FOR_EXPECT("class 'ExpectInCommonWithoutActual'", "jvm for JVM", "")!>ExpectInCommonWithoutActual<!> expect class <!NO_ACTUAL_FOR_EXPECT, NO_ACTUAL_FOR_EXPECT!>ExpectInCommonWithoutActual<!>
@@ -4,7 +4,7 @@ actual class ExpectInCommonActualInPlatforms
actual class ExpectInMiddleActualInPlatforms actual class ExpectInMiddleActualInPlatforms
expect class <!NO_ACTUAL_FOR_EXPECT("class 'ExpectInJsWithoutActual'", "js for JS", "")!>ExpectInJsWithoutActual<!> expect class <!NO_ACTUAL_FOR_EXPECT!>ExpectInJsWithoutActual<!>
expect class ExpectInJsActualInJs expect class ExpectInJsActualInJs
actual class ExpectInJsActualInJs actual class ExpectInJsActualInJs
@@ -3,7 +3,7 @@ package foo
actual class ExpectInCommonActualInPlatforms actual class ExpectInCommonActualInPlatforms
actual class ExpectInMiddleActualInPlatforms actual class ExpectInMiddleActualInPlatforms
expect class <!NO_ACTUAL_FOR_EXPECT("class 'ExpectInJvmWithoutActual'", "jvm for JVM", "")!>ExpectInJvmWithoutActual<!> expect class <!NO_ACTUAL_FOR_EXPECT!>ExpectInJvmWithoutActual<!>
expect class ExpectInJvmActualInJvm expect class ExpectInJvmActualInJvm
actual class ExpectInJvmActualInJvm actual class ExpectInJvmActualInJvm
@@ -4,4 +4,4 @@ actual class ExpectInCommonActualInMiddle
expect class ExpectInMiddleActualInPlatforms expect class ExpectInMiddleActualInPlatforms
expect class <!NO_ACTUAL_FOR_EXPECT("class 'ExpectInMiddleWithoutActual'", "js for JS", ""), NO_ACTUAL_FOR_EXPECT("class 'ExpectInMiddleWithoutActual'", "jvm for JVM", "")!>ExpectInMiddleWithoutActual<!> expect class <!NO_ACTUAL_FOR_EXPECT, NO_ACTUAL_FOR_EXPECT!>ExpectInMiddleWithoutActual<!>
@@ -1,4 +1,4 @@
package foo package foo
expect class <!NO_ACTUAL_FOR_EXPECT("class 'ExpectInCommonActualInJsOnly'", "jvm for JVM", "")!>ExpectInCommonActualInJsOnly<!> expect class <!NO_ACTUAL_FOR_EXPECT!>ExpectInCommonActualInJsOnly<!>
expect class <!NO_ACTUAL_FOR_EXPECT("class 'ExpectInCommonActualInJvmOnly'", "js for JS", "")!>ExpectInCommonActualInJvmOnly<!> expect class <!NO_ACTUAL_FOR_EXPECT!>ExpectInCommonActualInJvmOnly<!>
@@ -1,4 +1,4 @@
package foo package foo
expect class <!NO_ACTUAL_FOR_EXPECT("class 'ExpectInMiddleActualInJsOnly'", "jvm for JVM", "")!>ExpectInMiddleActualInJsOnly<!> expect class <!NO_ACTUAL_FOR_EXPECT!>ExpectInMiddleActualInJsOnly<!>
expect class <!NO_ACTUAL_FOR_EXPECT("class 'ExpectInMiddleActualInJvmOnly'", "js for JS", "")!>ExpectInMiddleActualInJvmOnly<!> expect class <!NO_ACTUAL_FOR_EXPECT!>ExpectInMiddleActualInJvmOnly<!>
@@ -6,4 +6,4 @@ interface SubCheck : Check {
} }
} }
class <!EXPLICIT_OVERRIDE_REQUIRED_IN_MIXED_MODE("public open fun test(): String defined in SubCheckClass", "public open fun test(): String defined in base.CheckClass", "all-compatibility")!>SubCheckClass<!> : CheckClass(), SubCheck class <!EXPLICIT_OVERRIDE_REQUIRED_IN_MIXED_MODE!>SubCheckClass<!> : CheckClass(), SubCheck
+1 -1
View File
@@ -10,7 +10,7 @@ fun test() {
} }
anotherUseA { anotherUseA {
<!UNRESOLVED_REFERENCE("foo")!>foo<!>() <!UNRESOLVED_REFERENCE!>foo<!>()
} }
anotherUseA { anotherUseA {
@@ -5,6 +5,6 @@ actual class A {
} }
fun test() { fun test() {
<!RESOLUTION_TO_CLASSIFIER("TypealiasFromCommon", "EXPECT_CLASS_AS_FUNCTION", "Expected class TypealiasFromCommon does not have default constructor")!>TypealiasFromCommon<!>().<!DEBUG_INFO_MISSING_UNRESOLVED!>commonMember<!>() <!RESOLUTION_TO_CLASSIFIER!>TypealiasFromCommon<!>().<!DEBUG_INFO_MISSING_UNRESOLVED!>commonMember<!>()
<!RESOLUTION_TO_CLASSIFIER("TypealiasFromCommon", "EXPECT_CLASS_AS_FUNCTION", "Expected class TypealiasFromCommon does not have default constructor")!>TypealiasFromCommon<!>().<!DEBUG_INFO_MISSING_UNRESOLVED!>platformwMember<!>() <!RESOLUTION_TO_CLASSIFIER!>TypealiasFromCommon<!>().<!DEBUG_INFO_MISSING_UNRESOLVED!>platformwMember<!>()
} }
@@ -1,16 +1,16 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
import kotlin.<!UNRESOLVED_REFERENCE("browser")!>browser<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>window<!> import kotlin.<!UNRESOLVED_REFERENCE!>browser<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>window<!>
import <!UNRESOLVED_REFERENCE("kotlinx")!>kotlinx<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>cinterop<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>CPointed<!> import <!UNRESOLVED_REFERENCE!>kotlinx<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>cinterop<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>CPointed<!>
fun jvmSpecific() { fun jvmSpecific() {
val x: <!UNRESOLVED_REFERENCE("Cloneable")!>Cloneable<!>? = null val x: <!UNRESOLVED_REFERENCE!>Cloneable<!>? = null
} }
fun nativeSpecific() { fun nativeSpecific() {
val x: <!UNRESOLVED_REFERENCE("CPointed")!>CPointed<!>? = null val x: <!UNRESOLVED_REFERENCE!>CPointed<!>? = null
} }
fun jsSpecific() { fun jsSpecific() {
val windowClosed = <!UNRESOLVED_REFERENCE("window")!>window<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>closed<!> val windowClosed = <!UNRESOLVED_REFERENCE!>window<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>closed<!>
} }
+3 -3
View File
@@ -1,14 +1,14 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
import kotlinx.browser.window import kotlinx.browser.window
import kotlinx.<!UNRESOLVED_REFERENCE("cinterop")!>cinterop<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>CPointed<!> import kotlinx.<!UNRESOLVED_REFERENCE!>cinterop<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>CPointed<!>
fun jvmSpecific() { fun jvmSpecific() {
val x: <!UNRESOLVED_REFERENCE("Cloneable")!>Cloneable<!>? = null val x: <!UNRESOLVED_REFERENCE!>Cloneable<!>? = null
} }
fun nativeSpecific() { fun nativeSpecific() {
val x: <!UNRESOLVED_REFERENCE("CPointed")!>CPointed<!>? = null val x: <!UNRESOLVED_REFERENCE!>CPointed<!>? = null
} }
fun jsSpecific() { fun jsSpecific() {
@@ -1,16 +1,16 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
import kotlin.<!UNRESOLVED_REFERENCE("browser")!>browser<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>window<!> import kotlin.<!UNRESOLVED_REFERENCE!>browser<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>window<!>
import <!UNRESOLVED_REFERENCE("kotlinx")!>kotlinx<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>cinterop<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>CPointed<!> import <!UNRESOLVED_REFERENCE!>kotlinx<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>cinterop<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>CPointed<!>
fun jvmSpecific() { fun jvmSpecific() {
val x: Cloneable? = null val x: Cloneable? = null
} }
fun nativeSpecific() { fun nativeSpecific() {
val x: <!UNRESOLVED_REFERENCE("CPointed")!>CPointed<!>? = null val x: <!UNRESOLVED_REFERENCE!>CPointed<!>? = null
} }
fun jsSpecific() { fun jsSpecific() {
val windowClosed = <!UNRESOLVED_REFERENCE("window")!>window<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>closed<!> val windowClosed = <!UNRESOLVED_REFERENCE!>window<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>closed<!>
} }
@@ -1,16 +1,16 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
import kotlin.<!UNRESOLVED_REFERENCE("browser")!>browser<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>window<!> import kotlin.<!UNRESOLVED_REFERENCE!>browser<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>window<!>
import <!UNRESOLVED_REFERENCE("kotlinx")!>kotlinx<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>cinterop<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>CPointed<!> import <!UNRESOLVED_REFERENCE!>kotlinx<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>cinterop<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>CPointed<!>
fun jvmSpecific() { fun jvmSpecific() {
val x: <!UNRESOLVED_REFERENCE("Cloneable")!>Cloneable<!>? = null val x: <!UNRESOLVED_REFERENCE!>Cloneable<!>? = null
} }
fun nativeSpecific() { fun nativeSpecific() {
val x: <!UNRESOLVED_REFERENCE("CPointed")!>CPointed<!>? = null val x: <!UNRESOLVED_REFERENCE!>CPointed<!>? = null
} }
fun jsSpecific() { fun jsSpecific() {
val windowClosed = <!UNRESOLVED_REFERENCE("window")!>window<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>closed<!> val windowClosed = <!UNRESOLVED_REFERENCE!>window<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>closed<!>
} }
@@ -1,4 +1,4 @@
package sample package sample
actual class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS("A", " public final expect fun f(): Unit ")!>A<!> { actual class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>A<!> {
} }
@@ -99,7 +99,7 @@ abstract class AbstractMultiModuleIdeResolveTest : AbstractMultiModuleTest() {
getFileText = { it.text }, getFileText = { it.text },
uncheckedDiagnostics = emptyList(), uncheckedDiagnostics = emptyList(),
withNewInferenceDirective = false, withNewInferenceDirective = false,
renderDiagnosticMessages = true renderDiagnosticMessages = directives.contains(BaseDiagnosticsTest.RENDER_DIAGNOSTICS_MESSAGES)
).toString() ).toString()
KotlinTestUtils.assertEqualsToFile(expectedFile, actualTextWithDiagnostics) KotlinTestUtils.assertEqualsToFile(expectedFile, actualTextWithDiagnostics)