[FIR] fix test module set up (this fixes 193 BB tests)

Added creation and initialization of the test module and its dependencies.
When looking at the emptyProgression test,
I found that getProgressionLastElement was not found,
which should be resolved from the dependencies.
This commit is contained in:
Juan Chen
2020-03-26 03:07:03 +03:00
committed by Mikhail Glukhikh
parent eb958100ac
commit aba7706dec
194 changed files with 14 additions and 196 deletions
@@ -38,6 +38,8 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.fir.backend.Fir2IrConverter
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
@@ -51,7 +53,9 @@ import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.AnalyzingUtils
import org.jetbrains.kotlin.resolve.BindingTrace
import org.jetbrains.kotlin.resolve.CompilerEnvironment
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
import org.jetbrains.kotlin.util.DummyLogger
import java.io.File
@@ -87,7 +91,7 @@ object GenerationUtils {
): GenerationState {
val project = files.first().project
val state = if (configuration.getBoolean(CommonConfigurationKeys.USE_FIR)) {
compileFilesUsingFrontendIR(project, files, configuration, classBuilderFactory, packagePartProvider)
compileFilesUsingFrontendIR(project, files, configuration, classBuilderFactory, packagePartProvider, trace)
} else {
compileFilesUsingStandardMode(project, files, configuration, classBuilderFactory, packagePartProvider, trace)
}
@@ -107,7 +111,8 @@ object GenerationUtils {
files: List<KtFile>,
configuration: CompilerConfiguration,
classBuilderFactory: ClassBuilderFactory,
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
trace: BindingTrace
): GenerationState {
Extensions.getArea(project)
.getExtensionPoint(PsiElementFinder.EP_NAME)
@@ -138,8 +143,14 @@ object GenerationUtils {
val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext
val codegenFactory = JvmIrCodegenFactory(configuration.get(CLIConfigurationKeys.PHASE_CONFIG) ?: PhaseConfig(jvmPhases))
// Create and initialize the test module and its dependencies
val container = TopDownAnalyzerFacadeForJVM.createContainer(
project, files, trace, configuration, packagePartProvider, ::FileBasedDeclarationProviderFactory, CompilerEnvironment,
TopDownAnalyzerFacadeForJVM.newModuleSearchScope(project, files), emptyList()
)
val generationState = GenerationState.Builder(
project, classBuilderFactory, moduleFragment.descriptor, dummyBindingContext, files, configuration
project, classBuilderFactory, container.get<ModuleDescriptor>(), dummyBindingContext, files, configuration
).codegenFactory(
codegenFactory
).isIrBackend(