diff --git a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/crossinline_1_2.txt b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/crossinline_1_2.txt index 2788e4e78d3..90225f11ccb 100644 --- a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/crossinline_1_2.txt +++ b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/crossinline_1_2.txt @@ -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 (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 (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 (p0: SourceCrossinline, p1: kotlin.jvm.functions.Function1): void diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/CodegenTestCase.java b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/CodegenTestCase.java index 96a274e6aab..227e97d26bf 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/CodegenTestCase.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/CodegenTestCase.java @@ -167,7 +167,7 @@ public abstract class CodegenTestCase extends KtUsefulTestCase { @NotNull String coroutinesPackage ) { LanguageVersionSettings explicitLanguageVersionSettings = null; - LanguageVersion explicitLanguageVersion = null; + boolean disableReleaseCoroutines = false; List 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> FLAG_NAMESPACE_TO_CLASS = ImmutableMap.of( "CLI", CLIConfigurationKeys.class, "JVM", JVMConfigurationKeys.class