Make fast class files reading mode default in compiler tests
This makes sense because this mode is the default in the production
compiler. Forgetting to enable it where necessary led to different
bizarre test failures, see for example changes around 3fee84b966 and
KT-34826
This commit is contained in:
+3
-2
@@ -19,9 +19,10 @@ package org.jetbrains.kotlin.checkers
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
|
||||
abstract class AbstractForeignAnnotationsNoAnnotationInClasspathWithFastClassReadingTest : AbstractForeignAnnotationsNoAnnotationInClasspathTest() {
|
||||
abstract class AbstractForeignAnnotationsNoAnnotationInClasspathWithPsiClassReadingTest :
|
||||
AbstractForeignAnnotationsNoAnnotationInClasspathTest() {
|
||||
override fun performCustomConfiguration(configuration: CompilerConfiguration) {
|
||||
super.performCustomConfiguration(configuration)
|
||||
configuration.put(JVMConfigurationKeys.USE_FAST_CLASS_FILES_READING, true)
|
||||
configuration.put(JVMConfigurationKeys.USE_PSI_CLASS_FILES_READING, true)
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -34,7 +34,8 @@ abstract class AbstractForeignJava8AnnotationsNoAnnotationInClasspathTest : Abst
|
||||
}
|
||||
}
|
||||
|
||||
abstract class AbstractForeignJava8AnnotationsNoAnnotationInClasspathWithFastClassReadingTest : AbstractForeignAnnotationsNoAnnotationInClasspathWithFastClassReadingTest() {
|
||||
abstract class AbstractForeignJava8AnnotationsNoAnnotationInClasspathWithPsiClassReadingTest :
|
||||
AbstractForeignAnnotationsNoAnnotationInClasspathWithPsiClassReadingTest() {
|
||||
override val annotationsPath: String
|
||||
get() = JAVA8_ANNOTATION_SOURCES_PATH
|
||||
|
||||
|
||||
+5
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles;
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
|
||||
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime;
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration;
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys;
|
||||
import org.jetbrains.kotlin.parsing.KotlinParserDefinition;
|
||||
import org.jetbrains.kotlin.test.*;
|
||||
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase;
|
||||
@@ -71,6 +72,10 @@ public abstract class KotlinMultiFileTestWithJava<M, F> extends KtUsefulTestCase
|
||||
ContentRootsKt.addKotlinSourceRoot(configuration, kotlinSourceRoot.getPath());
|
||||
}
|
||||
|
||||
// Currently, we're testing IDE behavior when generating the .txt files for comparison, but this can be changed.
|
||||
// The main difference is the fact that the new class file reading implementation doesn't load parameter names from JDK classes.
|
||||
configuration.put(JVMConfigurationKeys.USE_PSI_CLASS_FILES_READING, true);
|
||||
|
||||
performCustomConfiguration(configuration);
|
||||
return KotlinCoreEnvironment.createForTests(getTestRootDisposable(), configuration, getEnvironmentConfigFiles());
|
||||
}
|
||||
|
||||
-6
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.codegen
|
||||
|
||||
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoot
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
import java.io.File
|
||||
|
||||
abstract class AbstractBlackBoxAgainstJavaCodegenTest : AbstractBlackBoxCodegenTest() {
|
||||
@@ -37,10 +36,5 @@ abstract class AbstractBlackBoxAgainstJavaCodegenTest : AbstractBlackBoxCodegenT
|
||||
|
||||
override fun updateConfiguration(configuration: CompilerConfiguration) {
|
||||
configuration.addJvmClasspathRoot(javaClassesOutputDirectory)
|
||||
|
||||
if (configuration.get(JVMConfigurationKeys.USE_FAST_CLASS_FILES_READING) == null) {
|
||||
// By default (unless disabled in the test with a directive), use the fast class reading mode
|
||||
configuration.put(JVMConfigurationKeys.USE_FAST_CLASS_FILES_READING, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-5
@@ -80,11 +80,9 @@ abstract class AbstractCompileJavaAgainstKotlinTest : TestCaseWithTmpdir() {
|
||||
|
||||
if (!compiledSuccessfully) return
|
||||
|
||||
val environment = KotlinCoreEnvironment.createForTests(
|
||||
testRootDisposable,
|
||||
newConfiguration(ConfigurationKind.ALL, TestJdkKind.FULL_JDK, getAnnotationsJar(), out),
|
||||
EnvironmentConfigFiles.JVM_CONFIG_FILES
|
||||
)
|
||||
val configuration = newConfiguration(ConfigurationKind.ALL, TestJdkKind.FULL_JDK, getAnnotationsJar(), out)
|
||||
configuration.put(JVMConfigurationKeys.USE_PSI_CLASS_FILES_READING, true)
|
||||
val environment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
|
||||
setupLanguageVersionSettingsForCompilerTests(ktFile.readText(), environment)
|
||||
|
||||
val analysisResult = JvmResolveUtil.analyze(environment)
|
||||
|
||||
+2
-2
@@ -180,7 +180,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean useFastClassFilesReading() {
|
||||
protected boolean usePsiClassFilesReading() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -310,7 +310,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
|
||||
) throws IOException {
|
||||
compileJavaWithAnnotationsJar(javaFiles, outDir);
|
||||
return loadTestPackageAndBindingContextFromJavaRoot(outDir, myTestRootDisposable, getJdkKind(), configurationKind, true,
|
||||
useFastClassFilesReading(), useJavacWrapper(), null,
|
||||
usePsiClassFilesReading(), useJavacWrapper(), null,
|
||||
getExtraClasspath(), this::configureEnvironment);
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -19,11 +19,11 @@ package org.jetbrains.kotlin.jvm.compiler
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import java.io.File
|
||||
|
||||
abstract class AbstractLoadJavaWithFastClassReadingTest : AbstractLoadJavaTest() {
|
||||
override fun useFastClassFilesReading() = true
|
||||
abstract class AbstractLoadJavaWithPsiClassReadingTest : AbstractLoadJavaTest() {
|
||||
override fun usePsiClassFilesReading() = true
|
||||
|
||||
override fun getExpectedFile(expectedFileName: String): File {
|
||||
val differentResultFile = KotlinTestUtils.replaceExtension(File(expectedFileName), "fast.txt")
|
||||
val differentResultFile = KotlinTestUtils.replaceExtension(File(expectedFileName), "psi.txt")
|
||||
if (differentResultFile.exists()) return differentResultFile
|
||||
return super.getExpectedFile(expectedFileName)
|
||||
}
|
||||
+4
-4
@@ -78,7 +78,7 @@ public class LoadDescriptorUtil {
|
||||
@NotNull TestJdkKind testJdkKind,
|
||||
@NotNull ConfigurationKind configurationKind,
|
||||
boolean isBinaryRoot,
|
||||
boolean useFastClassReading,
|
||||
boolean usePsiClassReading,
|
||||
boolean useJavacWrapper,
|
||||
@Nullable LanguageVersionSettings explicitLanguageVersionSettings
|
||||
) {
|
||||
@@ -88,7 +88,7 @@ public class LoadDescriptorUtil {
|
||||
testJdkKind,
|
||||
configurationKind,
|
||||
isBinaryRoot,
|
||||
useFastClassReading,
|
||||
usePsiClassReading,
|
||||
useJavacWrapper,
|
||||
explicitLanguageVersionSettings,
|
||||
Collections.emptyList(),
|
||||
@@ -103,7 +103,7 @@ public class LoadDescriptorUtil {
|
||||
@NotNull TestJdkKind testJdkKind,
|
||||
@NotNull ConfigurationKind configurationKind,
|
||||
boolean isBinaryRoot,
|
||||
boolean useFastClassReading,
|
||||
boolean usePsiClassReading,
|
||||
boolean useJavacWrapper,
|
||||
@Nullable LanguageVersionSettings explicitLanguageVersionSettings,
|
||||
@NotNull List<File> additionalClasspath,
|
||||
@@ -125,7 +125,7 @@ public class LoadDescriptorUtil {
|
||||
}
|
||||
CompilerConfiguration configuration =
|
||||
KotlinTestUtils.newConfiguration(configurationKind, testJdkKind, javaBinaryRoots, javaSourceRoots);
|
||||
configuration.put(JVMConfigurationKeys.USE_FAST_CLASS_FILES_READING, useFastClassReading);
|
||||
configuration.put(JVMConfigurationKeys.USE_PSI_CLASS_FILES_READING, usePsiClassReading);
|
||||
configuration.put(JVMConfigurationKeys.USE_JAVAC, useJavacWrapper);
|
||||
if (explicitLanguageVersionSettings != null) {
|
||||
configuration.put(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, explicitLanguageVersionSettings);
|
||||
|
||||
+2
-2
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.jvm.compiler.ir
|
||||
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
import org.jetbrains.kotlin.jvm.compiler.AbstractLoadJavaWithFastClassReadingTest
|
||||
import org.jetbrains.kotlin.jvm.compiler.AbstractLoadJavaWithPsiClassReadingTest
|
||||
|
||||
abstract class AbstractIrLoadJavaTest : AbstractLoadJavaWithFastClassReadingTest() {
|
||||
abstract class AbstractIrLoadJavaTest : AbstractLoadJavaWithPsiClassReadingTest() {
|
||||
override fun updateConfiguration(configuration: CompilerConfiguration) = configuration.put(JVMConfigurationKeys.IR, true)
|
||||
}
|
||||
|
||||
+7
-5
@@ -7,12 +7,12 @@ package org.jetbrains.kotlin.resolve;
|
||||
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles;
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration;
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys;
|
||||
import org.jetbrains.kotlin.psi.KtFile;
|
||||
import org.jetbrains.kotlin.test.ConfigurationKind;
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
||||
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment;
|
||||
import org.jetbrains.kotlin.test.TestFiles;
|
||||
import org.jetbrains.kotlin.test.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
@@ -23,7 +23,9 @@ public abstract class ExtensibleResolveTestCase extends KotlinTestWithEnvironmen
|
||||
|
||||
@Override
|
||||
protected KotlinCoreEnvironment createEnvironment() {
|
||||
return createEnvironmentWithMockJdk(ConfigurationKind.JDK_ONLY);
|
||||
CompilerConfiguration configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK);
|
||||
configuration.put(JVMConfigurationKeys.USE_PSI_CLASS_FILES_READING, true);
|
||||
return KotlinCoreEnvironment.createForTests(getTestRootDisposable(), configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user