Warn when running the compiler under Java 6 or 7

(cherry picked from commit 5537800)

(cherry picked from commit 5614874)
This commit is contained in:
Dmitry Jemerov
2017-02-15 17:04:24 +01:00
parent 000da2f6d0
commit af7de9a0c5
11 changed files with 29 additions and 5 deletions
@@ -79,6 +79,9 @@ public abstract class CommonCompilerArguments implements Serializable {
@Argument(value = "Xno-check-impl", description = "Do not check presence of 'impl' modifier in multi-platform projects")
public boolean noCheckImpl;
@Argument(value = "Xskip-java-check", description = "Do not warn when running the compiler under Java 6 or 7")
public boolean noJavaVersionWarning;
@Argument(value = "Xcoroutines=warn")
public boolean coroutinesWarn;
@@ -155,6 +155,7 @@ public abstract class CLICompiler<A extends CommonCompilerArguments> {
}
reportUnknownExtraFlags(messageCollector, arguments);
reportUnsupportedJavaVersion(messageCollector, arguments);
GroupingMessageCollector groupingCollector = new GroupingMessageCollector(messageCollector);
@@ -350,6 +351,16 @@ public abstract class CLICompiler<A extends CommonCompilerArguments> {
}
}
private void reportUnsupportedJavaVersion(MessageCollector collector, A arguments) {
if (!SystemInfo.isJavaVersionAtLeast("1.8") && !arguments.noJavaVersionWarning) {
collector.report(
CompilerMessageSeverity.STRONG_WARNING,
"Running the Kotlin compiler under Java 6 or 7 is unsupported and will no longer be possible in a future update.",
CompilerMessageLocation.NO_LOCATION
);
}
}
@NotNull
protected abstract ExitCode doExecute(
@NotNull A arguments,
+2 -1
View File
@@ -7,7 +7,8 @@ where advanced options include:
-Xplugin <path> Load plugins from the given classpath
-Xmulti-platform Enable experimental language support for multi-platform projects
-Xno-check-impl Do not check presence of 'impl' modifier in multi-platform projects
-Xskip-java-check Do not warn when running the compiler under Java 6 or 7
-Xcoroutines={enable|warn|error} Enable coroutines or report warnings or errors on declarations and use sites of 'suspend' modifier
Advanced options are non-standard and may be changed or removed without any notice.
OK
OK
+1
View File
@@ -1,2 +1,3 @@
info: Kotlin Compiler version $VERSION$
warning: running the Kotlin compiler under Java 6 or 7 is unsupported and will no longer be possible in a future update.
OK
+1
View File
@@ -18,6 +18,7 @@ where advanced options include:
-Xplugin <path> Load plugins from the given classpath
-Xmulti-platform Enable experimental language support for multi-platform projects
-Xno-check-impl Do not check presence of 'impl' modifier in multi-platform projects
-Xskip-java-check Do not warn when running the compiler under Java 6 or 7
-Xcoroutines={enable|warn|error} Enable coroutines or report warnings or errors on declarations and use sites of 'suspend' modifier
Advanced options are non-standard and may be changed or removed without any notice.
+1
View File
@@ -1,4 +1,5 @@
warning: flag is not supported by this version of the compiler: -Xabcdefghijklm
warning: flag is not supported by this version of the compiler: -Xnopqrstuvwxyz
warning: flag is not supported by this version of the compiler: -XXxxxxxxxxxxxx
warning: running the Kotlin compiler under Java 6 or 7 is unsupported and will no longer be possible in a future update.
OK
+1
View File
@@ -1,2 +1,3 @@
info: Kotlin Compiler version $VERSION$
warning: running the Kotlin compiler under Java 6 or 7 is unsupported and will no longer be possible in a future update.
OK
@@ -87,6 +87,9 @@ public abstract class KotlinIntegrationTestBase extends TestCaseWithTmpdir {
content = normalizePath(content, getKotlinProjectHome(), "[KotlinProjectHome]");
content = content.replaceAll(Pattern.quote(KotlinCompilerVersion.VERSION), "[KotlinVersion]");
content = StringUtil.convertLineSeparators(content);
content = Pattern.compile("^.+running the Kotlin compiler under Java 6 or 7 is unsupported and will no longer be possible in a future update\\.\n", Pattern.MULTILINE)
.matcher(content)
.replaceAll("");
return content;
}
@@ -74,12 +74,13 @@ public abstract class AbstractCliTest extends TestCaseWithTmpdir {
@NotNull BinaryVersion version
) {
String testDataAbsoluteDir = new File(testDataDir).getAbsolutePath();
String normalizedOutputWithoutExitCode = pureOutput
String normalizedOutputWithoutExitCode = StringUtil.convertLineSeparators(pureOutput)
.replace(testDataAbsoluteDir, "$TESTDATA_DIR$")
.replace(FileUtil.toSystemIndependentName(testDataAbsoluteDir), "$TESTDATA_DIR$")
.replace(PathUtil.getKotlinPathsForDistDirectory().getHomePath().getAbsolutePath(), "$PROJECT_DIR$")
.replace("expected version is " + version, "expected version is $ABI_VERSION$")
.replace("\\", "/")
.replaceAll("^.+running the Kotlin compiler under Java 6 or 7 is unsupported and will no longer be possible in a future update\\.\n", "")
.replace(KotlinCompilerVersion.VERSION, "$VERSION$");
return normalizedOutputWithoutExitCode + exitCode;
@@ -43,6 +43,7 @@ public abstract class CompilerSmokeTestBase extends KotlinIntegrationTestBase {
javaArgs.add("org.jetbrains.kotlin.cli.jvm.K2JVMCompiler");
Collections.addAll(javaArgs, arguments);
javaArgs.add("-Xskip-java-check");
return run(logName, ArrayUtil.toStringArray(javaArgs));
}
@@ -39,7 +39,7 @@ abstract class AbstractMultiPlatformIntegrationTest : KtUsefulTestCase() {
val result = buildString {
val (commonOutput, commonExitCode) = AbstractCliTest.executeCompilerGrabOutput(K2MetadataCompiler(), listOf(
commonSrc.absolutePath, "-d", commonDest.absolutePath
commonSrc.absolutePath, "-d", commonDest.absolutePath, "-Xskip-java-check"
))
appendln("-- Common --")
appendln("Exit code: $commonExitCode")
@@ -50,7 +50,7 @@ abstract class AbstractMultiPlatformIntegrationTest : KtUsefulTestCase() {
val (jvmOutput, jvmExitCode) = AbstractCliTest.executeCompilerGrabOutput(K2JVMCompiler(), listOf(
jvmSrc.absolutePath, commonSrc.absolutePath,
"-d", jvmDest.absolutePath,
"-Xmulti-platform"
"-Xmulti-platform", "-Xskip-java-check"
))
appendln("-- JVM --")
appendln("Exit code: $jvmExitCode")
@@ -62,7 +62,7 @@ abstract class AbstractMultiPlatformIntegrationTest : KtUsefulTestCase() {
val (jsOutput, jsExitCode) = AbstractCliTest.executeCompilerGrabOutput(K2JSCompiler(), listOf(
jsSrc.absolutePath, commonSrc.absolutePath,
"-output", jsDest.absolutePath,
"-Xmulti-platform"
"-Xmulti-platform", "-Xskip-java-check"
))
appendln("-- JS --")
appendln("Exit code: $jsExitCode")