Move CompilerEnvironment from 'frontend' to 'cli'

This is needed in order to have a single convenient place where to
register frontend services implemented _outside_ of the 'frontend'
module, such as the control flow analysis, extracted to a separate
module in a subsequent commit.
This commit is contained in:
Alexander Udalov
2020-03-16 00:50:16 +01:00
committed by Alexander Udalov
parent 3efbca85ea
commit ca5a35b4b3
31 changed files with 147 additions and 96 deletions
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.platform.CommonPlatforms
import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.BindingTrace
import org.jetbrains.kotlin.resolve.CompilerEnvironment
import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
import org.jetbrains.kotlin.serialization.NonStableParameterNamesSerializationTest
import org.jetbrains.kotlin.storage.StorageManager
@@ -61,15 +62,16 @@ class InteropFunctionsWithNonStableParameterNamesDiagnosticsTest : AbstractDiagn
jvmTarget: JvmTarget
): AnalysisResult {
return CommonResolverForModuleFactory.analyzeFiles(
files = files,
moduleName = moduleContext.module.name,
files,
moduleContext.module.name,
dependOnBuiltIns = true,
languageVersionSettings = languageVersionSettings,
targetPlatform = CommonPlatforms.defaultCommonPlatform,
languageVersionSettings,
CommonPlatforms.defaultCommonPlatform,
CompilerEnvironment,
capabilities = mapOf(
// MODULE_FILES to files
),
dependenciesContainer = CommonDependenciesContainerImpl(moduleContext.module.allDependencyModules)
CommonDependenciesContainerImpl(moduleContext.module.allDependencyModules)
) { content ->
environment.createPackagePartProvider(content.moduleContentScope)
}
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.js.resolve.JsPlatformAnalyzerServices
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.js.JsPlatforms
import org.jetbrains.kotlin.resolve.BindingTraceContext
import org.jetbrains.kotlin.resolve.CompilerEnvironment
import org.jetbrains.kotlin.serialization.AbstractVersionRequirementTest
import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils
@@ -47,13 +48,13 @@ class JsVersionRequirementTest : AbstractVersionRequirementTest() {
}
val trace = BindingTraceContext()
val analysisResult = TopDownAnalyzerFacadeForJS.analyzeFilesWithGivenTrace(
ktFiles, trace, createModule(environment), environment.configuration
ktFiles, trace, createModule(environment), environment.configuration, CompilerEnvironment,
)
// There are INVISIBLE_REFERENCE errors on RequireKotlin and K2JSTranslator refuses to translate the code otherwise
trace.clearDiagnostics()
val result = K2JSTranslator(JsConfig(environment.project, environment.configuration)).translate(
val result = K2JSTranslator(JsConfig(environment.project, environment.configuration, CompilerEnvironment)).translate(
object : JsConfig.Reporter() {}, ktFiles, MainCallParameters.noCall(), analysisResult
) as TranslationResult.Success
result.getOutputFiles(File(outputDirectory, "lib.js"), null, null).writeAllTo(outputDirectory)
@@ -62,7 +63,7 @@ class JsVersionRequirementTest : AbstractVersionRequirementTest() {
override fun loadModule(directory: File): ModuleDescriptor {
val environment = createEnvironment(extraDependencies = listOf(File(directory, "lib.meta.js")))
return TopDownAnalyzerFacadeForJS.analyzeFilesWithGivenTrace(
emptyList(), BindingTraceContext(), createModule(environment), environment.configuration
emptyList(), BindingTraceContext(), createModule(environment), environment.configuration, CompilerEnvironment,
).moduleDescriptor
}
@@ -85,7 +86,7 @@ class JsVersionRequirementTest : AbstractVersionRequirementTest() {
)
private fun createModule(environment: KotlinCoreEnvironment): MutableModuleContext {
val config = JsConfig(environment.project, environment.configuration)
val config = JsConfig(environment.project, environment.configuration, CompilerEnvironment)
return ContextForNewModule(
ProjectContext(environment.project, "ProjectContext"),
Name.special("<test>"), JsPlatformAnalyzerServices.builtIns, JsPlatforms.defaultJsPlatform
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.js.config.JSConfigurationKeys
import org.jetbrains.kotlin.js.config.JsConfig
import org.jetbrains.kotlin.js.resolve.JsPlatformAnalyzerServices
import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil.TEST_PACKAGE_FQNAME
import org.jetbrains.kotlin.resolve.CompilerEnvironment
import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration
import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil.readModuleAsProto
import org.jetbrains.kotlin.storage.LockBasedStorageManager
@@ -75,7 +76,7 @@ class KotlinJavascriptSerializerTest : TestCaseWithTmpdir() {
try {
val environment = KotlinCoreEnvironment.createForTests(rootDisposable, configuration, EnvironmentConfigFiles.JS_CONFIG_FILES)
val files = environment.getSourceFiles()
val config = JsConfig(environment.project, environment.configuration)
val config = JsConfig(environment.project, environment.configuration, CompilerEnvironment)
val analysisResult = TopDownAnalyzerFacadeForJS.analyzeFiles(files, config)
val description = JsModuleDescriptor(
name = KotlinTestUtils.TEST_MODULE_NAME,