From 449723e3883b968b84bed94372f242d8b6d0c1c6 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Sun, 25 May 2014 12:42:00 +0200 Subject: [PATCH] Repoting platform declarations clashes in CLI compiler for JVM #KT-1 In Progress --- .../jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java | 5 ++++- compiler/testData/cli/jvm/signatureClash.args | 4 ++++ compiler/testData/cli/jvm/signatureClash.kt | 7 +++++++ compiler/testData/cli/jvm/signatureClash.out | 5 +++++ .../jetbrains/jet/cli/KotlincExecutableTestGenerated.java | 5 +++++ compiler/tests/org/jetbrains/jet/cli/jvm/K2JvmCliTest.java | 5 +++++ 6 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/cli/jvm/signatureClash.args create mode 100644 compiler/testData/cli/jvm/signatureClash.kt create mode 100644 compiler/testData/cli/jvm/signatureClash.out diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java index 49cc01df221..f9bab06f43e 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java @@ -328,6 +328,7 @@ public class KotlinToJVMBytecodeCompiler { ? null : IncrementalPackage.getPackagesWithRemovedFiles( incrementalCacheProvider.getIncrementalCache(incrementalCacheDir), moduleId, environment.getSourceFiles()); + BindingTraceContext diagnosticHolder = new BindingTraceContext(); GenerationState generationState = new GenerationState( environment.getProject(), ClassBuilderFactories.BINARIES, @@ -341,9 +342,11 @@ public class KotlinToJVMBytecodeCompiler { configuration.get(JVMConfigurationKeys.ENABLE_INLINE, InlineCodegenUtil.DEFAULT_INLINE_FLAG), packagesWithRemovedFiles, moduleId, - new BindingTraceContext() // TODO + diagnosticHolder ); KotlinCodegenFacade.compileCorrectFiles(generationState, CompilationErrorHandler.THROW_EXCEPTION); + AnalyzerWithCompilerReport.reportDiagnostics(diagnosticHolder.getBindingContext(), + environment.getConfiguration().get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY)); return generationState; } } diff --git a/compiler/testData/cli/jvm/signatureClash.args b/compiler/testData/cli/jvm/signatureClash.args new file mode 100644 index 00000000000..e1c67753c89 --- /dev/null +++ b/compiler/testData/cli/jvm/signatureClash.args @@ -0,0 +1,4 @@ +-src +$TESTDATA_DIR$/signatureClash.kt +-output +$TEMP_DIR$ \ No newline at end of file diff --git a/compiler/testData/cli/jvm/signatureClash.kt b/compiler/testData/cli/jvm/signatureClash.kt new file mode 100644 index 00000000000..b10d2e5ac30 --- /dev/null +++ b/compiler/testData/cli/jvm/signatureClash.kt @@ -0,0 +1,7 @@ +class A { + fun getA(): Int = 1 + val a: Int = 1 +} + +fun getB(): Int = 1 +val b: Int = 1 diff --git a/compiler/testData/cli/jvm/signatureClash.out b/compiler/testData/cli/jvm/signatureClash.out new file mode 100644 index 00000000000..08d76ffd066 --- /dev/null +++ b/compiler/testData/cli/jvm/signatureClash.out @@ -0,0 +1,5 @@ +ERROR: $TESTDATA_DIR$/signatureClash.kt: (2, 5) Platform declaration clash: 'getA()I' +ERROR: $TESTDATA_DIR$/signatureClash.kt: (3, 5) Platform declaration clash: 'getA()I' +ERROR: $TESTDATA_DIR$/signatureClash.kt: (6, 1) Platform declaration clash: 'getB()I' +ERROR: $TESTDATA_DIR$/signatureClash.kt: (7, 1) Platform declaration clash: 'getB()I' +COMPILATION_ERROR \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/cli/KotlincExecutableTestGenerated.java b/compiler/tests/org/jetbrains/jet/cli/KotlincExecutableTestGenerated.java index 156d9258191..67c69e4c55c 100644 --- a/compiler/tests/org/jetbrains/jet/cli/KotlincExecutableTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/cli/KotlincExecutableTestGenerated.java @@ -79,6 +79,11 @@ public class KotlincExecutableTestGenerated extends AbstractKotlincExecutableTes doJvmTest("compiler/testData/cli/jvm/script.args"); } + @TestMetadata("signatureClash.args") + public void testSignatureClash() throws Exception { + doJvmTest("compiler/testData/cli/jvm/signatureClash.args"); + } + @TestMetadata("simple.args") public void testSimple() throws Exception { doJvmTest("compiler/testData/cli/jvm/simple.args"); diff --git a/compiler/tests/org/jetbrains/jet/cli/jvm/K2JvmCliTest.java b/compiler/tests/org/jetbrains/jet/cli/jvm/K2JvmCliTest.java index 569cba2a18a..f0c403940d7 100644 --- a/compiler/tests/org/jetbrains/jet/cli/jvm/K2JvmCliTest.java +++ b/compiler/tests/org/jetbrains/jet/cli/jvm/K2JvmCliTest.java @@ -56,4 +56,9 @@ public class K2JvmCliTest extends CliBaseTest { public void classpath() throws Exception { executeCompilerCompareOutputJVM(); } + + @Test + public void signatureClash() throws Exception { + executeCompilerCompareOutputJVM(); + } }