From 67d2c0c697521d180147e634efcc3b660aaa87a9 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 8 Dec 2011 14:15:43 +0100 Subject: [PATCH] [r=nik] annotation processing option fix --- .../javaCompiler/javac/JavacCompiler.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/javac/JavacCompiler.java b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/javac/JavacCompiler.java index 5a66b0f9c6a3..85133995723e 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/javac/JavacCompiler.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/javac/JavacCompiler.java @@ -274,11 +274,12 @@ public class JavacCompiler extends ExternalCompiler { } public static List addAdditionalSettings(List commandLine, JavacSettings javacSettings, boolean isAnnotationProcessing, - JavaSdkVersion version, Project project, final boolean annotationProcessorsEnabled) { + JavaSdkVersion version, Project project, boolean annotationProcessorsEnabled) { final List additionalOptions = new ArrayList(); StringTokenizer tokenizer = new StringTokenizer(javacSettings.getOptionsString(project), " "); if (!version.isAtLeast(JavaSdkVersion.JDK_1_6)) { isAnnotationProcessing = false; // makes no sense for these versions + annotationProcessorsEnabled = false; } if (isAnnotationProcessing) { final CompilerConfiguration config = CompilerConfiguration.getInstance(project); @@ -311,7 +312,7 @@ public class JavacCompiler extends ExternalCompiler { } } else { - if (version.isAtLeast(JavaSdkVersion.JDK_1_6) && annotationProcessorsEnabled) { + if (annotationProcessorsEnabled) { // Unless explicitly specified by user, disable annotation processing by default for 'java compilation' mode // This is needed to suppress unwanted side-effects from auto-discovered processors from compilation classpath additionalOptions.add("-proc:none"); @@ -326,14 +327,22 @@ public class JavacCompiler extends ExternalCompiler { if (!version.isAtLeast(JavaSdkVersion.JDK_1_5) && "-Xlint".equals(token)) { continue; // not supported in these versions } - if (token.startsWith("-proc:")) { - continue; - } if (isAnnotationProcessing) { + if (token.startsWith("-proc:")) { + continue; + } if (token.startsWith("-implicit:")) { continue; } } + else { // compiling java + if (annotationProcessorsEnabled) { + // in this mode we have -proc:none already added above, so user's settings should be ignored + if (token.startsWith("-proc:")) { + continue; + } + } + } if (token.startsWith("-J-")) { commandLine.add(token.substring("-J".length())); }