From fc7b634ed35e682488d9b1c624adc4cb2352cfd5 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Tue, 9 Apr 2013 11:15:29 +0400 Subject: [PATCH] [r=nik] compatibility with previous versions: if nothing is set in dedicated places in compiler configuration, honor -target setting, explicitly specified in additional javac options. --- .../jps/incremental/java/JavaBuilder.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java index 3595aa26927a..72425149cc34 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java @@ -507,6 +507,7 @@ public class JavaBuilder extends ModuleLevelBuilder { private static final Key> JAVAC_OPTIONS = Key.create("_javac_options_"); private static final Key> JAVAC_VM_OPTIONS = Key.create("_javac_vm_options_"); + private static final Key USER_DEFINED_BYTECODE_TARGET = Key.create("_user_defined_bytecode_target_"); private static List getCompilationVMOptions(CompileContext context) { List cached = JAVAC_VM_OPTIONS.get(context); @@ -580,6 +581,13 @@ public class JavaBuilder extends ModuleLevelBuilder { } } } + + if (bytecodeTarget == null) { + // last resort and backward compatibility: + // check if user explicitly defined bytecode target in additional compiler options + bytecodeTarget = USER_DEFINED_BYTECODE_TARGET.get(context); + } + if (bytecodeTarget != null) { options.add("-target"); options.add(bytecodeTarget); @@ -684,13 +692,22 @@ public class JavaBuilder extends ModuleLevelBuilder { if (customArgs != null) { final StringTokenizer customOptsTokenizer = new StringTokenizer(customArgs, " \t\r\n"); boolean skip = false; + boolean targetOptionFound = false; while (customOptsTokenizer.hasMoreTokens()) { final String userOption = customOptsTokenizer.nextToken(); if (FILTERED_OPTIONS.contains(userOption)) { skip = true; + targetOptionFound = "-target".equals(userOption); continue; } - if (!skip) { + if (skip) { + skip = false; + if (targetOptionFound) { + targetOptionFound = false; + USER_DEFINED_BYTECODE_TARGET.set(context, userOption); + } + } + else { if (!FILTERED_SINGLE_OPTIONS.contains(userOption)) { if (userOption.startsWith("-J-")) { vmOptions.add(userOption.substring("-J".length()));