Put type enhancement improvements under the compiler flag

This commit is contained in:
Victor Petukhov
2020-12-09 12:16:26 +03:00
parent 857cc92326
commit 6f8f531d87
30 changed files with 274 additions and 50 deletions
@@ -41,6 +41,7 @@ import java.io.IOException;
import java.util.*;
import java.util.regex.Pattern;
import static org.jetbrains.kotlin.checkers.CompilerTestLanguageVersionSettingsKt.parseLanguageVersionSettings;
import static org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil.*;
import static org.jetbrains.kotlin.test.KotlinTestUtils.compileKotlinWithJava;
import static org.jetbrains.kotlin.test.KotlinTestUtils.newConfiguration;
@@ -85,7 +86,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
List<File> javaSources = FileUtil.findFilesByMask(Pattern.compile(".+\\.java"), sourcesDir);
Pair<PackageViewDescriptor, BindingContext> binaryPackageAndContext = compileJavaAndLoadTestPackageAndBindingContextFromBinary(
javaSources, tmpdir, ConfigurationKind.JDK_ONLY
javaSources, tmpdir, ConfigurationKind.JDK_ONLY, null
);
checkJavaPackage(expectedFile, binaryPackageAndContext.first, binaryPackageAndContext.second, COMPARATOR_CONFIGURATION);
@@ -175,7 +176,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
public static void updateConfigurationWithDirectives(String content, CompilerConfiguration configuration) {
Directives directives = KotlinTestUtils.parseDirectives(content);
LanguageVersionSettings languageVersionSettings = CompilerTestLanguageVersionSettingsKt.parseLanguageVersionSettings(directives);
LanguageVersionSettings languageVersionSettings = parseLanguageVersionSettings(directives);
if (languageVersionSettings == null) {
languageVersionSettings = CompilerTestLanguageVersionSettingsKt.defaultLanguageVersionSettings();
}
@@ -274,9 +275,12 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
assertTrue(testPackageDir.mkdir());
FileUtil.copy(originalJavaFile, new File(testPackageDir, originalJavaFile.getName()));
Directives directives = KotlinTestUtils.parseDirectives(FileUtil.loadFile(originalJavaFile));
LanguageVersionSettings languageVersionSettings = parseLanguageVersionSettings(directives);
Pair<PackageViewDescriptor, BindingContext> javaPackageAndContext = loadTestPackageAndBindingContextFromJavaRoot(
tmpdir, getTestRootDisposable(), getJdkKind(), ConfigurationKind.JDK_ONLY, false,
false, useJavacWrapper(), withForeignAnnotations(), null);
false, useJavacWrapper(), withForeignAnnotations(), languageVersionSettings);
checkJavaPackage(
expectedFile, javaPackageAndContext.first, javaPackageAndContext.second,
@@ -289,9 +293,10 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
File compiledDir = new File(tmpdir, "compiled");
assertTrue(srcDir.mkdir());
assertTrue(compiledDir.mkdir());
String fileContent = FileUtil.loadFile(new File(javaFileName));
List<File> srcFiles = TestFiles.createTestFiles(
new File(javaFileName).getName(), FileUtil.loadFile(new File(javaFileName), true),
new File(javaFileName).getName(), fileContent,
new TestFiles.TestFileFactoryNoModules<File>() {
@NotNull
@Override
@@ -307,8 +312,11 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
}
});
Directives directives = KotlinTestUtils.parseDirectives(fileContent);
LanguageVersionSettings languageVersionSettings = parseLanguageVersionSettings(directives);
Pair<PackageViewDescriptor, BindingContext> javaPackageAndContext = compileJavaAndLoadTestPackageAndBindingContextFromBinary(
srcFiles, compiledDir, ConfigurationKind.ALL
srcFiles, compiledDir, ConfigurationKind.ALL, languageVersionSettings
);
@@ -329,11 +337,12 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
private Pair<PackageViewDescriptor, BindingContext> compileJavaAndLoadTestPackageAndBindingContextFromBinary(
@NotNull Collection<File> javaFiles,
@NotNull File outDir,
@NotNull ConfigurationKind configurationKind
@NotNull ConfigurationKind configurationKind,
@Nullable LanguageVersionSettings explicitLanguageVersionSettings
) throws IOException {
compileJavaWithAnnotationsJar(javaFiles, outDir, getAdditionalJavacArgs(), getJdkHomeForJavac(), withForeignAnnotations());
return loadTestPackageAndBindingContextFromJavaRoot(outDir, getTestRootDisposable(), getJdkKind(), configurationKind, true,
usePsiClassFilesReading(), useJavacWrapper(), withForeignAnnotations(), null,
usePsiClassFilesReading(), useJavacWrapper(), withForeignAnnotations(), explicitLanguageVersionSettings,
getExtraClasspath(), this::configureEnvironment);
}