From 64175d3996be725efd602ebc918eea3e5505cd85 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 20 Jun 2014 15:51:47 +0400 Subject: [PATCH] Tests for some more cases of JVM signature clashes --- compiler/testData/cli/jvm/signatureClash.kt | 13 +++++++++++++ compiler/testData/cli/jvm/signatureClash.out | 7 +++++++ .../duplicateJvmSignature/caseInProperties.kt | 2 ++ .../erasure/extensionProperties.kt | 7 +++++++ .../tests/duplicateJvmSignature/vararg.kt | 5 +++++ .../jet/checkers/JetDiagnosticsTestGenerated.java | 15 +++++++++++++++ 6 files changed, 49 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/duplicateJvmSignature/caseInProperties.kt create mode 100644 compiler/testData/diagnostics/tests/duplicateJvmSignature/erasure/extensionProperties.kt create mode 100644 compiler/testData/diagnostics/tests/duplicateJvmSignature/vararg.kt diff --git a/compiler/testData/cli/jvm/signatureClash.kt b/compiler/testData/cli/jvm/signatureClash.kt index f30912fab90..5243e6c9342 100644 --- a/compiler/testData/cli/jvm/signatureClash.kt +++ b/compiler/testData/cli/jvm/signatureClash.kt @@ -19,3 +19,16 @@ trait Tr { class SubTr : Tr { val tr = 1 } + +// Clashing synthetic accessors are only reported in compiler, IDE doesn't see them +class C { + private fun f() {} + fun `f$b$0`(c: C) {} + + class Nested { + + fun test() { + C().f() + } + } +} \ No newline at end of file diff --git a/compiler/testData/cli/jvm/signatureClash.out b/compiler/testData/cli/jvm/signatureClash.out index 1ec967b1da2..44c4829597f 100644 --- a/compiler/testData/cli/jvm/signatureClash.out +++ b/compiler/testData/cli/jvm/signatureClash.out @@ -1,3 +1,4 @@ +WARNING: $TESTDATA_DIR$/signatureClash.kt: (26, 17) Parameter 'c' is never used ERROR: $TESTDATA_DIR$/signatureClash.kt: (6, 5) Accidental override: The following declarations have the same JVM signature (getX()I): fun getX(): kotlin.Int fun (): kotlin.Int @@ -19,4 +20,10 @@ ERROR: $TESTDATA_DIR$/signatureClash.kt: (16, 5) Platform declaration clash: The ERROR: $TESTDATA_DIR$/signatureClash.kt: (20, 5) Platform declaration clash: The following declarations have the same JVM signature (getTr()I): fun (): kotlin.Int fun getTr(): kotlin.Int +ERROR: $TESTDATA_DIR$/signatureClash.kt: (24, 7) Platform declaration clash: The following declarations have the same JVM signature (f$b$0(LC;)V): + fun f$b$0(c: C): kotlin.Unit + fun f(): kotlin.Unit +ERROR: $TESTDATA_DIR$/signatureClash.kt: (26, 5) Platform declaration clash: The following declarations have the same JVM signature (f$b$0(LC;)V): + fun f$b$0(c: C): kotlin.Unit + fun f(): kotlin.Unit COMPILATION_ERROR \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/duplicateJvmSignature/caseInProperties.kt b/compiler/testData/diagnostics/tests/duplicateJvmSignature/caseInProperties.kt new file mode 100644 index 00000000000..5218804cb89 --- /dev/null +++ b/compiler/testData/diagnostics/tests/duplicateJvmSignature/caseInProperties.kt @@ -0,0 +1,2 @@ +val aa = 1 +val Aa = 1 \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/duplicateJvmSignature/erasure/extensionProperties.kt b/compiler/testData/diagnostics/tests/duplicateJvmSignature/erasure/extensionProperties.kt new file mode 100644 index 00000000000..fa4f8a0a017 --- /dev/null +++ b/compiler/testData/diagnostics/tests/duplicateJvmSignature/erasure/extensionProperties.kt @@ -0,0 +1,7 @@ +class G + +val G.foo: Int + get() = 1 + +val G.foo: Int + get() = 1 \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/duplicateJvmSignature/vararg.kt b/compiler/testData/diagnostics/tests/duplicateJvmSignature/vararg.kt new file mode 100644 index 00000000000..96d510905ca --- /dev/null +++ b/compiler/testData/diagnostics/tests/duplicateJvmSignature/vararg.kt @@ -0,0 +1,5 @@ +fun foo(vararg x: Int) {} +fun foo(x: IntArray) {} + +fun foo(vararg x: Int?) {} +fun foo(x: Array) {} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index 828cb0fcb7d..8d9b77441ed 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -2552,11 +2552,21 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/diagnostics/tests/duplicateJvmSignature"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("caseInProperties.kt") + public void testCaseInProperties() throws Exception { + doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/caseInProperties.kt"); + } + @TestMetadata("missingNames.kt") public void testMissingNames() throws Exception { doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/missingNames.kt"); } + @TestMetadata("vararg.kt") + public void testVararg() throws Exception { + doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/vararg.kt"); + } + @TestMetadata("compiler/testData/diagnostics/tests/duplicateJvmSignature/accidentalOverrides") public static class AccidentalOverrides extends AbstractJetDiagnosticsTest { public void testAllFilesPresentInAccidentalOverrides() throws Exception { @@ -2689,6 +2699,11 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/erasure/delegationAndOwnMethod.kt"); } + @TestMetadata("extensionProperties.kt") + public void testExtensionProperties() throws Exception { + doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/erasure/extensionProperties.kt"); + } + @TestMetadata("genericType.kt") public void testGenericType() throws Exception { doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/erasure/genericType.kt");