summaryrefslogtreecommitdiff
path: root/android-gradle-jps
diff options
context:
space:
mode:
authorAlex Ruiz <alruiz@google.com>2014-08-07 06:20:20 -0700
committerAlex Ruiz <alruiz@google.com>2014-08-07 06:35:56 -0700
commite36b35baefef1c37d354ee7a4e676535602535c1 (patch)
tree6890afb929e18a39f1862298530176ec9180c455 /android-gradle-jps
parent05b8128c22af040336dc033e527e87ab1bb33dbb (diff)
downloadidea-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.java8
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()) {