Do not support LANGUAGE_VERSION directive in codegen tests
Test data of crossinline_1_2.txt has changed because now we do not automatically enable 1.2 (with _all_ of its features) when we're executing a common coroutines test with old coroutines; and so the NewCapturedReceiverFieldNamingConvention language feature (which is introduced in 1.3) is now enabled in this test
This commit is contained in:
+6
-6
@@ -36,7 +36,7 @@ public final class CrossinlineKt$box$1$doResume$$inlined$filter$1$2$1 {
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class CrossinlineKt$box$1$doResume$$inlined$filter$1$2 {
|
||||
synthetic final field receiver$0$inlined: Sink
|
||||
synthetic final field $this_source$inlined: Sink
|
||||
synthetic final field this$0: CrossinlineKt$box$1$doResume$$inlined$filter$1
|
||||
inner class CrossinlineKt$box$1$doResume$$inlined$filter$1$2
|
||||
inner class CrossinlineKt$box$1$doResume$$inlined$filter$1$2$1
|
||||
@@ -47,7 +47,7 @@ public final class CrossinlineKt$box$1$doResume$$inlined$filter$1$2 {
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class CrossinlineKt$box$1$doResume$$inlined$filter$1 {
|
||||
synthetic final field receiver$0$inlined: SourceCrossinline
|
||||
synthetic final field $this_filter$inlined: SourceCrossinline
|
||||
inner class CrossinlineKt$box$1$doResume$$inlined$filter$1
|
||||
inner class CrossinlineKt$box$1$doResume$$inlined$filter$1$1
|
||||
public method <init>(p0: SourceCrossinline): void
|
||||
@@ -102,7 +102,7 @@ public final class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1$1 {
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1 {
|
||||
synthetic final field receiver$0$inlined: Sink
|
||||
synthetic final field $this_source$inlined: Sink
|
||||
synthetic final field this$0: CrossinlineKt$box$1$filter$$inlined$source$1
|
||||
inner class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1
|
||||
inner class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1$1
|
||||
@@ -114,7 +114,7 @@ public final class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1 {
|
||||
@kotlin.Metadata
|
||||
public final class CrossinlineKt$box$1$filter$$inlined$source$1 {
|
||||
synthetic final field $predicate$inlined: kotlin.jvm.functions.Function1
|
||||
synthetic final field receiver$0$inlined: SourceCrossinline
|
||||
synthetic final field $this_filter$inlined: SourceCrossinline
|
||||
inner class CrossinlineKt$box$1$filter$$inlined$source$1
|
||||
inner class CrossinlineKt$box$1$filter$$inlined$source$1$1
|
||||
public method <init>(p0: SourceCrossinline, p1: kotlin.jvm.functions.Function1): void
|
||||
@@ -221,7 +221,7 @@ public final class CrossinlineKt$filter$$inlined$source$1$lambda$1$1 {
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class CrossinlineKt$filter$$inlined$source$1$lambda$1 {
|
||||
synthetic final field receiver$0$inlined: Sink
|
||||
synthetic final field $this_source$inlined: Sink
|
||||
synthetic final field this$0: CrossinlineKt$filter$$inlined$source$1
|
||||
inner class CrossinlineKt$filter$$inlined$source$1$lambda$1
|
||||
inner class CrossinlineKt$filter$$inlined$source$1$lambda$1$1
|
||||
@@ -233,7 +233,7 @@ public final class CrossinlineKt$filter$$inlined$source$1$lambda$1 {
|
||||
@kotlin.Metadata
|
||||
public final class CrossinlineKt$filter$$inlined$source$1 {
|
||||
synthetic final field $predicate$inlined: kotlin.jvm.functions.Function1
|
||||
synthetic final field receiver$0$inlined: SourceCrossinline
|
||||
synthetic final field $this_filter$inlined: SourceCrossinline
|
||||
inner class CrossinlineKt$filter$$inlined$source$1
|
||||
inner class CrossinlineKt$filter$$inlined$source$1$1
|
||||
public method <init>(p0: SourceCrossinline, p1: kotlin.jvm.functions.Function1): void
|
||||
|
||||
@@ -167,7 +167,7 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
|
||||
@NotNull String coroutinesPackage
|
||||
) {
|
||||
LanguageVersionSettings explicitLanguageVersionSettings = null;
|
||||
LanguageVersion explicitLanguageVersion = null;
|
||||
boolean disableReleaseCoroutines = false;
|
||||
|
||||
List<String> kotlinConfigurationFlags = new ArrayList<>(0);
|
||||
for (TestFile testFile : testFilesWithConfigurationDirectives) {
|
||||
@@ -183,17 +183,18 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
|
||||
|
||||
String version = InTextDirectivesUtils.findStringWithPrefixes(testFile.content, "// LANGUAGE_VERSION:");
|
||||
if (version != null) {
|
||||
assertDirectivesToNull(explicitLanguageVersionSettings, explicitLanguageVersion);
|
||||
explicitLanguageVersion = LanguageVersion.fromVersionString(version);
|
||||
throw new AssertionError(
|
||||
"Do not use LANGUAGE_VERSION directive in compiler tests because it's prone to limiting the test\n" +
|
||||
"to a specific language version, which will become obsolete at some point and the test won't check\n" +
|
||||
"things like feature intersection with newer releases. Use `// !LANGUAGE: [+-]FeatureName` directive instead,\n" +
|
||||
"where FeatureName is an entry of the enum `LanguageFeature`\n"
|
||||
);
|
||||
}
|
||||
|
||||
if (!InTextDirectivesUtils.findLinesWithPrefixesRemoved(testFile.content, "// COMMON_COROUTINES_TEST").isEmpty()) {
|
||||
assert(!testFile.content.contains("COROUTINES_PACKAGE")) : "Must replace COROUTINES_PACKAGE prior to tests compilation";
|
||||
if (!coroutinesPackage.isEmpty()) {
|
||||
if (coroutinesPackage.equals("kotlin.coroutines.experimental")) {
|
||||
explicitLanguageVersion = LanguageVersion.KOTLIN_1_2;
|
||||
} else {
|
||||
explicitLanguageVersion = LanguageVersion.KOTLIN_1_3;
|
||||
}
|
||||
assert !testFile.content.contains("COROUTINES_PACKAGE") : "Must replace COROUTINES_PACKAGE prior to tests compilation";
|
||||
if (coroutinesPackage.equals("kotlin.coroutines.experimental")) {
|
||||
disableReleaseCoroutines = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,7 +202,7 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
|
||||
|
||||
LanguageVersionSettings fileLanguageVersionSettings = parseLanguageVersionSettings(directives);
|
||||
if (fileLanguageVersionSettings != null) {
|
||||
assertDirectivesToNull(explicitLanguageVersionSettings, null);
|
||||
assert explicitLanguageVersionSettings == null : "Should not specify !LANGUAGE directive twice";
|
||||
explicitLanguageVersionSettings = fileLanguageVersionSettings;
|
||||
}
|
||||
}
|
||||
@@ -209,26 +210,19 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
|
||||
if (explicitLanguageVersionSettings != null) {
|
||||
CommonConfigurationKeysKt.setLanguageVersionSettings(configuration, explicitLanguageVersionSettings);
|
||||
}
|
||||
else if (explicitLanguageVersion != null) {
|
||||
else if (disableReleaseCoroutines) {
|
||||
CompilerTestLanguageVersionSettings compilerLanguageVersionSettings = new CompilerTestLanguageVersionSettings(
|
||||
Collections.emptyMap(),
|
||||
ApiVersion.createByLanguageVersion(explicitLanguageVersion),
|
||||
explicitLanguageVersion,
|
||||
Collections.singletonMap(LanguageFeature.ReleaseCoroutines, LanguageFeature.State.DISABLED),
|
||||
ApiVersion.LATEST_STABLE,
|
||||
LanguageVersion.LATEST_STABLE,
|
||||
Collections.emptyMap()
|
||||
);
|
||||
CommonConfigurationKeysKt.setLanguageVersionSettings(
|
||||
configuration,
|
||||
compilerLanguageVersionSettings
|
||||
);
|
||||
CommonConfigurationKeysKt.setLanguageVersionSettings(configuration, compilerLanguageVersionSettings);
|
||||
}
|
||||
|
||||
updateConfigurationWithFlags(configuration, kotlinConfigurationFlags);
|
||||
}
|
||||
|
||||
private static void assertDirectivesToNull(@Nullable LanguageVersionSettings settings, @Nullable LanguageVersion version) {
|
||||
assert settings == null && version == null : "Should not specify LANGUAGE_VERSION twice or together with !LANGUAGE directive";
|
||||
}
|
||||
|
||||
private static final Map<String, Class<?>> FLAG_NAMESPACE_TO_CLASS = ImmutableMap.of(
|
||||
"CLI", CLIConfigurationKeys.class,
|
||||
"JVM", JVMConfigurationKeys.class
|
||||
|
||||
Reference in New Issue
Block a user