diff --git a/java/compiler/impl/src/com/intellij/compiler/options/TargetOptionsComponent.java b/java/compiler/impl/src/com/intellij/compiler/options/TargetOptionsComponent.java index 6201dd05d278..b7a7d6fcb5f5 100644 --- a/java/compiler/impl/src/com/intellij/compiler/options/TargetOptionsComponent.java +++ b/java/compiler/impl/src/com/intellij/compiler/options/TargetOptionsComponent.java @@ -41,7 +41,7 @@ import java.util.List; */ public class TargetOptionsComponent extends JPanel { private static final String[] KNOWN_TARGETS = new String[] {"1.1", "1.2", "1.3","1.4","1.5", "1.6", "1.7", "1.8"}; - private static final String COMPILER_DEFAULT = "JDK default"; + private static final String COMPILER_DEFAULT = "Same as language level"; private ComboBox myCbProjectTargetLevel; private JBTable myTable; @@ -312,7 +312,7 @@ public class TargetOptionsComponent extends JPanel { combo.setEditor(new BasicComboBoxEditor() { @Override protected JTextField createEditorComponent() { - return new HintTextField(COMPILER_DEFAULT, 10); + return new HintTextField(COMPILER_DEFAULT, 12); } }); return combo; diff --git a/java/compiler/openapi/src/com/intellij/compiler/ant/ModuleChunk.java b/java/compiler/openapi/src/com/intellij/compiler/ant/ModuleChunk.java index a6302ae00da6..3dbced26844f 100644 --- a/java/compiler/openapi/src/com/intellij/compiler/ant/ModuleChunk.java +++ b/java/compiler/openapi/src/com/intellij/compiler/ant/ModuleChunk.java @@ -138,13 +138,22 @@ public class ModuleChunk { if (encoding != null) { appendOption(options, "-encoding", encoding.name()); } - appendOption(options, "-source", getLanguageLevelOption(ApplicationManager.getApplication().runReadAction(new Computable() { + + final String languageLevel = getLanguageLevelOption(ApplicationManager.getApplication().runReadAction(new Computable() { @Override public LanguageLevel compute() { return EffectiveLanguageLevelUtil.getEffectiveLanguageLevel(myMainModule); } - }))); - appendOption(options, "-target", CompilerConfiguration.getInstance(getProject()).getBytecodeTargetLevel(myMainModule)); + })); + appendOption(options, "-source", languageLevel); + + String bytecodeTarget = CompilerConfiguration.getInstance(getProject()).getBytecodeTargetLevel(myMainModule); + if (StringUtil.isEmpty(bytecodeTarget)) { + // according to IDEA rule: if not specified explicitly, set target to be the same as source language level + bytecodeTarget = languageLevel; + } + appendOption(options, "-target", bytecodeTarget); + return options.toString(); } 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 f1b9d3cf1867..139bbf20ef0e 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 @@ -676,9 +676,15 @@ 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 (!StringUtil.isEmpty(langLevel)) { + // according to IDEA rule: if not specified explicitly, set target to be the same as source language level + bytecodeTarget = langLevel; + } + else { + // last resort and backward compatibility: + // check if user explicitly defined bytecode target in additional compiler options + bytecodeTarget = USER_DEFINED_BYTECODE_TARGET.get(context); + } } final int compilerSdkVersion = getCompilerSdkVersion(context);