Bug 532694 - [10] Execution environment has missing
FRAMEWORK_EXECUTIONENVIRONMENT property for java 10

Change-Id: Ie5eac5955e085e273f00d045392f7a2859a07f82
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/environments/ExecutionEnvironment.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/environments/ExecutionEnvironment.java
index ba2dd6f..a3fde7e 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/environments/ExecutionEnvironment.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/environments/ExecutionEnvironment.java
@@ -48,6 +48,7 @@
 import org.eclipse.osgi.util.NLS;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
+import org.osgi.framework.Version;
 
 /**
  * A contributed execution environment.
@@ -465,10 +466,31 @@
 			profile.setProperty(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, getCompliance());
 			profile.setProperty("org.eclipse.jdt.core.compiler.problem.assertIdentifier", "error"); //$NON-NLS-1$ //$NON-NLS-2$
 			profile.setProperty("org.eclipse.jdt.core.compiler.problem.enumIdentifier", "error"); //$NON-NLS-1$ //$NON-NLS-2$
+			profile.setProperty(Constants.FRAMEWORK_EXECUTIONENVIRONMENT, calculateVMExecutionEnvs(new Version(getCompliance())));
+
 		}
 		return profile;
 	}
 
+	private static final String JAVASE = "JavaSE"; //$NON-NLS-1$
+
+	private String calculateVMExecutionEnvs(Version javaVersion) {
+		StringBuilder result = new StringBuilder("OSGi/Minimum-1.0, OSGi/Minimum-1.1, OSGi/Minimum-1.2, JavaSE/compact1-1.8, JavaSE/compact2-1.8, JavaSE/compact3-1.8, JRE-1.1, J2SE-1.2, J2SE-1.3, J2SE-1.4, J2SE-1.5, JavaSE-1.6, JavaSE-1.7, JavaSE-1.8"); //$NON-NLS-1$
+		Version v = new Version(9, 0, 0);
+		while (v.compareTo(javaVersion) <= 0) {
+			result.append(',').append(' ').append(JAVASE).append('-').append(v.getMajor());
+			if (v.getMinor() > 0) {
+				result.append('.').append(v.getMinor());
+			}
+			if (v.getMajor() == javaVersion.getMajor()) {
+				v = new Version(v.getMajor(), v.getMinor() + 1, 0);
+			} else {
+				v = new Version(v.getMajor() + 1, 0, 0);
+			}
+		}
+		return result.toString();
+	}
+
 
 	/**
 	 * Bug 470616: [1.9] JavaSE-9 Execution Environment should set proper compiler compliance/source/target levels