[IR] Split INCOMPATIBLE_MATCHING to EXPECT_ACTUAL_MISMATCH & EXPECT_ACTUAL_INCOMPATIBILITY
KT-62590 Review: https://jetbrains.team/p/kt/reviews/12750/timeline
This commit is contained in:
+18
-5
@@ -6,9 +6,10 @@
|
|||||||
package org.jetbrains.kotlin.backend.common
|
package org.jetbrains.kotlin.backend.common
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.DECLARATION_NAME
|
||||||
import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.EXPECT_ACTUAL_ANNOTATION_INCOMPATIBILITY
|
import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.EXPECT_ACTUAL_ANNOTATION_INCOMPATIBILITY
|
||||||
import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.INCOMPATIBILITY
|
import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.INCOMPATIBILITY
|
||||||
import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.DECLARATION_NAME
|
import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.MISMATCH
|
||||||
import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.EVALUATION_ERROR_EXPLANATION
|
import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.EVALUATION_ERROR_EXPLANATION
|
||||||
import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.SYMBOL_OWNER_DECLARATION_FQ_NAME
|
import org.jetbrains.kotlin.backend.common.BackendDiagnosticRenderers.SYMBOL_OWNER_DECLARATION_FQ_NAME
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
@@ -25,11 +26,13 @@ import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
|||||||
import org.jetbrains.kotlin.ir.types.classFqName
|
import org.jetbrains.kotlin.ir.types.classFqName
|
||||||
import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable
|
import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable
|
||||||
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualAnnotationsIncompatibilityType
|
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualAnnotationsIncompatibilityType
|
||||||
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility
|
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCheckingCompatibility
|
||||||
|
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualMatchingCompatibility
|
||||||
|
|
||||||
object CommonBackendErrors {
|
object CommonBackendErrors {
|
||||||
val NO_ACTUAL_FOR_EXPECT by error2<PsiElement, String, ModuleDescriptor>()
|
val NO_ACTUAL_FOR_EXPECT by error2<PsiElement, String, ModuleDescriptor>()
|
||||||
val INCOMPATIBLE_MATCHING by error3<PsiElement, String, String, ExpectActualCompatibility.MismatchOrIncompatible<*>>()
|
val EXPECT_ACTUAL_MISMATCH by error3<PsiElement, String, String, ExpectActualMatchingCompatibility.Mismatch>()
|
||||||
|
val EXPECT_ACTUAL_INCOMPATIBILITY by error3<PsiElement, String, String, ExpectActualCheckingCompatibility.Incompatible<*>>()
|
||||||
val ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT by warning3<PsiElement, IrSymbol, IrSymbol, ExpectActualAnnotationsIncompatibilityType<IrConstructorCall>>()
|
val ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT by warning3<PsiElement, IrSymbol, IrSymbol, ExpectActualAnnotationsIncompatibilityType<IrConstructorCall>>()
|
||||||
val EVALUATION_ERROR by error1<PsiElement, String>()
|
val EVALUATION_ERROR by error1<PsiElement, String>()
|
||||||
val ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE by error1<PsiElement, IrValueParameter>()
|
val ACTUAL_ANNOTATION_CONFLICTING_DEFAULT_ARGUMENT_VALUE by error1<PsiElement, IrValueParameter>()
|
||||||
@@ -48,10 +51,17 @@ object KtDefaultCommonBackendErrorMessages : BaseDiagnosticRendererFactory() {
|
|||||||
MODULE_WITH_PLATFORM,
|
MODULE_WITH_PLATFORM,
|
||||||
)
|
)
|
||||||
map.put(
|
map.put(
|
||||||
CommonBackendErrors.INCOMPATIBLE_MATCHING,
|
CommonBackendErrors.EXPECT_ACTUAL_MISMATCH,
|
||||||
"Expect declaration `{0}` doesn''t match actual `{1}` because {2}",
|
"Expect declaration `{0}` doesn''t match actual `{1}` because {2}",
|
||||||
STRING,
|
STRING,
|
||||||
STRING,
|
STRING,
|
||||||
|
MISMATCH
|
||||||
|
)
|
||||||
|
map.put(
|
||||||
|
CommonBackendErrors.EXPECT_ACTUAL_INCOMPATIBILITY,
|
||||||
|
"Expect declaration `{0}` is incompatible with actual `{1}` because {2}",
|
||||||
|
STRING,
|
||||||
|
STRING,
|
||||||
INCOMPATIBILITY
|
INCOMPATIBILITY
|
||||||
)
|
)
|
||||||
map.put(
|
map.put(
|
||||||
@@ -76,7 +86,10 @@ object KtDefaultCommonBackendErrorMessages : BaseDiagnosticRendererFactory() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object BackendDiagnosticRenderers {
|
object BackendDiagnosticRenderers {
|
||||||
val INCOMPATIBILITY = Renderer<ExpectActualCompatibility.MismatchOrIncompatible<*>> {
|
val MISMATCH = Renderer<ExpectActualMatchingCompatibility.Mismatch> {
|
||||||
|
it.reason ?: "<unknown>"
|
||||||
|
}
|
||||||
|
val INCOMPATIBILITY = Renderer<ExpectActualCheckingCompatibility.Incompatible<*>> {
|
||||||
it.reason ?: "<unknown>"
|
it.reason ?: "<unknown>"
|
||||||
}
|
}
|
||||||
val SYMBOL_OWNER_DECLARATION_FQ_NAME = Renderer<IrSymbol> {
|
val SYMBOL_OWNER_DECLARATION_FQ_NAME = Renderer<IrSymbol> {
|
||||||
|
|||||||
+2
-2
@@ -279,7 +279,7 @@ private class ExpectActualLinkCollector : IrElementVisitor<Unit, ExpectActualLin
|
|||||||
for ((incompatibility, actualMemberSymbols) in actualSymbolsByIncompatibility) {
|
for ((incompatibility, actualMemberSymbols) in actualSymbolsByIncompatibility) {
|
||||||
for (actualSymbol in actualMemberSymbols) {
|
for (actualSymbol in actualMemberSymbols) {
|
||||||
require(actualSymbol is IrSymbol)
|
require(actualSymbol is IrSymbol)
|
||||||
diagnosticsReporter.reportIncompatibleExpectActual(expectSymbol, actualSymbol, incompatibility)
|
diagnosticsReporter.reportExpectActualIncompatibility(expectSymbol, actualSymbol, incompatibility)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -297,7 +297,7 @@ private class ExpectActualLinkCollector : IrElementVisitor<Unit, ExpectActualLin
|
|||||||
for ((incompatibility, actualMemberSymbols) in actualSymbolsByIncompatibility) {
|
for ((incompatibility, actualMemberSymbols) in actualSymbolsByIncompatibility) {
|
||||||
for (actualSymbol in actualMemberSymbols) {
|
for (actualSymbol in actualMemberSymbols) {
|
||||||
require(actualSymbol is IrSymbol)
|
require(actualSymbol is IrSymbol)
|
||||||
diagnosticsReporter.reportIncompatibleExpectActual(expectSymbol, actualSymbol, incompatibility)
|
diagnosticsReporter.reportExpectActualMismatch(expectSymbol, actualSymbol, incompatibility)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+19
-6
@@ -21,9 +21,7 @@ import org.jetbrains.kotlin.ir.types.IrTypeSystemContext
|
|||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.resolve.calls.mpp.AbstractExpectActualMatcher
|
import org.jetbrains.kotlin.resolve.calls.mpp.AbstractExpectActualMatcher
|
||||||
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualAnnotationsIncompatibilityType
|
import org.jetbrains.kotlin.resolve.multiplatform.*
|
||||||
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility
|
|
||||||
import org.jetbrains.kotlin.resolve.multiplatform.OptionalAnnotationUtil
|
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.runIf
|
import org.jetbrains.kotlin.utils.addToStdlib.runIf
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.shouldNotBeCalled
|
import org.jetbrains.kotlin.utils.addToStdlib.shouldNotBeCalled
|
||||||
|
|
||||||
@@ -109,15 +107,30 @@ internal fun KtDiagnosticReporterWithImplicitIrBasedContext.reportMissingActual(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun KtDiagnosticReporterWithImplicitIrBasedContext.reportIncompatibleExpectActual(
|
internal fun KtDiagnosticReporterWithImplicitIrBasedContext.reportExpectActualIncompatibility(
|
||||||
expectSymbol: IrSymbol,
|
expectSymbol: IrSymbol,
|
||||||
actualSymbol: IrSymbol,
|
actualSymbol: IrSymbol,
|
||||||
incompatibility: ExpectActualCompatibility.MismatchOrIncompatible<*>
|
incompatibility: ExpectActualCheckingCompatibility.Incompatible<*>,
|
||||||
) {
|
) {
|
||||||
val expectDeclaration = expectSymbol.owner as IrDeclaration
|
val expectDeclaration = expectSymbol.owner as IrDeclaration
|
||||||
val actualDeclaration = actualSymbol.owner as IrDeclaration
|
val actualDeclaration = actualSymbol.owner as IrDeclaration
|
||||||
at(expectDeclaration).report(
|
at(expectDeclaration).report(
|
||||||
CommonBackendErrors.INCOMPATIBLE_MATCHING,
|
CommonBackendErrors.EXPECT_ACTUAL_INCOMPATIBILITY,
|
||||||
|
expectDeclaration.getNameWithAssert().asString(),
|
||||||
|
actualDeclaration.getNameWithAssert().asString(),
|
||||||
|
incompatibility
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun KtDiagnosticReporterWithImplicitIrBasedContext.reportExpectActualMismatch(
|
||||||
|
expectSymbol: IrSymbol,
|
||||||
|
actualSymbol: IrSymbol,
|
||||||
|
incompatibility: ExpectActualMatchingCompatibility.Mismatch,
|
||||||
|
) {
|
||||||
|
val expectDeclaration = expectSymbol.owner as IrDeclaration
|
||||||
|
val actualDeclaration = actualSymbol.owner as IrDeclaration
|
||||||
|
at(expectDeclaration).report(
|
||||||
|
CommonBackendErrors.EXPECT_ACTUAL_MISMATCH,
|
||||||
expectDeclaration.getNameWithAssert().asString(),
|
expectDeclaration.getNameWithAssert().asString(),
|
||||||
actualDeclaration.getNameWithAssert().asString(),
|
actualDeclaration.getNameWithAssert().asString(),
|
||||||
incompatibility
|
incompatibility
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ open class Base {
|
|||||||
open fun <T> foo(t: T) {}
|
open fun <T> foo(t: T) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ open class Base {
|
|||||||
open lateinit var green: String
|
open lateinit var green: String
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base {
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ interface Base {
|
|||||||
fun foo()
|
fun foo()
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Foo<!> : Base<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Foo<!> : Base<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
interface Base {
|
interface Base {
|
||||||
fun foo()
|
fun foo()
|
||||||
}
|
}
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Foo<!>() : Base<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Foo<!>() : Base<!>
|
||||||
|
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
interface Base {
|
interface Base {
|
||||||
fun foo() {}
|
fun foo() {}
|
||||||
}
|
}
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect abstract class Foo() : Base<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect abstract class Foo() : Base<!>
|
||||||
|
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ open class Base {
|
|||||||
open fun foo() {}
|
open fun foo() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ open class Base<T> {
|
|||||||
open fun foo(t: T) {}
|
open fun foo(t: T) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base<String><!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base<String><!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ open class Base {
|
|||||||
open fun foo(param: Int) {}
|
open fun foo(param: Int) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo1 : Base<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo1 : Base<!>
|
||||||
expect open class Foo2 : Base
|
expect open class Foo2 : Base
|
||||||
expect open class Foo3 {
|
expect open class Foo3 {
|
||||||
open fun foo(param: Int)
|
open fun foo(param: Int)
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@ open class Base {
|
|||||||
protected set
|
protected set
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ open class Base {
|
|||||||
open fun foo(vararg bar: Int) {}
|
open fun foo(vararg bar: Int) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base {
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ open class Base {
|
|||||||
protected open fun foo() {}
|
protected open fun foo() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@ open class Base {
|
|||||||
open fun foo(): Any = ""
|
open fun foo(): Any = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base {
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ open class Base {
|
|||||||
open fun foo(): I = null!!
|
open fun foo(): I = null!!
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo<T : I> : Base {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo<T : I> : Base {
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ open class Base<R> {
|
|||||||
open fun foo(): R = null!!
|
open fun foo(): R = null!!
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo<R, T : R> : Base<R> {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo<R, T : R> : Base<R> {
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@ open class Base {
|
|||||||
open fun foo(): String = ""
|
open fun foo(): String = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ expect open class Base {
|
|||||||
open fun foo(): MutableList<String>
|
open fun foo(): MutableList<String>
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base {
|
||||||
|
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ open class Base {
|
|||||||
open val foo: Int = 1
|
open val foo: Int = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ open class Base() {
|
|||||||
protected open fun overrideVisibility(): Any = ""
|
protected open fun overrideVisibility(): Any = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect open class Foo : Base {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Foo : Base {
|
||||||
fun existingMethod()
|
fun existingMethod()
|
||||||
val existingParam: Int
|
val existingParam: Int
|
||||||
}<!>
|
}<!>
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
annotation class Ann
|
annotation class Ann
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class A {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class A {
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>class B {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>class B {
|
||||||
@Ann
|
@Ann
|
||||||
fun foo()
|
fun foo()
|
||||||
<!NO_ACTUAL_FOR_EXPECT{JVM}!>fun missingOnActual()<!>
|
<!NO_ACTUAL_FOR_EXPECT{JVM}!>fun missingOnActual()<!>
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}("A; A; some expected members have no actual ones")!>expect annotation class A<!INCOMPATIBLE_MATCHING{JVM}("<init>; <init>; some value parameter is vararg in one declaration and non-vararg in the other")!>(vararg val x: String)<!><!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect annotation class A<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>(vararg val x: String)<!><!>
|
||||||
|
|
||||||
@A("abc", "foo", "bar")
|
@A("abc", "foo", "bar")
|
||||||
fun test() {}
|
fun test() {}
|
||||||
|
|||||||
+4
-4
@@ -2,13 +2,13 @@
|
|||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
annotation class Ann
|
annotation class Ann
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class WeakIncompatibility {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class WeakIncompatibility {
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>@Ann
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>@Ann
|
||||||
fun foo(p: String)<!>
|
fun foo(p: String)<!>
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class StrongIncompatibility {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class StrongIncompatibility {
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>@Ann
|
<!EXPECT_ACTUAL_MISMATCH{JVM}!>@Ann
|
||||||
fun foo(p: Int)<!>
|
fun foo(p: Int)<!>
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
annotation class Ann
|
annotation class Ann
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect enum class E {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect enum class E {
|
||||||
@Ann
|
@Ann
|
||||||
FOO,
|
FOO,
|
||||||
<!NO_ACTUAL_FOR_EXPECT{JVM}!>MISSING_ON_ACTUAL<!>
|
<!NO_ACTUAL_FOR_EXPECT{JVM}!>MISSING_ON_ACTUAL<!>
|
||||||
|
|||||||
Vendored
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect enum class Mode {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect enum class Mode {
|
||||||
Throughput, AverageTime
|
Throughput, AverageTime
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -13,7 +13,7 @@ expect class ViaTypealias<@Ann A>
|
|||||||
|
|
||||||
expect class TypealiasParamNotAccepted<@Ann A>
|
expect class TypealiasParamNotAccepted<@Ann A>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun <@Ann A, @Ann B> withIncompatibility()<!>
|
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun <@Ann A, @Ann B> withIncompatibility()<!>
|
||||||
|
|
||||||
// MODULE: m1-jvm()()(m1-common)
|
// MODULE: m1-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+3
-3
@@ -19,9 +19,9 @@ interface I2
|
|||||||
|
|
||||||
expect fun <T> severalBounds() where T : I1, T : @Ann I2
|
expect fun <T> severalBounds() where T : I1, T : @Ann I2
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun <T> severalBoundsDifferentOrder() where T : I2, T : @Ann I1<!>
|
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun <T> severalBoundsDifferentOrder() where T : I2, T : @Ann I1<!>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun <T> lessTypeParamBoundsOnActual() where T : I1, T : @Ann I2<!>
|
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun <T> lessTypeParamBoundsOnActual() where T : I1, T : @Ann I2<!>
|
||||||
|
|
||||||
expect fun @Ann Any.onReceiver()
|
expect fun @Ann Any.onReceiver()
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ expect fun qualifierPartsMatching(arg: WithNested<String>.Nested<@Ann String>)
|
|||||||
|
|
||||||
expect fun qualifierPartsNonMatching(arg: WithNested<String>.Nested<@Ann String>)
|
expect fun qualifierPartsNonMatching(arg: WithNested<String>.Nested<@Ann String>)
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun funTypeVsUserType(arg: () -> @Ann String)<!>
|
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun funTypeVsUserType(arg: () -> @Ann String)<!>
|
||||||
|
|
||||||
expect fun funcTypeReturnType(arg: () -> @Ann Any)
|
expect fun funcTypeReturnType(arg: () -> @Ann Any)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
@Target(AnnotationTarget.TYPE)
|
@Target(AnnotationTarget.TYPE)
|
||||||
annotation class Ann
|
annotation class Ann
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun <T : @Ann Any> foo()<!>
|
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun <T : @Ann Any> foo()<!>
|
||||||
|
|
||||||
// MODULE: m1-jvm()()(m1-common)
|
// MODULE: m1-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
Vendored
+1
-1
@@ -7,7 +7,7 @@ expect fun inMethod(@Ann arg: String)
|
|||||||
|
|
||||||
expect class InConstructor(@Ann arg: String)
|
expect class InConstructor(@Ann arg: String)
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun withIncopatibility(@Ann p1: String, @Ann p2: String)<!>
|
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun withIncopatibility(@Ann p1: String, @Ann p2: String)<!>
|
||||||
|
|
||||||
// MODULE: m1-jvm()()(m1-common)
|
// MODULE: m1-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+2
-2
@@ -2,10 +2,10 @@
|
|||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
annotation class Ann
|
annotation class Ann
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>@Ann
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>@Ann
|
||||||
expect inline fun hasWeakIncompatibility()<!>
|
expect inline fun hasWeakIncompatibility()<!>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>@Ann
|
<!EXPECT_ACTUAL_MISMATCH{JVM}, EXPECT_ACTUAL_MISMATCH{JVM}!>@Ann
|
||||||
expect fun hasStrongIncompatibility(arg: Int)<!>
|
expect fun hasStrongIncompatibility(arg: Int)<!>
|
||||||
|
|
||||||
expect fun hasStrongIncompatibility(arg: Double)
|
expect fun hasStrongIncompatibility(arg: Double)
|
||||||
|
|||||||
+8
-8
@@ -2,27 +2,27 @@
|
|||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
expect class E01
|
expect class E01
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E02()<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E02()<!>
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class E03<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class E03<!>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E04 {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E04 {
|
||||||
constructor()
|
constructor()
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E05(e: E01)<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E05(e: E01)<!>
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E06 {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E06 {
|
||||||
constructor(e: E02)
|
constructor(e: E02)
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect interface I01<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect interface I01<!>
|
||||||
|
|
||||||
expect class M01 {
|
expect class M01 {
|
||||||
fun foo()
|
fun foo()
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect enum class ENUM01<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect enum class ENUM01<!>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect annotation class ANNO01<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect annotation class ANNO01<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+8
-8
@@ -2,27 +2,27 @@
|
|||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
expect class E01
|
expect class E01
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E02()<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E02()<!>
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class E03<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class E03<!>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E04 {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E04 {
|
||||||
constructor()
|
constructor()
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E05(e: E01)<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E05(e: E01)<!>
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class E06 {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class E06 {
|
||||||
constructor(e: E02)
|
constructor(e: E02)
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect interface I01<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect interface I01<!>
|
||||||
|
|
||||||
expect class M01 {
|
expect class M01 {
|
||||||
fun foo()
|
fun foo()
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect enum class ENUM01<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect enum class ENUM01<!>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect annotation class ANNO01<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect annotation class ANNO01<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class Foo {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class Foo {
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>fun foo(param: Int = 1)<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>fun foo(param: Int = 1)<!>
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class Foo {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class Foo {
|
||||||
fun foo(param: Int = 1)
|
fun foo(param: Int = 1)
|
||||||
<!NO_ACTUAL_FOR_EXPECT{JVM}!>fun missingOnActual()<!>
|
<!NO_ACTUAL_FOR_EXPECT{JVM}!>fun missingOnActual()<!>
|
||||||
}<!>
|
}<!>
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ expect class WithDefaultArgFromSuper : I {
|
|||||||
override fun methodWithDefaultArg(s: String)
|
override fun methodWithDefaultArg(s: String)
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class WithIncompatibility {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class WithIncompatibility {
|
||||||
fun foo(p: String = "common")
|
fun foo(p: String = "common")
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class DefaultArgsInNestedClass {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class DefaultArgsInNestedClass {
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>annotation class Nested<!INCOMPATIBLE_MATCHING{JVM}!>(val p: String = "")<!><!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>annotation class Nested<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>(val p: String = "")<!><!>
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
|
|||||||
+3
-3
@@ -1,13 +1,13 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
// TODO: .fir.kt version is just a stub.
|
// TODO: .fir.kt version is just a stub.
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect interface My {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect interface My {
|
||||||
open fun openFunPositive()
|
open fun openFunPositive()
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>open fun openFunNegative()<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>open fun openFunNegative()<!>
|
||||||
abstract fun abstractFun()
|
abstract fun abstractFun()
|
||||||
|
|
||||||
open val openValPositive: Int
|
open val openValPositive: Int
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>open val openValNegative: Int<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>open val openValNegative: Int<!>
|
||||||
abstract val abstractVal: Int
|
abstract val abstractVal: Int
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
interface A
|
interface A
|
||||||
interface B
|
interface B
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun <T> List<T>.foo() where T : A, T : B<!>
|
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun <T> List<T>.foo() where T : A, T : B<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ expect annotation class Foo3
|
|||||||
expect annotation class Foo4
|
expect annotation class Foo4
|
||||||
expect annotation class Foo5()
|
expect annotation class Foo5()
|
||||||
expect annotation class Foo6()
|
expect annotation class Foo6()
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect annotation class Foo7<!INCOMPATIBLE_MATCHING{JVM}!>()<!><!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect annotation class Foo7<!EXPECT_ACTUAL_MISMATCH{JVM}!>()<!><!>
|
||||||
|
|
||||||
@<!UNRESOLVED_REFERENCE!>Foo1<!>
|
@<!UNRESOLVED_REFERENCE!>Foo1<!>
|
||||||
fun foo() {}
|
fun foo() {}
|
||||||
|
|||||||
+3
-3
@@ -5,9 +5,9 @@ expect class Foo1
|
|||||||
expect class Foo2
|
expect class Foo2
|
||||||
expect class Foo3
|
expect class Foo3
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class Bar1<!INCOMPATIBLE_MATCHING{JVM}!>()<!><!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class Bar1<!EXPECT_ACTUAL_MISMATCH{JVM}!>()<!><!>
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class Bar2<!INCOMPATIBLE_MATCHING{JVM}!>()<!><!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class Bar2<!EXPECT_ACTUAL_MISMATCH{JVM}!>()<!><!>
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class Bar3<!INCOMPATIBLE_MATCHING{JVM}!>()<!><!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class Bar3<!EXPECT_ACTUAL_MISMATCH{JVM}!>()<!><!>
|
||||||
expect class Bar4()
|
expect class Bar4()
|
||||||
expect class Bar5()
|
expect class Bar5()
|
||||||
expect class Bar6()
|
expect class Bar6()
|
||||||
|
|||||||
compiler/testData/diagnostics/tests/multiplatform/headerClass/equalsOverrideInActualInterface.fir.kt
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect interface Base<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect interface Base<!>
|
||||||
|
|
||||||
// MODULE: m1-jvm()()(m1-common)
|
// MODULE: m1-jvm()()(m1-common)
|
||||||
actual interface Base {
|
actual interface Base {
|
||||||
|
|||||||
+3
-3
@@ -3,12 +3,12 @@
|
|||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
expect fun foo1(x: Int)
|
expect fun foo1(x: Int)
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>expect fun foo2(x: Int)<!>
|
<!EXPECT_ACTUAL_MISMATCH{JVM}, EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun foo2(x: Int)<!>
|
||||||
|
|
||||||
expect class NoArgConstructor()
|
expect class NoArgConstructor()
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun foo3(): Int<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect fun foo3(): Int<!>
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun foo4(): Int<!>
|
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun foo4(): Int<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -5,7 +5,7 @@ expect fun interface F1 {
|
|||||||
fun run()
|
fun run()
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun interface F2 {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect fun interface F2 {
|
||||||
fun run()
|
fun run()
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ expect fun interface F5 {
|
|||||||
fun run()
|
fun run()
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun interface F6 {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect fun interface F6 {
|
||||||
fun run()
|
fun run()
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
-2
@@ -3,8 +3,8 @@
|
|||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
expect class C1
|
expect class C1
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect interface C2<A><!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect interface C2<A><!>
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect interface C3<B><!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect interface C3<B><!>
|
||||||
expect interface C4<D, E>
|
expect interface C4<D, E>
|
||||||
expect interface C5<F, G>
|
expect interface C5<F, G>
|
||||||
expect interface C6<H>
|
expect interface C6<H>
|
||||||
|
|||||||
+5
-5
@@ -2,19 +2,19 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class Container {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Container {
|
||||||
fun publicFun()
|
fun publicFun()
|
||||||
|
|
||||||
internal fun internalFun1()
|
internal fun internalFun1()
|
||||||
internal fun internalFun2()
|
internal fun internalFun2()
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>internal fun internalFun3()<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>internal fun internalFun3()<!>
|
||||||
|
|
||||||
protected fun protectedFun1()
|
protected fun protectedFun1()
|
||||||
protected fun protectedFun2()
|
protected fun protectedFun2()
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>protected fun protectedFun3()<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>protected fun protectedFun3()<!>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>open internal fun openInternalFun()<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>open internal fun openInternalFun()<!>
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>open fun openPublicFun()<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>open fun openPublicFun()<!>
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class Container {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class Container {
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>internal open fun internalFun()<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>internal open fun internalFun()<!>
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
|
|||||||
Vendored
+1
-1
@@ -14,7 +14,7 @@ expect class C {
|
|||||||
<!WRONG_MODIFIER_TARGET!>expect<!> inner class I
|
<!WRONG_MODIFIER_TARGET!>expect<!> inner class I
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class D {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class D {
|
||||||
<!NO_ACTUAL_FOR_EXPECT{JVM}!>class N<!>
|
<!NO_ACTUAL_FOR_EXPECT{JVM}!>class N<!>
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -1,9 +1,9 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class Foo {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class Foo {
|
||||||
fun bar(): String
|
fun bar(): String
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>fun bas(f: Int)<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>fun bas(f: Int)<!>
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ interface KotlinXStringDemoInterface {
|
|||||||
val value: String
|
val value: String
|
||||||
}
|
}
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JS}!>expect fun StringDemoInterface.plusK(): String<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JS}!>expect fun StringDemoInterface.plusK(): String<!>
|
||||||
|
|
||||||
// MODULE: js()()(common, intermediate)
|
// MODULE: js()()(common, intermediate)
|
||||||
// TARGET_PLATFORM: JS
|
// TARGET_PLATFORM: JS
|
||||||
@@ -34,7 +34,7 @@ interface KotlinXStringDemoInterface {
|
|||||||
// FILE: StringDemoInterface.kt
|
// FILE: StringDemoInterface.kt
|
||||||
actual typealias StringDemoInterface = KotlinXStringDemoInterface
|
actual typealias StringDemoInterface = KotlinXStringDemoInterface
|
||||||
|
|
||||||
actual fun StringDemoIn<!INCOMPATIBLE_MATCHING!>terface.<!ACTUAL_WITHOUT_EXPECT("actual fun StringDemoInterface.plusK(): <ERROR TYPE REF: Unresolved name: value>; The following declaration is incompatible: expect fun StringDemoInterface.plusK(): String")!>plusK<!>() = <!EXPECT_CLASS_AS_FUNCTION!>StringValue<!>(value).plus("K")<!>.<!UNRESOLVED_REFERENCE!>value<!>
|
actual fun StringDemoIn<!EXPECT_ACTUAL_INCOMPATIBILITY!>terface.<!ACTUAL_WITHOUT_EXPECT("actual fun StringDemoInterface.plusK(): <ERROR TYPE REF: Unresolved name: value>; The following declaration is incompatible: expect fun StringDemoInterface.plusK(): String")!>plusK<!>() = <!EXPECT_CLASS_AS_FUNCTION!>StringValue<!>(value).plus("K")<!>.<!UNRESOLVED_REFERENCE!>value<!>
|
||||||
|
|
||||||
// FILE: main.kt
|
// FILE: main.kt
|
||||||
class StringDemo(override val value: String) : StringDemoInterface
|
class StringDemo(override val value: String) : StringDemoInterface
|
||||||
|
|||||||
Vendored
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
// K2: false positve INCOMPATIBLE_MATCHING: KT-60155
|
// K2: false positve INCOMPATIBLE_MATCHING: KT-60155
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}, INCOMPATIBLE_MATCHING{JVM}!>public expect abstract class AbstractMutableMap<K, V> : MutableMap<K, V> {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>public expect abstract class AbstractMutableMap<K, V> : MutableMap<K, V> {
|
||||||
override val values: MutableCollection<V>
|
override val values: MutableCollection<V>
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class <!PACKAGE_OR_CLASSIFIER_REDECLARATION!>Foo<!>(i: Int) {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class <!PACKAGE_OR_CLASSIFIER_REDECLARATION!>Foo<!>(i: Int) {
|
||||||
fun foo()
|
fun foo()
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect class SomeClass<T> {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect class SomeClass<T> {
|
||||||
fun foo()
|
fun foo()
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
interface A
|
interface A
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun <T : A> foo(t: T): String<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect fun <T : A> foo(t: T): String<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>inline expect fun inlineFun()<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>inline expect fun inlineFun()<!>
|
||||||
expect fun nonInlineFun()
|
expect fun nonInlineFun()
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
|
|||||||
Vendored
+4
-4
@@ -3,15 +3,15 @@
|
|||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
expect fun f1(s: () -> String)
|
expect fun f1(s: () -> String)
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect inline fun f2(s: () -> String)<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect inline fun f2(s: () -> String)<!>
|
||||||
expect inline fun f3(noinline s: () -> String)
|
expect inline fun f3(noinline s: () -> String)
|
||||||
|
|
||||||
expect fun f4(s: () -> String)
|
expect fun f4(s: () -> String)
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect inline fun f5(s: () -> String)<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect inline fun f5(s: () -> String)<!>
|
||||||
expect inline fun f6(crossinline s: () -> String)
|
expect inline fun f6(crossinline s: () -> String)
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun f7(x: Any)<!>
|
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun f7(x: Any)<!>
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect fun f8(vararg x: Any)<!>
|
<!EXPECT_ACTUAL_MISMATCH{JVM}!>expect fun f8(vararg x: Any)<!>
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: m2-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E01<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E01<!>
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E02<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E02<!>
|
||||||
|
|
||||||
// MODULE: m1-jvm()()(m1-common)
|
// MODULE: m1-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E01<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E01<!>
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E02<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}, NO_ACTUAL_FOR_EXPECT{JVM}!>expect class E02<!>
|
||||||
|
|
||||||
// MODULE: m1-jvm()()(m1-common)
|
// MODULE: m1-jvm()()(m1-common)
|
||||||
// FILE: jvm.kt
|
// FILE: jvm.kt
|
||||||
|
|||||||
+6
-6
@@ -1,19 +1,19 @@
|
|||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect var v1: Boolean<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect var v1: Boolean<!>
|
||||||
|
|
||||||
expect var v2: Boolean
|
expect var v2: Boolean
|
||||||
internal set
|
internal set
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect var v3: Boolean
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect var v3: Boolean
|
||||||
internal set<!>
|
internal set<!>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class C {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class C {
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>var foo: Boolean<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>var foo: Boolean<!>
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>expect open class C2 {
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect open class C2 {
|
||||||
<!INCOMPATIBLE_MATCHING{JVM}!>var foo: Boolean<!>
|
<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>var foo: Boolean<!>
|
||||||
}<!>
|
}<!>
|
||||||
|
|
||||||
// MODULE: m1-jvm()()(m1-common)
|
// MODULE: m1-jvm()()(m1-common)
|
||||||
|
|||||||
+1
-1
@@ -5,6 +5,6 @@ Output:
|
|||||||
-- JVM --
|
-- JVM --
|
||||||
Exit code: COMPILATION_ERROR
|
Exit code: COMPILATION_ERROR
|
||||||
Output:
|
Output:
|
||||||
compiler/testData/multiplatform/weakIncompatibilityWithoutActualModifier/common.kt:1:1: error: expect declaration `Foo` doesn't match actual `Foo` because class kinds are different (class, interface, object, enum, annotation)
|
compiler/testData/multiplatform/weakIncompatibilityWithoutActualModifier/common.kt:1:1: error: expect declaration `Foo` is incompatible with actual `Foo` because class kinds are different (class, interface, object, enum, annotation)
|
||||||
expect class Foo
|
expect class Foo
|
||||||
^
|
^
|
||||||
|
|||||||
Reference in New Issue
Block a user