Merge together MultiplatformHighlighting and MultiplatformAnalysis tests

Basically, the former uses an old quickly-scrapped infrastructure,
which were not applicable for HMPP, so  the latter tests were written.

So, both check for one and the same thing (highlighting in MPP projects),
but MultiplatformAnalysisTest is more modern,
and has a lot of inconvenient stuff in MultiplatformHighlighting fixed
^KT-43116 Fixed
This commit is contained in:
Alexander Dudinsky
2020-12-22 12:29:43 +03:00
parent 73576c80e4
commit 10a5727260
123 changed files with 293 additions and 443 deletions
Generated
+1
View File
@@ -32,5 +32,6 @@
</component>
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$/kotlin-ultimate" vcs="Git" />
</component>
</project>
@@ -1,47 +0,0 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle
import org.jetbrains.kotlin.idea.codeInsight.gradle.MultiplePluginVersionGradleImportingTestCase
import org.jetbrains.kotlin.idea.codeInsight.gradle.mppImportTestMinVersionForMaster
import org.jetbrains.plugins.gradle.tooling.annotation.PluginTargetVersions
import org.junit.Test
class ImportAndCheckHighlighting : MultiplePluginVersionGradleImportingTestCase() {
@Test
@PluginTargetVersions(pluginVersion = "1.3.40+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
fun testMultiplatformLibrary() {
importAndCheckHighlighting()
}
@Test
@PluginTargetVersions(pluginVersion = "1.3.40+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
fun testUnresolvedInMultiplatformLibrary() {
importAndCheckHighlighting(false, false)
}
private fun importAndCheckHighlighting(testLineMarkers: Boolean = true, checkWarnings: Boolean = true) {
val files = configureByFiles()
importProject(skipIndexing = false)
val project = myTestFixture.project
checkFiles(
files.filter { it.extension == "kt" || it.extension == "java" },
project,
object : GradleDaemonAnalyzerTestCase(
testLineMarkers = testLineMarkers,
checkWarnings = checkWarnings,
checkInfos = false,
rootDisposable = testRootDisposable
) {}
)
}
override fun testDataDirName(): String {
return "importAndCheckHighlighting"
}
}
@@ -1,59 +0,0 @@
plugins {
id 'org.jetbrains.kotlin.multiplatform' version '{{kotlin_plugin_version}}'
}
repositories {
{{kotlin_plugin_repositories}}
}
group 'com.example'
version '0.0.1'
apply plugin: 'maven-publish'
kotlin {
jvm()
js {
browser {
}
nodejs {
}
}
sourceSets {
commonMain {
dependencies {
implementation kotlin('stdlib-common')
}
}
commonTest {
dependencies {
implementation kotlin('test-common')
implementation kotlin('test-annotations-common')
}
}
jvmMain {
dependencies {
implementation kotlin('stdlib-jdk8')
}
}
jvmTest {
dependencies {
implementation kotlin('test')
implementation kotlin('test-junit')
}
}
jsMain {
dependencies {
implementation kotlin('stdlib-js')
}
}
jsTest {
dependencies {
implementation kotlin('test-js')
}
}
mingwMain {
}
mingwTest {
}
}
}
@@ -1 +0,0 @@
kotlin.code.style=official
@@ -1,9 +0,0 @@
pluginManagement {
repositories {
{{kotlin_plugin_repositories}}
}
}
rootProject.name = 'mppLibrary'
enableFeaturePreview('GRADLE_METADATA')
@@ -1,11 +0,0 @@
package sample
expect class <lineMarker descr="Has actuals in JS, JVM">Sample</lineMarker>() {
fun <lineMarker descr="Has actuals in JS, JVM">checkMe</lineMarker>(): Int
}
expect object <lineMarker descr="Has actuals in JS, JVM">Platform</lineMarker> {
val <lineMarker descr="Has actuals in JS, JVM">name</lineMarker>: String
}
fun hello(): String = "Hello from ${Platform.name}"
@@ -1,11 +0,0 @@
package sample
import kotlin.test.Test
import kotlin.test.assertTrue
class <lineMarker descr="Run Test">SampleTests</lineMarker> {
@Test
fun <lineMarker descr="Run Test">testMe</lineMarker>() {
assertTrue(Sample().checkMe() > 0)
}
}
@@ -1,9 +0,0 @@
package sample
actual class <lineMarker descr="Has declaration in common module">Sample</lineMarker> {
actual fun <lineMarker descr="Has declaration in common module">checkMe</lineMarker>() = 12
}
actual object <lineMarker descr="Has declaration in common module">Platform</lineMarker> {
actual val <lineMarker descr="Has declaration in common module">name</lineMarker>: String = "JS"
}
@@ -1,9 +0,0 @@
package sample
actual class <lineMarker descr="Has declaration in common module">Sample</lineMarker> {
actual fun <lineMarker descr="Has declaration in common module">checkMe</lineMarker>() = 42
}
actual object <lineMarker descr="Has declaration in common module">Platform</lineMarker> {
actual val <lineMarker descr="Has declaration in common module">name</lineMarker>: String = "JVM"
}
@@ -1,11 +0,0 @@
package sample
import kotlin.test.Test
import kotlin.test.assertTrue
class <lineMarker descr="Run Test">SampleTestsJVM</lineMarker> {
@Test
fun <lineMarker descr="Run Test">testHello</lineMarker>() {
assertTrue("JVM" in hello())
}
}
@@ -1,59 +0,0 @@
plugins {
id 'org.jetbrains.kotlin.multiplatform' version '{{kotlin_plugin_version}}'
}
repositories {
{{kotlin_plugin_repositories}}
}
group 'com.example'
version '0.0.1'
apply plugin: 'maven-publish'
kotlin {
jvm()
js {
browser {
}
nodejs {
}
}
sourceSets {
commonMain {
dependencies {
implementation kotlin('stdlib-common')
}
}
commonTest {
dependencies {
implementation kotlin('test-common')
implementation kotlin('test-annotations-common')
}
}
jvmMain {
dependencies {
implementation kotlin('stdlib-jdk8')
}
}
jvmTest {
dependencies {
implementation kotlin('test')
implementation kotlin('test-junit')
}
}
jsMain {
dependencies {
implementation kotlin('stdlib-js')
}
}
jsTest {
dependencies {
implementation kotlin('test-js')
}
}
mingwMain {
}
mingwTest {
}
}
}
@@ -1 +0,0 @@
kotlin.code.style=official
@@ -1,9 +0,0 @@
pluginManagement {
repositories {
{{kotlin_plugin_repositories}}
}
}
rootProject.name = 'mppLibrary'
enableFeaturePreview('GRADLE_METADATA')
@@ -1,4 +0,0 @@
package sample
fun common(): Boolean {
return <error descr="[TYPE_MISMATCH] Type mismatch: inferred type is String but Boolean was expected" textAttributesKey="ERRORS_ATTRIBUTES">""</error>
}
@@ -1,6 +0,0 @@
package sample
fun jvm() {
println(common())
println(<error descr="[UNRESOLVED_REFERENCE] Unresolved reference: js" textAttributesKey="WRONG_REFERENCES_ATTRIBUTES">js</error>())
}
@@ -2,7 +2,7 @@ package sample
expect fun <!LINE_MARKER("descr='Has actuals in common'")!>sameFile<!>()
actual fun <!LINE_MARKER("descr='null'")!>sameFile<!>() = Unit
actual fun <!LINE_MARKER!>sameFile<!>() = Unit
expect fun <!LINE_MARKER("descr='Has actuals in common'")!>sameModule<!>()
@@ -1,9 +1,9 @@
@file:Suppress("UNUSED_PARAMETER")
expect open class MyCancelException : MyIllegalStateException
expect open class <!LINE_MARKER("descr='Has actuals in JVM'")!>MyCancelException<!> : MyIllegalStateException
fun cancel(cause: MyCancelException) {}
expect open class OtherException : MyIllegalStateException
expect open class <!LINE_MARKER("descr='Has actuals in JVM'")!>OtherException<!> : MyIllegalStateException
fun other(cause: OtherException) {}
@@ -1,3 +1,3 @@
public expect open class MyException
public expect open class <!LINE_MARKER("descr='Is subclassed by MyCancelException [common] MyIllegalStateException [commonLibrary] OtherException [common]'"), LINE_MARKER("descr='Has actuals in JVM'")!>MyException<!>
public expect open class MyIllegalStateException : MyException
public expect open class <!LINE_MARKER("descr='Is subclassed by MyCancelException [common] OtherException [common]'"), LINE_MARKER("descr='Has actuals in JVM'")!>MyIllegalStateException<!> : MyException
+2 -2
View File
@@ -1,6 +1,6 @@
actual typealias MyCancelException = platform.lib.MyCancellationException
actual typealias <!LINE_MARKER("descr='Has declaration in common module'")!>MyCancelException<!> = platform.lib.MyCancellationException
actual open class OtherException : platform.lib.MyIllegalStateException()
actual open class <!LINE_MARKER("descr='Has declaration in common module'")!>OtherException<!> : platform.lib.MyIllegalStateException()
fun test() {
cancel(MyCancelException()) // TYPE_MISMATCH
@@ -1,3 +1,3 @@
actual typealias MyException = platform.lib.MyException
actual typealias <!LINE_MARKER("descr='Has declaration in common module'")!>MyException<!> = platform.lib.MyException
actual typealias MyIllegalStateException = platform.lib.MyIllegalStateException
actual typealias <!LINE_MARKER("descr='Has declaration in common module'")!>MyIllegalStateException<!> = platform.lib.MyIllegalStateException
@@ -1,7 +1,7 @@
package platform.lib
open class MyException
open class <!LINE_MARKER("descr='Is subclassed by MyCancellationException MyIllegalStateException OtherException [jvm]'")!>MyException<!>
open class MyIllegalStateException : MyException()
open class <!LINE_MARKER("descr='Is subclassed by MyCancellationException OtherException [jvm]'")!>MyIllegalStateException<!> : MyException()
open class MyCancellationException : MyIllegalStateException()
@@ -2,8 +2,8 @@
package sample
expect interface A {
fun common_1_A()
expect interface <!LINE_MARKER("descr='Is subclassed by B [common-1] B [jvm]'"), LINE_MARKER("descr='Has actuals in common'")!>A<!> {
fun <!LINE_MARKER("descr='Has actuals in common'")!>common_1_A<!>()
}
expect interface B : A {
@@ -2,12 +2,12 @@
package sample
expect interface C {
fun common_2_C()
expect interface <!LINE_MARKER("descr='Is subclassed by A [common-2] B [jvm]'"), LINE_MARKER("descr='Has actuals in JVM'")!>C<!> {
fun <!LINE_MARKER("descr='Has actuals in JVM'")!>common_2_C<!>()
}
actual interface A : C {
actual fun common_1_A()
actual interface <!LINE_MARKER("descr='Is implemented by B [jvm]'"), LINE_MARKER("descr='Has declaration in common module'")!>A<!> : C {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>common_1_A<!>()
fun common_2_A()
}
+2 -2
View File
@@ -2,8 +2,8 @@
package sample
actual interface C {
actual fun common_2_C()
actual interface <!LINE_MARKER("descr='Has declaration in common module'")!>C<!> {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>common_2_C<!>()
fun jvm_C()
}
@@ -1,3 +1,3 @@
expect class A {
fun commonMember()
expect class <!LINE_MARKER("descr='Has actuals in JVM'")!>A<!> {
fun <!LINE_MARKER("descr='Has actuals in JVM'")!>commonMember<!>()
}
@@ -1,5 +1,5 @@
actual class A {
actual fun commonMember() { }
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>A<!> {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>commonMember<!>() { }
fun platformMember() { }
}
@@ -1,6 +1,6 @@
// KT-34027
expect interface A<T> {
fun foo(x: T)
expect interface <!LINE_MARKER("descr='Has actuals in JS'")!>A<!><T> {
fun <!LINE_MARKER("descr='Has actuals in JS'")!>foo<!>(x: T)
}
fun bar(): A<String> = null!!
@@ -1,5 +1,5 @@
actual interface A<T> {
actual fun foo(x: T)
actual interface <!LINE_MARKER("descr='Has declaration in common module'")!>A<!><T> {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>foo<!>(x: T)
fun foo(x: String)
}
@@ -1,6 +1,6 @@
package sample
fun main() {
fun <!LINE_MARKER!>main<!>() {
ActualizedInLeft()
ActualizedInRight()
}
@@ -1,3 +1,3 @@
package sample
actual class ActualizedInLeft
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>ActualizedInLeft<!>
@@ -1,3 +1,3 @@
package sample
actual class ActualizedInRight
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>ActualizedInRight<!>
@@ -1,4 +1,4 @@
package sample
expect class ActualizedInLeft
expect class ActualizedInRight
expect class <!LINE_MARKER("descr='Has actuals in common'")!>ActualizedInLeft<!>
expect class <!LINE_MARKER("descr='Has actuals in common'")!>ActualizedInRight<!>
@@ -5,7 +5,7 @@ actual class A {
fun fromBottom(): Int = 0
}
fun main() {
fun <!LINE_MARKER!>main<!>() {
A().foo()
// Any behaviour is acceptable, as the code is erroneous.
@@ -1,6 +1,6 @@
package sample
actual class A /* Left */ {
actual fun foo(): Int = 42
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>A<!> /* Left */ {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>foo<!>(): Int = 42
fun fromLeft(): String = ""
}
@@ -2,6 +2,6 @@
package sample
expect class <!AMBIGUOUS_ACTUALS("Class 'A'; bottom, left")!>A<!> {
fun <!AMBIGUOUS_ACTUALS("Function 'foo'; bottom, left")!>foo<!>(): Int
expect class <!AMBIGUOUS_ACTUALS("Class 'A'; bottom, left"), LINE_MARKER("descr='Has actuals in common'")!>A<!> {
fun <!AMBIGUOUS_ACTUALS("Function 'foo'; bottom, left"), LINE_MARKER("descr='Has actuals in common'")!>foo<!>(): Int
}
@@ -4,8 +4,8 @@ package sample
// --------------------------------------------
expect interface A {
fun foo()
expect interface <!LINE_MARKER("descr='Is subclassed by B'"), LINE_MARKER("descr='Has actuals in JVM (2 modules)'")!>A<!> {
fun <!LINE_MARKER("descr='Has actuals in JVM (2 modules)'")!>foo<!>()
}
fun take_A_common_1(x: A) {
@@ -2,8 +2,8 @@
package sample
actual interface A {
actual fun foo()
actual interface <!LINE_MARKER("descr='Is implemented by B'"), LINE_MARKER("descr='Has declaration in common module'")!>A<!> {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>foo<!>()
fun bar()
}
@@ -2,8 +2,8 @@
package sample
actual interface A {
actual fun foo()
actual interface <!LINE_MARKER("descr='Is implemented by B'"), LINE_MARKER("descr='Has declaration in common module'")!>A<!> {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>foo<!>()
fun baz()
}
@@ -6,8 +6,8 @@ interface BB
interface CC
interface DD
expect interface A {
fun foo_A()
expect interface <!LINE_MARKER("descr='Is subclassed by B [common-2-1] C [common-2-2] D'"), LINE_MARKER("descr='Has actuals in common'")!>A<!> {
fun <!LINE_MARKER("descr='Has actuals in common'")!>foo_A<!>()
}
fun take0(x: A): AA = null!!
@@ -1,7 +1,7 @@
@file:Suppress("UNUSED_PARAMETER")
package sample
expect interface B : A {
expect interface <!LINE_MARKER("descr='Has actuals in JVM'")!>B<!> : A {
fun foo_B_1()
}
@@ -1,7 +1,7 @@
@file:Suppress("UNUSED_PARAMETER")
package sample
expect interface C : A {
expect interface <!LINE_MARKER("descr='Has actuals in JVM'")!>C<!> : A {
fun foo_C_1()
}
@@ -1,8 +1,8 @@
@file:Suppress("UNUSED_PARAMETER")
package sample
actual interface A {
actual fun foo_A()
actual interface <!LINE_MARKER("descr='Is implemented by D'"), LINE_MARKER("descr='Has declaration in common module'")!>A<!> {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>foo_A<!>()
fun foo_A_3()
}
@@ -9,8 +9,8 @@ interface D : A {
fun foo_D()
}
actual typealias B = D
actual typealias C = D
actual typealias <!LINE_MARKER("descr='Has declaration in common module'")!>B<!> = D
actual typealias <!LINE_MARKER("descr='Has declaration in common module'")!>C<!> = D
fun take0(x: D): Unit = null!!
@@ -1,6 +1,6 @@
package sample
fun main() {
fun <!LINE_MARKER!>main<!>() {
A().foo()
// fromLeft should be resolved, because 'left' comes first in dependencies order!
A().fromLeft()
@@ -1,6 +1,6 @@
package sample
actual class A /* Left */ {
actual fun foo(): Int = 42
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>A<!> /* Left */ {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>foo<!>(): Int = 42
fun fromLeft(): String = ""
}
@@ -1,5 +1,5 @@
package sample
actual class A /* Right */ {
actual fun foo(): Int = 100500
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>A<!> /* Right */ {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>foo<!>(): Int = 100500
}
@@ -1,5 +1,5 @@
package sample
expect class A {
fun foo(): Int
expect class <!LINE_MARKER("descr='Has actuals in common (2 modules)'")!>A<!> {
fun <!LINE_MARKER("descr='Has actuals in common (2 modules)'")!>foo<!>(): Int
}
@@ -1 +1 @@
expect class A
expect class <!LINE_MARKER("descr='Has actuals in JS, JVM'")!>A<!>
@@ -1,4 +1,4 @@
actual class A
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>A<!>
// Error: ACTUAL_WITHOUT_EXPECT, becuase we shouldn't see expects through usual dependencies
actual class <!ACTUAL_WITHOUT_EXPECT!>B<!>
@@ -1,4 +1,4 @@
actual class A
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>A<!>
// Error: ACTUAL_WITHOUT_EXPECT, becuase we shouldn't see expects through usual dependencies
actual class <!ACTUAL_WITHOUT_EXPECT!>B<!>
@@ -1,3 +1,3 @@
package foo
actual class A
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>A<!>
@@ -1,3 +1,3 @@
package foo
expect class <!AMBIGUOUS_ACTUALS!>A<!>
expect class <!AMBIGUOUS_ACTUALS, LINE_MARKER("descr='Has actuals in common'")!>A<!>
@@ -1,6 +1,6 @@
package foo
actual class ActualInMiddleCompatibleInBottom
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>ActualInMiddleCompatibleInBottom<!>
class <!ACTUAL_MISSING!>CompatibleInMiddleActualInBottom<!>
class <!ACTUAL_MISSING!>CompatibleInMiddleAndBottom<!>
@@ -2,7 +2,7 @@
package foo
expect class <!AMBIGUOUS_ACTUALS("Class 'ActualInMiddleCompatibleInBottom'; bottom, middle")!>ActualInMiddleCompatibleInBottom<!>
expect class <!AMBIGUOUS_ACTUALS("Class 'ActualInMiddleCompatibleInBottom'; bottom, middle"), LINE_MARKER("descr='Has actuals in common'")!>ActualInMiddleCompatibleInBottom<!>
expect class <!AMBIGUOUS_ACTUALS("Class 'CompatibleInMiddleActualInBottom'; bottom, middle")!>CompatibleInMiddleActualInBottom<!>
expect class <!AMBIGUOUS_ACTUALS("Class 'CompatibleInMiddleAndBottom'; bottom, middle")!>CompatibleInMiddleAndBottom<!>
@@ -1,3 +1,3 @@
package foo
actual class A
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>A<!>
@@ -2,4 +2,4 @@
package foo
expect class <!AMBIGUOUS_ACTUALS("Class 'A'; bottom, middle")!>A<!>
expect class <!AMBIGUOUS_ACTUALS("Class 'A'; bottom, middle"), LINE_MARKER("descr='Has actuals in common'")!>A<!>
@@ -1,3 +1,3 @@
package foo
actual fun foo(): Int = 42
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>foo<!>(): Int = 42
@@ -1,3 +1,3 @@
package foo
expect fun foo(): Int
expect fun <!LINE_MARKER("descr='Has actuals in common'")!>foo<!>(): Int
@@ -1,3 +1,3 @@
// !RENDER_DIAGNOSTICS_MESSAGES
actual class <!AMBIGUOUS_EXPECTS("Actual class 'A'; left, right")!>A<!>
actual class <!AMBIGUOUS_EXPECTS("Actual class 'A'; left, right"), LINE_MARKER("descr='Has declaration in common module'")!>A<!>
@@ -1 +1 @@
expect class A
expect class <!LINE_MARKER("descr='Has actuals in JVM'")!>A<!>
@@ -1 +1 @@
expect class A
expect class <!LINE_MARKER("descr='Has actuals in JVM'")!>A<!>
@@ -1,3 +1,3 @@
// Note that here we have no ambiguity, becuase we don't consider
// declarations without 'expect' as potential weakly-compatible 'expect'-counterpart
actual class A
actual class <!LINE_MARKER("descr='Has declaration in common module'"), LINE_MARKER("descr='Has declaration in common module'")!>A<!>
@@ -1 +1 @@
expect class A
expect class <!LINE_MARKER("descr='Has actuals in JVM'")!>A<!>
@@ -1 +1 @@
actual fun foo(): Int = 42
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>foo<!>(): Int = 42
@@ -1 +1 @@
expect fun foo(): Int
expect fun <!LINE_MARKER("descr='Has actuals in JVM'")!>foo<!>(): Int
@@ -1 +1 @@
expect fun foo<!NO_ACTUAL_FOR_EXPECT!>(x: Int)<!>: Int
expect fun <!LINE_MARKER("descr='Has actuals in JVM'")!>foo<!><!NO_ACTUAL_FOR_EXPECT!>(x: Int)<!>: Int
@@ -1,3 +1,3 @@
expect class E {
fun commonMember()
expect class <!LINE_MARKER("descr='Has actuals in JVM'")!>E<!> {
fun <!LINE_MARKER("descr='Has actuals in JVM'")!>commonMember<!>()
}
+2 -2
View File
@@ -1,5 +1,5 @@
actual class E {
actual fun commonMember() {}
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>E<!> {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>commonMember<!>() {}
fun platformMember() {}
}
@@ -1,6 +1,6 @@
package foo
expect class ExpectInCommonActualInMiddle
expect class <!LINE_MARKER("descr='Has actuals in common'")!>ExpectInCommonActualInMiddle<!>
expect class ExpectInCommonActualInPlatforms
expect class <!NO_ACTUAL_FOR_EXPECT, NO_ACTUAL_FOR_EXPECT!>ExpectInCommonWithoutActual<!>
@@ -2,9 +2,9 @@ package foo
actual class ExpectInCommonActualInPlatforms
actual class ExpectInMiddleActualInPlatforms
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>ExpectInMiddleActualInPlatforms<!>
expect class <!NO_ACTUAL_FOR_EXPECT!>ExpectInJsWithoutActual<!>
expect class ExpectInJsActualInJs
actual class ExpectInJsActualInJs
expect class <!LINE_MARKER("descr='Has actuals in JS'")!>ExpectInJsActualInJs<!>
actual class <!LINE_MARKER!>ExpectInJsActualInJs<!>
@@ -1,9 +1,9 @@
package foo
actual class ExpectInCommonActualInPlatforms
actual class ExpectInMiddleActualInPlatforms
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>ExpectInMiddleActualInPlatforms<!>
expect class <!NO_ACTUAL_FOR_EXPECT!>ExpectInJvmWithoutActual<!>
expect class ExpectInJvmActualInJvm
actual class ExpectInJvmActualInJvm
expect class <!LINE_MARKER("descr='Has actuals in JVM'")!>ExpectInJvmActualInJvm<!>
actual class <!LINE_MARKER!>ExpectInJvmActualInJvm<!>
@@ -1,7 +1,7 @@
package foo
actual class ExpectInCommonActualInMiddle
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>ExpectInCommonActualInMiddle<!>
expect class ExpectInMiddleActualInPlatforms
expect class <!LINE_MARKER("descr='Has actuals in JVM, JS'")!>ExpectInMiddleActualInPlatforms<!>
expect class <!NO_ACTUAL_FOR_EXPECT, NO_ACTUAL_FOR_EXPECT!>ExpectInMiddleWithoutActual<!>
@@ -1,4 +1,4 @@
package foo
actual class ExpectInCommonActualInJsOnly
actual class ExpectInMiddleActualInJsOnly
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>ExpectInMiddleActualInJsOnly<!>
@@ -1,4 +1,4 @@
package foo
actual class ExpectInCommonActualInJvmOnly
actual class ExpectInMiddleActualInJvmOnly
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>ExpectInMiddleActualInJvmOnly<!>
@@ -1,4 +1,4 @@
package foo
expect class <!NO_ACTUAL_FOR_EXPECT!>ExpectInMiddleActualInJsOnly<!>
expect class <!NO_ACTUAL_FOR_EXPECT!>ExpectInMiddleActualInJvmOnly<!>
expect class <!LINE_MARKER("descr='Has actuals in JS'"), NO_ACTUAL_FOR_EXPECT!>ExpectInMiddleActualInJsOnly<!>
expect class <!LINE_MARKER("descr='Has actuals in JVM'"), NO_ACTUAL_FOR_EXPECT!>ExpectInMiddleActualInJvmOnly<!>
+2 -2
View File
@@ -1,7 +1,7 @@
package sample
expect interface Input
expect interface <!LINE_MARKER("descr='Is subclassed by AbstractInput JSInput'"), LINE_MARKER("descr='Has actuals in JS'")!>Input<!>
abstract class AbstractInput : Input {
abstract class <!LINE_MARKER("descr='Is subclassed by JSInput'")!>AbstractInput<!> : Input {
val head: Int = null!!
}
+3 -3
View File
@@ -1,10 +1,10 @@
package sample
actual interface Input
actual interface <!LINE_MARKER("descr='Has declaration in common module'")!>Input<!>
class JSInput : AbstractInput()
// ------------------------------------
expect class ExpectInJsActualInJs
actual class ExpectInJsActualInJs
expect class <!LINE_MARKER("descr='Has actuals in JS'")!>ExpectInJsActualInJs<!>
actual class <!LINE_MARKER!>ExpectInJsActualInJs<!>
+3 -3
View File
@@ -1,9 +1,9 @@
package base
interface Check {
fun test(): String {
interface <!LINE_MARKER("descr='Is implemented by CheckClass SubCheck SubCheckClass'")!>Check<!> {
fun <!LINE_MARKER("descr='Is overridden in SubCheck'")!>test<!>(): String {
return "fail";
}
}
open class CheckClass : Check
open class <!LINE_MARKER("descr='Is subclassed by SubCheckClass'")!>CheckClass<!> : Check
@@ -1,7 +1,7 @@
import base.*
interface SubCheck : Check {
override fun test(): String {
interface <!LINE_MARKER("descr='Is implemented by SubCheckClass'")!>SubCheck<!> : Check {
override fun <!LINE_MARKER("descr='Overrides function in 'Check''")!>test<!>(): String {
return "OK"
}
}
+1 -1
View File
@@ -2,7 +2,7 @@
package sample
expect interface A
expect interface <!LINE_MARKER("descr='Has actuals in JVM'")!>A<!>
fun useA(block: A.() -> Unit) {}
+1 -1
View File
@@ -1,6 +1,6 @@
package sample
actual interface A {
actual interface <!LINE_MARKER("descr='Has declaration in common module'")!>A<!> {
fun foo()
}
@@ -1,10 +1,10 @@
package sample
expect class A {
fun commonFun()
val x: Int
val y: Double
val z: String
expect class <!LINE_MARKER("descr='Has actuals in JVM'")!>A<!> {
fun <!LINE_MARKER("descr='Has actuals in JVM'")!>commonFun<!>()
val <!LINE_MARKER("descr='Has actuals in JVM'")!>x<!>: Int
val <!LINE_MARKER("descr='Has actuals in JVM'")!>y<!>: Double
val <!LINE_MARKER("descr='Has actuals in JVM'")!>z<!>: String
}
fun getCommonA(): A = null!!
@@ -2,11 +2,11 @@
package sample
actual data class A(actual val x: Int, actual val y: Double, val t: String) {
actual fun commonFun() {}
actual data class <!LINE_MARKER("descr='Has declaration in common module'")!>A<!>(actual val x: Int, actual val y: Double, val t: String) {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>commonFun<!>() {}
fun platformFun() {}
actual val z: String by lazy { "" }
actual val <!LINE_MARKER("descr='Has declaration in common module'")!>z<!>: String by lazy { "" }
operator fun iterator(): Iterator<Int> = null!!
}
@@ -2,12 +2,12 @@
package sample
expect interface A {
expect interface <!LINE_MARKER("descr='Is subclassed by B [common-1] B [common-2] Case_2_3'"), LINE_MARKER("descr='Has actuals in common'")!>A<!> {
fun common_1_A()
}
expect interface B : A {
fun common_1_B()
expect interface <!LINE_MARKER("descr='Is subclassed by Case_2_3'"), LINE_MARKER("descr='Has actuals in common'")!>B<!> : A {
fun <!LINE_MARKER("descr='Has actuals in common'")!>common_1_B<!>()
}
fun getB(): B = null!!
@@ -2,15 +2,15 @@
package sample
expect interface A_Common {
fun common_1_A()
fun common_2_A()
expect interface <!LINE_MARKER("descr='Is subclassed by B [common-2] Case_2_3'"), LINE_MARKER("descr='Has actuals in JVM'")!>A_Common<!> {
fun <!LINE_MARKER("descr='Has actuals in JVM'")!>common_1_A<!>()
fun <!LINE_MARKER("descr='Has actuals in JVM'")!>common_2_A<!>()
}
actual typealias A = A_Common
actual typealias <!LINE_MARKER("descr='Has declaration in common module'")!>A<!> = A_Common
actual interface B : A {
actual fun common_1_B()
actual interface <!LINE_MARKER("descr='Is implemented by Case_2_3'"), LINE_MARKER("descr='Has declaration in common module'")!>B<!> : A {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>common_1_B<!>()
fun common_1_2_B()
}
+3 -3
View File
@@ -1,8 +1,8 @@
package sample
actual interface A_Common {
actual fun common_1_A()
actual fun common_2_A()
actual interface <!LINE_MARKER("descr='Has declaration in common module'")!>A_Common<!> {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>common_1_A<!>()
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>common_2_A<!>()
fun jvm_A()
}
@@ -0,0 +1,11 @@
package sample
expect class <!LINE_MARKER("descr='Has actuals in JVM, JS'")!>Sample<!>() {
fun <!LINE_MARKER("descr='Has actuals in JVM, JS'")!>checkMe<!>(): Int
}
expect object <!LINE_MARKER("descr='Has actuals in JVM, JS'")!>Platform<!> {
val <!LINE_MARKER("descr='Has actuals in JVM, JS'")!>name<!>: String
}
fun hello(): String = "Hello from ${Platform.name}"
@@ -0,0 +1,8 @@
MODULE common { platform=[JVM, JS, Native]; root=common }
MODULE jvm { platform=[JVM]; root=jvm; testRoot=jvmTest}
MODULE js { platform=[JS]; root=js }
common -> STDLIB_COMMON { kind=DEPENDENCY }
jvm -> common { kind=DEPENDS_ON }
jvm -> STDLIB_JVM, KOTLIN_TEST, KOTLIN_TEST_JVM, JUNIT, MOCK_JDK { kind=DEPENDENCY }
js -> common { kind=DEPENDS_ON }
@@ -0,0 +1,9 @@
package sample
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>Sample<!> {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>checkMe<!>() = 12
}
actual object <!LINE_MARKER("descr='Has declaration in common module'")!>Platform<!> {
actual val <!LINE_MARKER("descr='Has declaration in common module'")!>name<!>: String = "JS"
}
@@ -0,0 +1,9 @@
package sample
actual class <!LINE_MARKER("descr='Has declaration in common module'")!>Sample<!> {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>checkMe<!>() = 42
}
actual object <!LINE_MARKER("descr='Has declaration in common module'")!>Platform<!> {
actual val <!LINE_MARKER("descr='Has declaration in common module'")!>name<!>: String = "JVM"
}
@@ -0,0 +1,11 @@
package sample
import kotlin.test.Test
import kotlin.test.assertTrue
class <!LINE_MARKER("descr='Run Test'")!>SampleTestsJVM<!> {
@Test
fun <!LINE_MARKER("descr='Run Test'")!>testHello<!>() {
assertTrue("JVM" in hello())
}
}
@@ -1,13 +1,13 @@
expect class Expect
expect class <!LINE_MARKER("descr='Has actuals in JVM'")!>Expect<!>
interface Base {
fun expectInReturnType(): Expect
interface <!LINE_MARKER("descr='Is implemented by Derived'")!>Base<!> {
fun <!LINE_MARKER("descr='Is implemented in Derived'")!>expectInReturnType<!>(): Expect
fun expectInArgument(e: Expect)
fun Expect.expectInReceiver()
val expectVal: Expect
val <!LINE_MARKER("descr='Is implemented in Derived'")!>expectVal<!>: Expect
var expectVar: Expect
var <!LINE_MARKER("descr='Is implemented in Derived'")!>expectVar<!>: Expect
}
+6 -6
View File
@@ -1,13 +1,13 @@
actual typealias Expect = String
actual typealias <!LINE_MARKER("descr='Has declaration in common module'")!>Expect<!> = String
interface Derived : Base {
override fun expectInReturnType(): Expect
override fun <!LINE_MARKER("descr='Overrides function in 'Base''")!>expectInReturnType<!>(): Expect
override fun expectInArgument(e: Expect)
override fun <!LINE_MARKER("descr='Overrides function in 'Base''")!>expectInArgument<!>(e: Expect)
override fun Expect.expectInReceiver()
override fun Expect.<!LINE_MARKER("descr='Overrides function in 'Base''")!>expectInReceiver<!>()
override val expectVal: Expect
override val <!LINE_MARKER("descr='Overrides property in 'Base''")!>expectVal<!>: Expect
override var expectVar: Expect
override var <!LINE_MARKER("descr='Overrides property in 'Base''")!>expectVar<!>: Expect
}
@@ -1,15 +1,15 @@
expect class Expect
expect class <!LINE_MARKER("descr='Has actuals in JVM'")!>Expect<!>
class Box<out T>(val x: T)
interface Base {
fun expectInReturnType(): Box<Expect>
interface <!LINE_MARKER("descr='Is implemented by Derived'")!>Base<!> {
fun <!LINE_MARKER("descr='Is implemented in Derived'")!>expectInReturnType<!>(): Box<Expect>
fun expectInArgument(e: Box<Expect>)
fun Box<Expect>.expectInReceiver()
val expectVal: Box<Expect>
val <!LINE_MARKER("descr='Is implemented in Derived'")!>expectVal<!>: Box<Expect>
var expectVar: Box<Expect>
var <!LINE_MARKER("descr='Is implemented in Derived'")!>expectVar<!>: Box<Expect>
}
@@ -1,13 +1,13 @@
actual typealias Expect = String
actual typealias <!LINE_MARKER("descr='Has declaration in common module'")!>Expect<!> = String
interface Derived : Base {
override fun expectInReturnType(): Box<Expect>
override fun <!LINE_MARKER("descr='Overrides function in 'Base''")!>expectInReturnType<!>(): Box<Expect>
override fun expectInArgument(e: Box<Expect>)
override fun <!LINE_MARKER("descr='Overrides function in 'Base''")!>expectInArgument<!>(e: Box<Expect>)
override fun Box<Expect>.expectInReceiver()
override fun Box<Expect>.<!LINE_MARKER("descr='Overrides function in 'Base''")!>expectInReceiver<!>()
override val expectVal: Box<Expect>
override val <!LINE_MARKER("descr='Overrides property in 'Base''")!>expectVal<!>: Box<Expect>
override var expectVar: Box<Expect>
override var <!LINE_MARKER("descr='Overrides property in 'Base''")!>expectVar<!>: Box<Expect>
}
@@ -2,14 +2,14 @@
package foo
expect interface A {
fun commonFun()
val b: B
fun bFun(): B
expect interface <!LINE_MARKER("descr='Has actuals in JVM'")!>A<!> {
fun <!LINE_MARKER("descr='Has actuals in JVM'")!>commonFun<!>()
val <!LINE_MARKER("descr='Has actuals in JVM'")!>b<!>: B
fun <!LINE_MARKER("descr='Has actuals in JVM'")!>bFun<!>(): B
}
expect interface B {
fun commonFunB()
expect interface <!LINE_MARKER("descr='Has actuals in JVM'")!>B<!> {
fun <!LINE_MARKER("descr='Has actuals in JVM'")!>commonFunB<!>()
}
class Common {
@@ -2,14 +2,14 @@
package foo
actual interface A {
actual fun commonFun()
actual val b: B
actual fun bFun(): B
actual interface <!LINE_MARKER("descr='Has declaration in common module'")!>A<!> {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>commonFun<!>()
actual val <!LINE_MARKER("descr='Has declaration in common module'")!>b<!>: B
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>bFun<!>(): B
fun platformFun()
}
actual interface B {
actual fun commonFunB()
actual interface <!LINE_MARKER("descr='Has declaration in common module'")!>B<!> {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>commonFunB<!>()
fun platformFunB()
}
@@ -1,7 +1,7 @@
package sample
expect interface A<T : A<T>> {
fun foo(): T
expect interface <!LINE_MARKER("descr='Is subclassed by B'"), LINE_MARKER("descr='Has actuals in JVM'")!>A<!><T : A<T>> {
fun <!LINE_MARKER("descr='Has actuals in JVM'")!>foo<!>(): T
}
interface B : A<B>
+2 -2
View File
@@ -1,7 +1,7 @@
package sample
actual interface A<T : A<T>> {
actual fun foo(): T
actual interface <!LINE_MARKER("descr='Has declaration in common module'")!>A<!><T : A<T>> {
actual fun <!LINE_MARKER("descr='Has declaration in common module'")!>foo<!>(): T
fun bar() : T
}
+1 -1
View File
@@ -1,6 +1,6 @@
package foobar
import bar.baz
fun main() {
fun <!LINE_MARKER!>main<!>() {
baz().foo()
}

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