Bug 470614: [1.9] support 1.9 as compiler compliance level
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java
index 28377f5..3ba422e 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java
@@ -112,7 +112,7 @@
int MAJOR_VERSION_1_6 = 50;
int MAJOR_VERSION_1_7 = 51;
int MAJOR_VERSION_1_8 = 52;
- int MAJOR_VERSION_1_9 = 52; // This needs change, but at the moment runtime don't support this class version.
+ int MAJOR_VERSION_1_9 = 53; // At the moment, runtime don't support this class version.
int MINOR_VERSION_0 = 0;
int MINOR_VERSION_1 = 1;
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaCore.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaCore.java
index daac9c0..f9b47b9 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaCore.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaCore.java
@@ -1817,7 +1817,7 @@
* should match the compliance setting.</p>
* <dl>
* <dt>Option id:</dt><dd><code>"org.eclipse.jdt.core.compiler.compliance"</code></dd>
- * <dt>Possible values:</dt><dd><code>{ "1.3", "1.4", "1.5", "1.6", "1.7", "1.8" }</code></dd>
+ * <dt>Possible values:</dt><dd><code>{ "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9" }</code></dd>
* <dt>Default:</dt><dd><code>"1.4"</code></dd>
* </dl>
* @since 2.0
@@ -2705,6 +2705,12 @@
public static final String VERSION_1_8 = "1.8"; //$NON-NLS-1$
/**
* Configurable option value: {@value}.
+ * @since 3.11 BETA_JAVA9
+ * @category OptionValue
+ */
+ public static final String VERSION_1_9 = "1.9"; //$NON-NLS-1$
+ /**
+ * Configurable option value: {@value}.
* @since 3.4
* @category OptionValue
*/
@@ -5680,6 +5686,14 @@
options.put(JavaCore.COMPILER_PB_ENUM_IDENTIFIER, JavaCore.ERROR);
options.put(JavaCore.COMPILER_CODEGEN_INLINE_JSR_BYTECODE, JavaCore.ENABLED);
break;
+ case ClassFileConstants.MAJOR_VERSION_1_9:
+ options.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_1_9);
+ options.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_1_8); //TODO(BETA_JAVA9) at the moment, there's no new Java language feature
+ options.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_1_8); //TODO(BETA_JAVA9) at the moment, runtime doesn't support a new class file version
+ options.put(JavaCore.COMPILER_PB_ASSERT_IDENTIFIER, JavaCore.ERROR);
+ options.put(JavaCore.COMPILER_PB_ENUM_IDENTIFIER, JavaCore.ERROR);
+ options.put(JavaCore.COMPILER_CODEGEN_INLINE_JSR_BYTECODE, JavaCore.ENABLED);
+ break;
}
}
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Util.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Util.java
index fd0448f..59057ac 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Util.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Util.java
@@ -851,8 +851,8 @@
}
if (path != null) {
if (JavaModelManager.isJimage(path)) {
- // TODO: Revisit: Possibly a wrong assumption depending on how things turn out in Java 9 world.
- return ClassFileConstants.JDK1_9;
+ // TODO(BETA_JAVA9): At the moment, there's no new class file version for Java 9.
+ return ClassFileConstants.JDK1_8;
} else {
jar = JavaModelManager.getJavaModelManager().getZipFile(path);
for (Enumeration e= jar.entries(); e.hasMoreElements();) {