Refactor codegen test utilities
Use GenerationUtils.compileFiles instead of CodegenTestUtil.generateFiles
This commit is contained in:
committed by
Mikhael Bogdanov
parent
7613ec54f5
commit
c2f275faec
@@ -75,7 +75,8 @@ abstract class AbstractBytecodeListingTest : CodegenTestCase() {
|
||||
val environment = KotlinCoreEnvironment.createForTests(disposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
|
||||
setupEnvironment(environment)
|
||||
|
||||
return CodegenTestUtil.generateFiles(environment, loadMultiFiles(files, environment.project), classBuilderFactory)
|
||||
val testFiles = loadMultiFiles(files, environment.project)
|
||||
return GenerationUtils.compileFiles(testFiles.psiFiles, environment, classBuilderFactory).factory
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,13 +19,8 @@ package org.jetbrains.kotlin.codegen;
|
||||
import kotlin.collections.CollectionsKt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.analyzer.AnalysisResult;
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
|
||||
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime;
|
||||
import org.jetbrains.kotlin.codegen.state.GenerationState;
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration;
|
||||
import org.jetbrains.kotlin.resolve.AnalyzingUtils;
|
||||
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil;
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
||||
import org.jetbrains.kotlin.utils.ExceptionUtilsKt;
|
||||
import org.jetbrains.kotlin.utils.StringsKt;
|
||||
@@ -45,35 +40,7 @@ public class CodegenTestUtil {
|
||||
|
||||
@NotNull
|
||||
public static ClassFileFactory generateFiles(@NotNull KotlinCoreEnvironment environment, @NotNull CodegenTestFiles files) {
|
||||
return generateFiles(environment, files, ClassBuilderFactories.TEST);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static ClassFileFactory generateFiles(
|
||||
@NotNull KotlinCoreEnvironment environment,
|
||||
@NotNull CodegenTestFiles files,
|
||||
@NotNull ClassBuilderFactory classBuilderFactory) {
|
||||
AnalysisResult analysisResult = JvmResolveUtil.analyzeAndCheckForErrors(files.getPsiFiles(), environment);
|
||||
analysisResult.throwIfError();
|
||||
AnalyzingUtils.throwExceptionOnErrors(analysisResult.getBindingContext());
|
||||
CompilerConfiguration configuration = environment.getConfiguration();
|
||||
GenerationState state = new GenerationState(
|
||||
environment.getProject(),
|
||||
classBuilderFactory,
|
||||
analysisResult.getModuleDescriptor(),
|
||||
analysisResult.getBindingContext(),
|
||||
files.getPsiFiles(),
|
||||
configuration
|
||||
);
|
||||
|
||||
if (analysisResult.getShouldGenerateCode()) {
|
||||
KotlinCodegenFacade.compileCorrectFiles(state, CompilationErrorHandler.THROW_EXCEPTION);
|
||||
}
|
||||
|
||||
// For JVM-specific errors
|
||||
AnalyzingUtils.throwExceptionOnErrors(state.getCollectedExtraJvmDiagnostics());
|
||||
|
||||
return state.getFactory();
|
||||
return GenerationUtils.compileFiles(files.getPsiFiles(), environment).getFactory();
|
||||
}
|
||||
|
||||
public static void assertThrows(@NotNull Method foo, @NotNull Class<? extends Throwable> exceptionClass,
|
||||
|
||||
@@ -40,23 +40,35 @@ object GenerationUtils {
|
||||
compileFiles(listOf(ktFile), environment).factory
|
||||
|
||||
@JvmStatic
|
||||
fun compileFiles(files: List<KtFile>, environment: KotlinCoreEnvironment): GenerationState =
|
||||
compileFiles(files, environment.configuration) { scope -> JvmPackagePartProvider(environment, scope) }
|
||||
@JvmOverloads
|
||||
fun compileFiles(
|
||||
files: List<KtFile>,
|
||||
environment: KotlinCoreEnvironment,
|
||||
classBuilderFactory: ClassBuilderFactory = ClassBuilderFactories.TEST
|
||||
): GenerationState =
|
||||
compileFiles(files, environment.configuration, classBuilderFactory) { scope ->
|
||||
JvmPackagePartProvider(environment, scope)
|
||||
}
|
||||
|
||||
|
||||
|
||||
@JvmStatic
|
||||
fun compileFiles(
|
||||
files: List<KtFile>,
|
||||
configuration: CompilerConfiguration,
|
||||
classBuilderFactory: ClassBuilderFactory,
|
||||
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider
|
||||
): GenerationState {
|
||||
val analysisResult = JvmResolveUtil.analyzeAndCheckForErrors(files.first().project, files, configuration, packagePartProvider)
|
||||
analysisResult.throwIfError()
|
||||
|
||||
val state = GenerationState(
|
||||
files.first().project, ClassBuilderFactories.TEST, analysisResult.moduleDescriptor, analysisResult.bindingContext,
|
||||
files.first().project, classBuilderFactory, analysisResult.moduleDescriptor, analysisResult.bindingContext,
|
||||
files, configuration
|
||||
)
|
||||
KotlinCodegenFacade.compileCorrectFiles(state, CompilationErrorHandler.THROW_EXCEPTION)
|
||||
if (analysisResult.shouldGenerateCode) {
|
||||
KotlinCodegenFacade.compileCorrectFiles(state, CompilationErrorHandler.THROW_EXCEPTION)
|
||||
}
|
||||
|
||||
// For JVM-specific errors
|
||||
AnalyzingUtils.throwExceptionOnErrors(state.collectedExtraJvmDiagnostics)
|
||||
|
||||
Reference in New Issue
Block a user