Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2018-11-14 13:58:04 +0000
committerJay Arthanareeswaran2018-11-15 05:42:11 +0000
commitdd3a278b906114fedcdb46af8aca43eac75b3bfe (patch)
tree2bf9f91b7019177a6cadc887a3ca6637c55f042f
parent299476ded83d2b23da044bfa8a9a82012881d3c2 (diff)
downloadeclipse.jdt.core-dd3a278b906114fedcdb46af8aca43eac75b3bfe.tar.gz
eclipse.jdt.core-dd3a278b906114fedcdb46af8aca43eac75b3bfe.tar.xz
eclipse.jdt.core-dd3a278b906114fedcdb46af8aca43eac75b3bfe.zip
Bug 539570 - Eclipse 2018-09 won't compile Java 11 source; thinks it isI20181115-1800I20181115-0200
below 1.7 Change-Id: Ib7c4bfb5241e478681724f75677cd1e3bda4dea1 Signed-off-by: Stephan Herrmann <stephan.herrmann@berlin.de>
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaCoreOptionsTests.java4
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java5
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java7
3 files changed, 8 insertions, 8 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaCoreOptionsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaCoreOptionsTests.java
index 8240228f98..e5d2894558 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaCoreOptionsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaCoreOptionsTests.java
@@ -120,6 +120,10 @@ public void test5() {
assertTrue(JavaCore.compareJavaVersions("9", "1.8") > 0);
assertTrue(JavaCore.compareJavaVersions("9.0.1", "9.1.2") == 0);
assertTrue(JavaCore.compareJavaVersions("9", "9.1.2") == 0);
+ String latest = JavaCore.latestSupportedJavaVersion();
+ String latestPlus = "" + (Integer.parseInt(latest) + 1);
+ assertTrue(JavaCore.compareJavaVersions(latest, latestPlus) == 0);
+
}
}
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 70d4378a61..bfcdf5e888 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
@@ -169,10 +169,9 @@ public interface ClassFileConstants {
case ClassFileConstants.MAJOR_VERSION_1_1:
return ((long)ClassFileConstants.MAJOR_VERSION_1_1 << 16) + ClassFileConstants.MINOR_VERSION_3;
default:
- if (major <= MAJOR_LATEST_VERSION)
- return ((long)major << 16) + ClassFileConstants.MINOR_VERSION_0;
+ major = Math.min(major, MAJOR_LATEST_VERSION);
+ return ((long)major << 16) + ClassFileConstants.MINOR_VERSION_0;
}
- return 0;
}
/*
* cldc1.1 is 45.3, but we modify it to be different from JDK1_1.
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java
index b09fa0512b..8b3ef33a3e 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java
@@ -860,11 +860,8 @@ public class CompilerOptions {
if (index != -1)
version = version.substring(0, index);
}
- int major = Integer.parseInt(version) + ClassFileConstants.MAJOR_VERSION_0;
- if (major <= ClassFileConstants.MAJOR_LATEST_VERSION) {
- long jdkLevel = ((long) major << 16) + ClassFileConstants.MINOR_VERSION_0;
- return jdkLevel;
- }
+ int major = Math.min(Integer.parseInt(version) + ClassFileConstants.MAJOR_VERSION_0, ClassFileConstants.MAJOR_LATEST_VERSION);
+ return ((long) major << 16) + ClassFileConstants.MINOR_VERSION_0;
} catch (NumberFormatException e) {
// do nothing and return 0 at the end
}

Back to the top