diff options
author | Alex Ruiz <alruiz@google.com> | 2014-08-07 06:20:20 -0700 |
---|---|---|
committer | Alex Ruiz <alruiz@google.com> | 2014-08-07 06:35:56 -0700 |
commit | e36b35baefef1c37d354ee7a4e676535602535c1 (patch) | |
tree | 6890afb929e18a39f1862298530176ec9180c455 /android-gradle-jps | |
parent | 05b8128c22af040336dc033e527e87ab1bb33dbb (diff) | |
download | idea-e36b35baefef1c37d354ee7a4e676535602535c1.tar.gz |
Fixed bug where compiler errors where not shown by JPS builder.
This issue appears when the output parsers do not recognize the
output of stderr (this is the case when the error comes from
Gradle itself, and not a 3rd-party tool like javac.) The fix is
to create an error message from stderr, which contains the
cause of the failure.
This CL also updates UI test MultipleModuleTypeCompilationTest
to reproduce the issue and verify that is properly fixed. In addition,
IdeFrameFixture now guarantees that GradleInvoker (in-process
Gradle builds) is always enabled.
Change-Id: Iafbf4105e236e7f42f0f1df8a8f464824ac28131
Diffstat (limited to 'android-gradle-jps')
-rw-r--r-- | android-gradle-jps/src/com/android/tools/idea/jps/builder/AndroidGradleTargetBuilder.java | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/android-gradle-jps/src/com/android/tools/idea/jps/builder/AndroidGradleTargetBuilder.java b/android-gradle-jps/src/com/android/tools/idea/jps/builder/AndroidGradleTargetBuilder.java index 007212c49f1..35302fed7d2 100644 --- a/android-gradle-jps/src/com/android/tools/idea/jps/builder/AndroidGradleTargetBuilder.java +++ b/android-gradle-jps/src/com/android/tools/idea/jps/builder/AndroidGradleTargetBuilder.java @@ -401,10 +401,16 @@ public class AndroidGradleTargetBuilder extends TargetBuilder<AndroidGradleBuild private static void handleBuildException(BuildException e, CompileContext context, String stdErr) throws ProjectBuildException { Collection<GradleMessage> compilerMessages = new BuildOutputParser().parseGradleOutput(stdErr); if (!compilerMessages.isEmpty()) { + boolean hasError = false; for (GradleMessage message : compilerMessages) { + if (message.getKind() == GradleMessage.Kind.ERROR) { + hasError = true; + } context.processMessage(AndroidGradleJps.createCompilerMessage(message)); } - return; + if (hasError) { + return; + } } // There are no error messages to present. Show some feedback indicating that something went wrong. if (!stdErr.isEmpty()) { |