From 017aacba4456225c3eb13f7ea530d76c4aa0d50f Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Wed, 15 Dec 2021 13:23:28 +0100 Subject: [PATCH] [MPP] Add default parameter tests for ^KT-50120 --- .../defaultArguments/constructor.fir.kt | 29 ++++++++ .../defaultArguments/constructor.kt | 29 ++++++++ .../defaultArguments/constructor.txt | 52 +++++++++++++ .../defaultArguments/function.fir.kt | 73 +++++++++++++++++++ .../defaultArguments/function.kt | 73 +++++++++++++++++++ .../defaultArguments/function.txt | 49 +++++++++++++ ...latformCompositeAnalysisTestGenerated.java | 48 ++++++++++++ 7 files changed, 353 insertions(+) create mode 100644 compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/constructor.fir.kt create mode 100644 compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/constructor.kt create mode 100644 compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/constructor.txt create mode 100644 compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/function.fir.kt create mode 100644 compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/function.kt create mode 100644 compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/function.txt create mode 100644 compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsWithMultiplatformCompositeAnalysisTestGenerated.java diff --git a/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/constructor.fir.kt b/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/constructor.fir.kt new file mode 100644 index 00000000000..26f01e4035f --- /dev/null +++ b/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/constructor.fir.kt @@ -0,0 +1,29 @@ +// MODULE: m1-common +// FILE: common.kt + +expect class Ok(x: Int, y: String = "") + +expect class FailX(x: Int, y: String = "") + +expect class FailY(x: Int, y: String = "") + +fun test() { + Ok() + Ok(42) + Ok(42, "OK") +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt + +actual class Ok actual constructor(x: Int, y: String) + +actual class FailX actual constructor(x: Int = 0, y: String) + +actual class FailY actual constructor(x: Int, y: String = "") + +fun testJvm() { + Ok() + Ok(42) + Ok(42, "OK") +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/constructor.kt b/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/constructor.kt new file mode 100644 index 00000000000..7d2fc56c65c --- /dev/null +++ b/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/constructor.kt @@ -0,0 +1,29 @@ +// MODULE: m1-common +// FILE: common.kt + +expect class Ok(x: Int, y: String = "") + +expect class FailX(x: Int, y: String = "") + +expect class FailY(x: Int, y: String = "") + +fun test() { + Ok() + Ok(42) + Ok(42, "OK") +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt + +actual class Ok actual constructor(x: Int, y: String) + +actual class FailX actual constructor(x: Int = 0, y: String) + +actual class FailY actual constructor(x: Int, y: String = "") + +fun testJvm() { + Ok() + Ok(42) + Ok(42, "OK") +} diff --git a/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/constructor.txt b/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/constructor.txt new file mode 100644 index 00000000000..14a14870814 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/constructor.txt @@ -0,0 +1,52 @@ +// -- Module: -- +package + +public fun test(): kotlin.Unit + +public final expect class FailX { + public constructor FailX(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String = ...) + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final expect class FailY { + public constructor FailY(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String = ...) + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final expect class Ok { + public constructor Ok(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String = ...) + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +// -- Module: -- +package + +public fun testJvm(): kotlin.Unit + +public final actual class FailX { + public constructor FailX(/*0*/ x: kotlin.Int = ..., /*1*/ y: kotlin.String) + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final actual class FailY { + public constructor FailY(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String = ...) + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final actual class Ok { + public constructor Ok(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String) + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + diff --git a/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/function.fir.kt b/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/function.fir.kt new file mode 100644 index 00000000000..ae0b020ee41 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/function.fir.kt @@ -0,0 +1,73 @@ +// MODULE: m1-common +// FILE: common.kt + +import A.Companion.companionExtensionFunction + +expect class A() { + fun memberFunction(x: Int, y: String = "ok") + companion object { + fun companionFunction(x: Int, y: String = "ok") + fun String.companionExtensionFunction(x: Int, y: String = "ok") + } +} + +expect fun topLevelFunction(x: Int, y: String = "ok") + +expect fun String.topLevelExtensionFunction(x: Int, y: String = "ok") + +fun test() { + A().memberFunction() + A().memberFunction(42) + A().memberFunction(42, "ok") + + topLevelFunction() + topLevelFunction(42) + topLevelFunction(42, "ok") + + "".topLevelExtensionFunction() + "".topLevelExtensionFunction(42) + "".topLevelExtensionFunction(42, "ok") +} + +fun A.test() { + "".companionExtensionFunction() + "".companionExtensionFunction(42) + "".companionExtensionFunction(42, "ok") +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt + +import A.Companion.companionExtensionFunction + +actual class A { + actual fun memberFunction(x: Int, y: String) = Unit + actual companion object { + actual fun companionFunction(x: Int, y: String) = Unit + actual fun String.companionExtensionFunction(x: Int, y: String) = Unit + } +} + +actual fun topLevelFunction(x: Int, y: String) = Unit + +actual fun String.topLevelExtensionFunction(x: Int, y: String) = Unit + +fun testJvm() { + A().memberFunction() + A().memberFunction(42) + A().memberFunction(42, "ok") + + topLevelFunction() + topLevelFunction(42) + topLevelFunction(42, "ok") + + "".topLevelExtensionFunction() + "".topLevelExtensionFunction(42) + "".topLevelExtensionFunction(42, "ok") +} + +fun A.testJvm() { + "".companionExtensionFunction() + "".companionExtensionFunction(42) + "".companionExtensionFunction(42, "ok") +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/function.kt b/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/function.kt new file mode 100644 index 00000000000..6324bf6224d --- /dev/null +++ b/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/function.kt @@ -0,0 +1,73 @@ +// MODULE: m1-common +// FILE: common.kt + +import A.Companion.companionExtensionFunction + +expect class A() { + fun memberFunction(x: Int, y: String = "ok") + companion object { + fun companionFunction(x: Int, y: String = "ok") + fun String.companionExtensionFunction(x: Int, y: String = "ok") + } +} + +expect fun topLevelFunction(x: Int, y: String = "ok") + +expect fun String.topLevelExtensionFunction(x: Int, y: String = "ok") + +fun test() { + A().memberFunction() + A().memberFunction(42) + A().memberFunction(42, "ok") + + topLevelFunction() + topLevelFunction(42) + topLevelFunction(42, "ok") + + "".topLevelExtensionFunction() + "".topLevelExtensionFunction(42) + "".topLevelExtensionFunction(42, "ok") +} + +fun A.test() { + "".companionExtensionFunction() + "".companionExtensionFunction(42) + "".companionExtensionFunction(42, "ok") +} + +// MODULE: m2-jvm()()(m1-common) +// FILE: jvm.kt + +import A.Companion.companionExtensionFunction + +actual class A { + actual fun memberFunction(x: Int, y: String) = Unit + actual companion object { + actual fun companionFunction(x: Int, y: String) = Unit + actual fun String.companionExtensionFunction(x: Int, y: String) = Unit + } +} + +actual fun topLevelFunction(x: Int, y: String) = Unit + +actual fun String.topLevelExtensionFunction(x: Int, y: String) = Unit + +fun testJvm() { + A().memberFunction() + A().memberFunction(42) + A().memberFunction(42, "ok") + + topLevelFunction() + topLevelFunction(42) + topLevelFunction(42, "ok") + + "".topLevelExtensionFunction() + "".topLevelExtensionFunction(42) + "".topLevelExtensionFunction(42, "ok") +} + +fun A.testJvm() { + "".companionExtensionFunction() + "".companionExtensionFunction(42) + "".companionExtensionFunction(42, "ok") +} diff --git a/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/function.txt b/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/function.txt new file mode 100644 index 00000000000..071fde74e49 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/function.txt @@ -0,0 +1,49 @@ +// -- Module: -- +package + +public fun test(): kotlin.Unit +public expect fun topLevelFunction(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String = ...): kotlin.Unit +public fun A.test(): kotlin.Unit +public expect fun kotlin.String.topLevelExtensionFunction(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String = ...): kotlin.Unit + +public final expect class A { + public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final expect fun memberFunction(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String = ...): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public expect companion object Companion { + public final expect fun companionFunction(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String = ...): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final expect fun kotlin.String.companionExtensionFunction(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String = ...): kotlin.Unit + } +} + +// -- Module: -- +package + +public fun testJvm(): kotlin.Unit +public actual fun topLevelFunction(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String): kotlin.Unit +public fun A.testJvm(): kotlin.Unit +public actual fun kotlin.String.topLevelExtensionFunction(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String): kotlin.Unit + +public final actual class A { + public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final actual fun memberFunction(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public actual companion object Companion { + private constructor Companion() + public final actual fun companionFunction(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final actual fun kotlin.String.companionExtensionFunction(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String): kotlin.Unit + } +} + diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsWithMultiplatformCompositeAnalysisTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsWithMultiplatformCompositeAnalysisTestGenerated.java new file mode 100644 index 00000000000..111771c4776 --- /dev/null +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsWithMultiplatformCompositeAnalysisTestGenerated.java @@ -0,0 +1,48 @@ +/* + * Copyright 2010-2021 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.test.runners; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis") +@TestDataPath("$PROJECT_ROOT") +public class DiagnosticsWithMultiplatformCompositeAnalysisTestGenerated extends AbstractDiagnosticsWithMultiplatformCompositeAnalysisTest { + @Test + public void testAllFilesPresentInTestsWithMultiplatformCompositeAnalysis() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); + } + + @Nested + @TestMetadata("compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments") + @TestDataPath("$PROJECT_ROOT") + public class DefaultArguments { + @Test + public void testAllFilesPresentInDefaultArguments() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); + } + + @Test + @TestMetadata("constructor.kt") + public void testConstructor() throws Exception { + runTest("compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/constructor.kt"); + } + + @Test + @TestMetadata("function.kt") + public void testFunction() throws Exception { + runTest("compiler/testData/diagnostics/testsWithMultiplatformCompositeAnalysis/defaultArguments/function.kt"); + } + } +}