From 19e283a33378dbce33af07c093ccbcbaa797ce05 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Tue, 20 Nov 2012 20:45:02 +0400 Subject: [PATCH] Fixed printing multiple errors in Kotlin signatures. --- .../messages/AnalyzerWithCompilerReport.java | 16 ++++++++++------ compiler/testData/cli/wrongKotlinSignature.kt | 3 ++- compiler/testData/cli/wrongKotlinSignature.out | 5 ++++- ....java => ClassWithWrongKotlinSignatures.java} | 7 ++++++- 4 files changed, 22 insertions(+), 9 deletions(-) rename compiler/testData/cli/wrongKotlinSignatureLib/{ClassWithWrongKotlinSignature.java => ClassWithWrongKotlinSignatures.java} (50%) diff --git a/compiler/cli/src/org/jetbrains/jet/cli/common/messages/AnalyzerWithCompilerReport.java b/compiler/cli/src/org/jetbrains/jet/cli/common/messages/AnalyzerWithCompilerReport.java index 2b422efcf83..59495aa1238 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/common/messages/AnalyzerWithCompilerReport.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/common/messages/AnalyzerWithCompilerReport.java @@ -121,19 +121,23 @@ public final class AnalyzerWithCompilerReport { BindingContext bc = analyzeExhaust.getBindingContext(); Collection descriptorsWithErrors = bc.getKeys(BindingContext.LOAD_FROM_JAVA_SIGNATURE_ERRORS); if (!descriptorsWithErrors.isEmpty()) { - StringBuilder messageStart = new StringBuilder("The following Java entities have annotations wrong Kotlin signatures:\n"); + StringBuilder message = new StringBuilder("The following Java entities have annotations wrong Kotlin signatures:\n"); for (DeclarationDescriptor descriptor : descriptorsWithErrors) { PsiElement declaration = BindingContextUtils.descriptorToDeclaration(bc, descriptor); assert declaration instanceof PsiModifierListOwner; - String externalName = PsiFormatUtil.getExternalName((PsiModifierListOwner) declaration); - messageStart.append(externalName).append(": "); + List errors = bc.get(BindingContext.LOAD_FROM_JAVA_SIGNATURE_ERRORS, descriptor); - assert errors != null; + assert errors != null && !errors.isEmpty(); + + String externalName = PsiFormatUtil.getExternalName((PsiModifierListOwner) declaration); + message.append(externalName).append(":\n"); + for (String error : errors) { - messageCollectorWrapper.report(CompilerMessageSeverity.ERROR, - messageStart + error + "\n", CompilerMessageLocation.NO_LOCATION); + message.append(" ").append(error).append("\n"); } } + messageCollectorWrapper.report(CompilerMessageSeverity.ERROR, + message.toString(), CompilerMessageLocation.NO_LOCATION); } } diff --git a/compiler/testData/cli/wrongKotlinSignature.kt b/compiler/testData/cli/wrongKotlinSignature.kt index b9f31118352..a3b8a61b202 100644 --- a/compiler/testData/cli/wrongKotlinSignature.kt +++ b/compiler/testData/cli/wrongKotlinSignature.kt @@ -1,3 +1,4 @@ package test; -val x = ClassWithWrongKotlinSignature.foo() \ No newline at end of file +val x = ClassWithWrongKotlinSignatures.foo() +val y = ClassWithWrongKotlinSignatures.bar() \ No newline at end of file diff --git a/compiler/testData/cli/wrongKotlinSignature.out b/compiler/testData/cli/wrongKotlinSignature.out index 56fdd0f30e3..48b25211adf 100644 --- a/compiler/testData/cli/wrongKotlinSignature.out +++ b/compiler/testData/cli/wrongKotlinSignature.out @@ -1,4 +1,7 @@ ERROR: The following Java entities have annotations wrong Kotlin signatures: -ClassWithWrongKotlinSignature java.lang.String foo(): Function names mismatch, original: foo, alternative: bar +ClassWithWrongKotlinSignatures java.lang.String foo(): + Function names mismatch, original: foo, alternative: bar +ClassWithWrongKotlinSignatures java.lang.String bar(): + Function names mismatch, original: bar, alternative: foo COMPILATION_ERROR diff --git a/compiler/testData/cli/wrongKotlinSignatureLib/ClassWithWrongKotlinSignature.java b/compiler/testData/cli/wrongKotlinSignatureLib/ClassWithWrongKotlinSignatures.java similarity index 50% rename from compiler/testData/cli/wrongKotlinSignatureLib/ClassWithWrongKotlinSignature.java rename to compiler/testData/cli/wrongKotlinSignatureLib/ClassWithWrongKotlinSignatures.java index ca8adfaa9e2..7bb194a1f41 100644 --- a/compiler/testData/cli/wrongKotlinSignatureLib/ClassWithWrongKotlinSignature.java +++ b/compiler/testData/cli/wrongKotlinSignatureLib/ClassWithWrongKotlinSignatures.java @@ -1,8 +1,13 @@ import jet.runtime.typeinfo.KotlinSignature; -public class ClassWithWrongKotlinSignature { +public class ClassWithWrongKotlinSignatures { @KotlinSignature("fun bar() : String") public static String foo() { throw new UnsupportedOperationException(); } + + @KotlinSignature("fun foo() : String") + public static String bar() { + throw new UnsupportedOperationException(); + } }