diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/messages/GroupingMessageCollector.java b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/messages/GroupingMessageCollector.java index b77c48397b3..64395594f4f 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/messages/GroupingMessageCollector.java +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/messages/GroupingMessageCollector.java @@ -20,8 +20,6 @@ import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; import org.jetbrains.annotations.NotNull; -import java.util.Collection; - public class GroupingMessageCollector implements MessageCollector { private final MessageCollector delegate; @@ -48,12 +46,22 @@ public class GroupingMessageCollector implements MessageCollector { } public void flush() { + boolean hasError = false; + for (String path : groupedMessages.keySet()) { - Collection messages = groupedMessages.get(path); - for (Message message : messages) { - delegate.report(message.severity, message.message, message.location); + for (Message message : groupedMessages.get(path)) { + hasError |= CompilerMessageSeverity.ERRORS.contains(message.severity); } } + + for (String path : groupedMessages.keySet()) { + for (Message message : groupedMessages.get(path)) { + if (!hasError || CompilerMessageSeverity.ERRORS.contains(message.severity)) { + delegate.report(message.severity, message.message, message.location); + } + } + } + groupedMessages.clear(); } diff --git a/compiler/testData/cli/js/diagnosticForClassLiteral.out b/compiler/testData/cli/js/diagnosticForClassLiteral.out index 12b8af2a949..4d69c087034 100644 --- a/compiler/testData/cli/js/diagnosticForClassLiteral.out +++ b/compiler/testData/cli/js/diagnosticForClassLiteral.out @@ -1,3 +1,2 @@ -WARNING: compiler/testData/cli/js/diagnosticForClassLiteral.kt: (6, 5) The expression is unused ERROR: compiler/testData/cli/js/diagnosticForClassLiteral.kt: (6, 5) Cannot translate (not supported yet): 'A::class' COMPILATION_ERROR diff --git a/compiler/testData/cli/js/diagnosticForUnhandledElements.out b/compiler/testData/cli/js/diagnosticForUnhandledElements.out index f1556bb1ee8..8b215bc59ea 100644 --- a/compiler/testData/cli/js/diagnosticForUnhandledElements.out +++ b/compiler/testData/cli/js/diagnosticForUnhandledElements.out @@ -1,3 +1,2 @@ -WARNING: compiler/testData/cli/js/diagnosticForUnhandledElements.kt: (8, 20) Parameter 'foo' is never used ERROR: compiler/testData/cli/js/diagnosticForUnhandledElements.kt: (9, 17) Cannot translate (not supported yet): '@fancy 1' COMPILATION_ERROR \ No newline at end of file diff --git a/compiler/testData/cli/js/diagnosticWhenReferenceToBuiltinsMember.out b/compiler/testData/cli/js/diagnosticWhenReferenceToBuiltinsMember.out index 19928207a43..8a34015e98f 100644 --- a/compiler/testData/cli/js/diagnosticWhenReferenceToBuiltinsMember.out +++ b/compiler/testData/cli/js/diagnosticWhenReferenceToBuiltinsMember.out @@ -1,5 +1,3 @@ -WARNING: compiler/testData/cli/js/diagnosticWhenReferenceToBuiltinsMember.kt: (4, 5) The expression is unused -WARNING: compiler/testData/cli/js/diagnosticWhenReferenceToBuiltinsMember.kt: (5, 5) The expression is unused ERROR: compiler/testData/cli/js/diagnosticWhenReferenceToBuiltinsMember.kt: (4, 5) Callable references for builtin members are not supported yet: 'Int::toByte' ERROR: compiler/testData/cli/js/diagnosticWhenReferenceToBuiltinsMember.kt: (5, 5) Callable references for builtin members are not supported yet: 'String::length' COMPILATION_ERROR diff --git a/compiler/testData/cli/jvm/signatureClash.out b/compiler/testData/cli/jvm/signatureClash.out index c810f8bc4e0..1d4c445fc1c 100644 --- a/compiler/testData/cli/jvm/signatureClash.out +++ b/compiler/testData/cli/jvm/signatureClash.out @@ -1,4 +1,3 @@ -WARNING: compiler/testData/cli/jvm/signatureClash.kt: (26, 22) Parameter 'c' is never used ERROR: compiler/testData/cli/jvm/signatureClash.kt: (6, 5) Accidental override: The following declarations have the same JVM signature (getX()I): fun getX(): kotlin.Int fun (): kotlin.Int diff --git a/compiler/testData/cli/jvm/syntheticAccessorSignatureClash.out b/compiler/testData/cli/jvm/syntheticAccessorSignatureClash.out index 22c692f2cf4..fe5c174f043 100644 --- a/compiler/testData/cli/jvm/syntheticAccessorSignatureClash.out +++ b/compiler/testData/cli/jvm/syntheticAccessorSignatureClash.out @@ -1,4 +1,3 @@ -WARNING: compiler/testData/cli/jvm/syntheticAccessorSignatureClash.kt: (34, 17) Variable 's' is never used ERROR: compiler/testData/cli/jvm/syntheticAccessorSignatureClash.kt: (15, 5) Accidental override: The following declarations have the same JVM signature (access$foo$0(LDerived;)V): fun `access$foo$0`(d: Derived): kotlin.Unit fun foo(): kotlin.Unit diff --git a/compiler/testData/cli/jvm/wrongAbiVersion.out b/compiler/testData/cli/jvm/wrongAbiVersion.out index eb70f2c153a..a35912a6b2b 100644 --- a/compiler/testData/cli/jvm/wrongAbiVersion.out +++ b/compiler/testData/cli/jvm/wrongAbiVersion.out @@ -1,5 +1,4 @@ ERROR: compiler/testData/cli/jvm/wrongAbiVersionLib/bin/ClassWithWrongAbiVersion.class: (0, 0) Class 'ClassWithWrongAbiVersion' was compiled with an incompatible version of Kotlin. Its ABI version is -1, expected ABI version is $ABI_VERSION$ ERROR: compiler/testData/cli/jvm/wrongAbiVersionLib/bin/wrong/WrongPackage.class: (0, 0) Class 'wrong/WrongPackage' was compiled with an incompatible version of Kotlin. Its ABI version is -1, expected ABI version is $ABI_VERSION$ -WARNING: compiler/testData/cli/jvm/wrongAbiVersion.kt: (3, 9) Parameter 'x' is never used ERROR: compiler/testData/cli/jvm/wrongAbiVersion.kt: (4, 3) Unresolved reference: bar COMPILATION_ERROR \ No newline at end of file