From ca5a35b4b32591697a3ac047737ee696f1eaab45 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 16 Mar 2020 00:50:16 +0100 Subject: [PATCH] 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. --- .../jetbrains/kotlin/cli/js/K2JSCompiler.java | 3 +- .../jetbrains/kotlin/cli/js/K2JsIrCompiler.kt | 3 +- .../messages/AnalyzerWithCompilerReport.kt | 7 ++-- .../kotlin/cli/metadata/CommonAnalysis.kt | 3 +- .../kotlin/resolve/CompilerEnvironment.kt | 14 ++++++++ .../AbstractAnalyzerWithCompilerReport.kt | 3 ++ .../common/CommonResolverForModuleFactory.kt | 3 +- .../jetbrains/kotlin/frontend/di/injection.kt | 2 +- .../kotlin/resolve/CompilerEnvironment.kt | 34 ------------------- .../kotlin/resolve/TargetEnvironment.kt | 17 +++++++++- .../jetbrains/kotlin/ir/backend/js/klib.kt | 3 +- .../frontend/classic/ClassicFrontendFacade.kt | 8 +++-- .../checkers/AbstractDiagnosticsTest.kt | 2 +- .../AbstractDiagnosticsTestWithJsStdLib.kt | 7 ++-- .../kotlin/ir/AbstractIrGeneratorTestCase.kt | 4 ++- .../org/jetbrains/kotlin/test/KlibTestUtil.kt | 13 ++++--- ...hNonStableParameterNamesDiagnosticsTest.kt | 12 ++++--- .../js/JsVersionRequirementTest.kt | 9 ++--- .../js/KotlinJavascriptSerializerTest.kt | 3 +- .../AbstractDiagnosticMessageJsTest.java | 3 +- .../kotlin/frontend/js/di/injection.kt | 24 +++++++------ .../js/analyze/TopDownAnalyzerFacadeForJS.kt | 11 ++++-- .../jetbrains/kotlin/js/config/JsConfig.java | 16 ++++++--- .../kotlin/benchmarks/GenerateIrRuntime.kt | 2 ++ .../js/test/AbstractJsLineNumberTest.kt | 3 +- .../org/jetbrains/kotlin/js/test/ApiTest.kt | 3 +- .../jetbrains/kotlin/js/test/BasicBoxTest.kt | 3 +- .../kotlin/js/test/BasicWasmBoxTest.kt | 6 ++-- .../kotlin/js/test/EncodeSignatureTest.kt | 6 +++- .../AbstractCommonizationFromSourcesTest.kt | 12 ++++--- .../impl/AbstractJsScriptlikeCodeAnalyser.kt | 4 ++- 31 files changed, 147 insertions(+), 96 deletions(-) create mode 100644 compiler/cli/src/org/jetbrains/kotlin/resolve/CompilerEnvironment.kt delete mode 100644 compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerEnvironment.kt diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java index 8db9bb7764b..1df0b475c3d 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java @@ -57,6 +57,7 @@ import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus; import org.jetbrains.kotlin.psi.KtFile; +import org.jetbrains.kotlin.resolve.CompilerEnvironment; import org.jetbrains.kotlin.serialization.js.ModuleKind; import org.jetbrains.kotlin.utils.*; @@ -235,7 +236,7 @@ public class K2JSCompiler extends CLICompiler { configuration.put(CommonConfigurationKeys.MODULE_NAME, FileUtil.getNameWithoutExtension(outputFile)); - JsConfig config = new JsConfig(project, configuration); + JsConfig config = new JsConfig(project, configuration, CompilerEnvironment.INSTANCE); JsConfig.Reporter reporter = new JsConfig.Reporter() { @Override public void error(@NotNull String message) { diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt index 47209787023..0964e480aba 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt @@ -44,6 +44,7 @@ import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.serialization.js.ModuleKind import org.jetbrains.kotlin.util.Logger import org.jetbrains.kotlin.utils.KotlinPaths @@ -165,7 +166,7 @@ class K2JsIrCompiler : CLICompiler() { // TODO: in this method at least 3 different compiler configurations are used (original, env.configuration, jsConfig.configuration) // Such situation seems a bit buggy... - val config = JsConfig(projectJs, configurationJs) + val config = JsConfig(projectJs, configurationJs, CompilerEnvironment) val outputDir: File = outputFile.parentFile ?: outputFile.absoluteFile.parentFile!! try { config.configuration.put(JSConfigurationKeys.OUTPUT_DIR, outputDir.canonicalFile) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/AnalyzerWithCompilerReport.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/AnalyzerWithCompilerReport.kt index e0658ca56ec..16c2692b098 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/AnalyzerWithCompilerReport.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/AnalyzerWithCompilerReport.kt @@ -32,9 +32,7 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticUtils.sortedDiagnostics import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages import org.jetbrains.kotlin.load.java.components.TraceBasedErrorReporter import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.resolve.AnalyzingUtils -import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils -import org.jetbrains.kotlin.resolve.DescriptorUtils +import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.checkers.ExperimentalUsageChecker import org.jetbrains.kotlin.resolve.jvm.JvmBindingContextSlices @@ -42,6 +40,9 @@ class AnalyzerWithCompilerReport( private val messageCollector: MessageCollector, private val languageVersionSettings: LanguageVersionSettings ) : AbstractAnalyzerWithCompilerReport { + override val targetEnvironment: TargetEnvironment + get() = CompilerEnvironment + override lateinit var analysisResult: AnalysisResult constructor(configuration: CompilerConfiguration) : this( diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/CommonAnalysis.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/CommonAnalysis.kt index f8f7aebebb2..6dc7a889a94 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/CommonAnalysis.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/CommonAnalysis.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.CommonPlatforms +import org.jetbrains.kotlin.resolve.CompilerEnvironment import java.io.File internal val KotlinCoreEnvironment.destDir: File? @@ -50,7 +51,7 @@ private fun runCommonAnalysis( analyzer.analyzeAndReport(files) { CommonResolverForModuleFactory.analyzeFiles( files, moduleName, dependOnBuiltins, configuration.languageVersionSettings, - CommonPlatforms.defaultCommonPlatform, + CommonPlatforms.defaultCommonPlatform, CompilerEnvironment, dependenciesContainer = dependencyContainer ) { content -> environment.createPackagePartProvider(content.moduleContentScope) diff --git a/compiler/cli/src/org/jetbrains/kotlin/resolve/CompilerEnvironment.kt b/compiler/cli/src/org/jetbrains/kotlin/resolve/CompilerEnvironment.kt new file mode 100644 index 00000000000..43d90bf5368 --- /dev/null +++ b/compiler/cli/src/org/jetbrains/kotlin/resolve/CompilerEnvironment.kt @@ -0,0 +1,14 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.resolve + +import org.jetbrains.kotlin.container.StorageComponentContainer + +object CompilerEnvironment : TargetEnvironment("Compiler") { + override fun configure(container: StorageComponentContainer) { + configureCompilerEnvironment(container) + } +} diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AbstractAnalyzerWithCompilerReport.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AbstractAnalyzerWithCompilerReport.kt index 1825c7559b3..759d1c5a886 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AbstractAnalyzerWithCompilerReport.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AbstractAnalyzerWithCompilerReport.kt @@ -6,8 +6,11 @@ package org.jetbrains.kotlin.analyzer import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.resolve.TargetEnvironment interface AbstractAnalyzerWithCompilerReport { + val targetEnvironment: TargetEnvironment + val analysisResult: AnalysisResult fun analyzeAndReport(files: Collection, analyze: () -> AnalysisResult) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt index c567395a529..cf98ea40da0 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt @@ -118,6 +118,7 @@ class CommonResolverForModuleFactory( fun analyzeFiles( files: Collection, moduleName: Name, dependOnBuiltIns: Boolean, languageVersionSettings: LanguageVersionSettings, targetPlatform: TargetPlatform, + targetEnvironment: TargetEnvironment, capabilities: Map, Any?> = emptyMap(), dependenciesContainer: CommonDependenciesContainer? = null, metadataPartProviderFactory: (ModuleContent) -> MetadataPartProvider @@ -141,7 +142,7 @@ class CommonResolverForModuleFactory( val resolverForModuleFactory = CommonResolverForModuleFactory( CommonAnalysisParameters(metadataPartProviderFactory), - CompilerEnvironment, + targetEnvironment, targetPlatform, shouldCheckExpectActual = false, dependenciesContainer diff --git a/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt b/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt index 558c904c5c6..bd8f6c7b890 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt @@ -197,7 +197,7 @@ fun createContainerForLazyLocalClassifierAnalyzer( useInstance(NoTopLevelDescriptorProvider) - CompilerEnvironment.configure(this) + TargetEnvironment.configureCompilerEnvironment(this) useInstance(FileScopeProvider.ThrowException) useImpl() diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerEnvironment.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerEnvironment.kt deleted file mode 100644 index 0db6acc1c20..00000000000 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerEnvironment.kt +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.resolve - -import org.jetbrains.kotlin.container.StorageComponentContainer -import org.jetbrains.kotlin.container.useImpl -import org.jetbrains.kotlin.container.useInstance -import org.jetbrains.kotlin.idea.MainFunctionDetector -import org.jetbrains.kotlin.resolve.lazy.CompilerLocalDescriptorResolver -import org.jetbrains.kotlin.resolve.lazy.BasicAbsentDescriptorHandler - -object CompilerEnvironment : TargetEnvironment("Compiler") { - override fun configure(container: StorageComponentContainer) { - container.useInstance(BodyResolveCache.ThrowException) - container.useImpl() - container.useImpl() - container.useInstance(ModuleStructureOracle.SingleModule) - container.useImpl() - } -} \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/TargetEnvironment.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/TargetEnvironment.kt index 94e8c0c0c23..99a0ce9aea4 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/TargetEnvironment.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/TargetEnvironment.kt @@ -17,9 +17,24 @@ package org.jetbrains.kotlin.resolve import org.jetbrains.kotlin.container.StorageComponentContainer +import org.jetbrains.kotlin.container.useImpl +import org.jetbrains.kotlin.container.useInstance +import org.jetbrains.kotlin.idea.MainFunctionDetector +import org.jetbrains.kotlin.resolve.lazy.BasicAbsentDescriptorHandler +import org.jetbrains.kotlin.resolve.lazy.CompilerLocalDescriptorResolver abstract class TargetEnvironment(private val name: String) { abstract fun configure(container: StorageComponentContainer) override fun toString() = name -} \ No newline at end of file + + companion object { + fun configureCompilerEnvironment(container: StorageComponentContainer) { + container.useInstance(BodyResolveCache.ThrowException) + container.useImpl() + container.useImpl() + container.useInstance(ModuleStructureOracle.SingleModule) + container.useImpl() + } + } +} diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt index 6ea12e0f8a2..7a708021309 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt @@ -395,7 +395,8 @@ private class ModulesStructure( project, compilerConfiguration, allDependencies.getFullList().map { getModuleDescriptor(it) }, - friendModuleDescriptors = friendDependencies.map { getModuleDescriptor(it) }, + friendDependencies.map { getModuleDescriptor(it) }, + analyzer.targetEnvironment, thisIsBuiltInsModule = builtInModuleDescriptor == null, customBuiltInsModule = builtInModuleDescriptor ) diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt index 158edca9cdd..077820ec3d2 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt @@ -235,7 +235,7 @@ class ClassicFrontendFacade( files: List, dependentDescriptors: List ): AnalysisResult { - val jsConfig = JsConfig(project, configuration) + val jsConfig = JsConfig(project, configuration, CompilerEnvironment) val dependentDescriptorsIncludingLibraries = buildList { addAll(dependentDescriptors) addAll(jsConfig.moduleDescriptors) @@ -245,7 +245,8 @@ class ClassicFrontendFacade( project, configuration, moduleDescriptors = dependentDescriptorsIncludingLibraries, - friendModuleDescriptors = emptyList() + friendModuleDescriptors = emptyList(), + CompilerEnvironment, ) } @@ -276,8 +277,9 @@ class ClassicFrontendFacade( dependOnBuiltIns = true, module.languageVersionSettings, module.targetPlatform, + CompilerEnvironment, // TODO: add dependency manager - ) { _ -> + ) { // TODO MetadataPartProvider.Empty } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt index 40023a9c2c1..62265d9bc9f 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt @@ -404,7 +404,7 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() { if (platform.isCommon()) { return CommonResolverForModuleFactory.analyzeFiles( files, moduleDescriptor.name, true, languageVersionSettings, - CommonPlatforms.defaultCommonPlatform, + CommonPlatforms.defaultCommonPlatform, CompilerEnvironment, mapOf( MODULE_FILES to files ) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTestWithJsStdLib.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTestWithJsStdLib.kt index 6b42d307ec1..46490716528 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTestWithJsStdLib.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTestWithJsStdLib.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.js.resolve.MODULE_KIND import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.BindingTrace +import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.serialization.js.ModuleKind import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.test.KotlinTestUtils @@ -35,7 +36,7 @@ abstract class AbstractDiagnosticsTestWithJsStdLib : AbstractDiagnosticsTest() { JsConfig(project, environment.configuration.copy().apply { put(CommonConfigurationKeys.MODULE_NAME, KotlinTestUtils.TEST_MODULE_NAME) put(JSConfigurationKeys.LIBRARIES, JsConfig.JS_STDLIB) - }) + }, CompilerEnvironment) } protected val config: JsConfig get() = lazyConfig!!.value @@ -58,7 +59,9 @@ abstract class AbstractDiagnosticsTestWithJsStdLib : AbstractDiagnosticsTest() { // TODO: support LANGUAGE directive in JS diagnostic tests moduleTrace.record(MODULE_KIND, moduleContext.module, getModuleKind(files)) config.configuration.languageVersionSettings = languageVersionSettings - return TopDownAnalyzerFacadeForJS.analyzeFilesWithGivenTrace(files, moduleTrace, moduleContext, config.configuration) + return TopDownAnalyzerFacadeForJS.analyzeFilesWithGivenTrace( + files, moduleTrace, moduleContext, config.configuration, CompilerEnvironment, + ) } private fun getModuleKind(ktFiles: List): ModuleKind { diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt index fa8e35a6c8d..38c701f1909 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt @@ -42,6 +42,7 @@ import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator import org.jetbrains.kotlin.psi2ir.generators.GeneratorExtensions import org.jetbrains.kotlin.resolve.AnalyzingUtils import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.InTextDirectivesUtils @@ -126,7 +127,8 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() { TopDownAnalyzerFacadeForJS.analyzeFiles( ktFilesToAnalyze, environment.project, environment.configuration, moduleDescriptors = emptyList(), - friendModuleDescriptors = emptyList() + friendModuleDescriptors = emptyList(), + CompilerEnvironment, ), psi2ir, ktFilesToAnalyze, GeneratorExtensions(), createIdSignatureComposer = { IdSignatureDescriptor(JsManglerDesc) } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/KlibTestUtil.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/test/KlibTestUtil.kt index cdcbcb3fcca..0c827cd9440 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/test/KlibTestUtil.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/test/KlibTestUtil.kt @@ -21,14 +21,18 @@ import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.konan.util.KlibMetadataFactories -import org.jetbrains.kotlin.library.* +import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION +import org.jetbrains.kotlin.library.KotlinLibraryVersioning +import org.jetbrains.kotlin.library.ToolingSingleFileKlibResolveStrategy import org.jetbrains.kotlin.library.impl.BuiltInsPlatform import org.jetbrains.kotlin.library.impl.KotlinLibraryLayoutForWriter import org.jetbrains.kotlin.library.impl.KotlinLibraryWriterImpl import org.jetbrains.kotlin.library.metadata.NativeTypeTransformer import org.jetbrains.kotlin.library.metadata.NullFlexibleTypeDeserializer +import org.jetbrains.kotlin.library.resolveSingleFileKlib import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.CommonPlatforms +import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.util.DummyLogger import java.io.File @@ -52,11 +56,12 @@ object KlibTestUtil { ) CommonResolverForModuleFactory.analyzeFiles( - files = environment.getSourceFiles(), + environment.getSourceFiles(), moduleName = Name.special("<$libraryName>"), dependOnBuiltIns = true, - languageVersionSettings = environment.configuration.languageVersionSettings, - targetPlatform = CommonPlatforms.defaultCommonPlatform + environment.configuration.languageVersionSettings, + CommonPlatforms.defaultCommonPlatform, + CompilerEnvironment, ) { content -> environment.createPackagePartProvider(content.moduleContentScope) }.moduleDescriptor diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/InteropFunctionsWithNonStableParameterNamesDiagnosticsTest.kt b/compiler/tests/org/jetbrains/kotlin/checkers/InteropFunctionsWithNonStableParameterNamesDiagnosticsTest.kt index 9deb82e730c..e0f2e3f9baf 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/InteropFunctionsWithNonStableParameterNamesDiagnosticsTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/checkers/InteropFunctionsWithNonStableParameterNamesDiagnosticsTest.kt @@ -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) } diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/js/JsVersionRequirementTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/js/JsVersionRequirementTest.kt index e6b58f2401c..3f57e37cba2 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/js/JsVersionRequirementTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/js/JsVersionRequirementTest.kt @@ -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(""), JsPlatformAnalyzerServices.builtIns, JsPlatforms.defaultJsPlatform diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt index 3ffc7ba5933..1dfbcb3746c 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt @@ -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, diff --git a/idea/tests/org/jetbrains/kotlin/idea/highlighter/AbstractDiagnosticMessageJsTest.java b/idea/tests/org/jetbrains/kotlin/idea/highlighter/AbstractDiagnosticMessageJsTest.java index ca2863d4cb3..2629f1b6f95 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/highlighter/AbstractDiagnosticMessageJsTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/highlighter/AbstractDiagnosticMessageJsTest.java @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.js.config.JSConfigurationKeys; import org.jetbrains.kotlin.js.config.JsConfig; import org.jetbrains.kotlin.js.resolve.diagnostics.ErrorsJs; import org.jetbrains.kotlin.psi.KtFile; +import org.jetbrains.kotlin.resolve.CompilerEnvironment; import org.jetbrains.kotlin.test.KotlinTestUtils; import java.lang.reflect.Field; @@ -66,6 +67,6 @@ public abstract class AbstractDiagnosticMessageJsTest extends AbstractDiagnostic LanguageVersionSettingsImpl.DEFAULT.getApiVersion(), Collections.emptyMap(), specificFeatures)); - return new JsConfig(getProject(), configuration); + return new JsConfig(getProject(), configuration, CompilerEnvironment.INSTANCE); } } diff --git a/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt b/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt index 8fa13456c2e..0aba35404a3 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.frontend.js.di import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.container.get -import org.jetbrains.kotlin.container.useImpl import org.jetbrains.kotlin.container.useInstance import org.jetbrains.kotlin.context.ModuleContext import org.jetbrains.kotlin.descriptors.PackageFragmentProvider @@ -31,18 +30,22 @@ import org.jetbrains.kotlin.incremental.components.ExpectActualTracker import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.js.resolve.JsPlatformAnalyzerServices import org.jetbrains.kotlin.platform.js.JsPlatforms -import org.jetbrains.kotlin.resolve.* +import org.jetbrains.kotlin.resolve.BindingTrace +import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer +import org.jetbrains.kotlin.resolve.TargetEnvironment +import org.jetbrains.kotlin.resolve.createContainer import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory fun createTopDownAnalyzerForJs( - moduleContext: ModuleContext, - bindingTrace: BindingTrace, - declarationProviderFactory: DeclarationProviderFactory, - languageVersionSettings: LanguageVersionSettings, - lookupTracker: LookupTracker, - expectActualTracker: ExpectActualTracker, - additionalPackages: List + moduleContext: ModuleContext, + bindingTrace: BindingTrace, + declarationProviderFactory: DeclarationProviderFactory, + languageVersionSettings: LanguageVersionSettings, + lookupTracker: LookupTracker, + expectActualTracker: ExpectActualTracker, + additionalPackages: List, + targetEnvironment: TargetEnvironment, ): LazyTopDownAnalyzer { val storageComponentContainer = createContainer("TopDownAnalyzerForJs", JsPlatformAnalyzerServices) { configureModule( @@ -57,8 +60,7 @@ fun createTopDownAnalyzerForJs( configureStandardResolveComponents() useInstance(declarationProviderFactory) - CompilerEnvironment.configure(this) - + targetEnvironment.configure(this) }.apply { val packagePartProviders = mutableListOf(get().packageFragmentProvider) val moduleDescriptor = get() diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt index 24f891c5a19..b9b4331578a 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt @@ -46,6 +46,7 @@ abstract class AbstractTopDownAnalyzerFacadeForJS { configuration: CompilerConfiguration, moduleDescriptors: List, friendModuleDescriptors: List, + targetEnvironment: TargetEnvironment, thisIsBuiltInsModule: Boolean = false, customBuiltInsModule: ModuleDescriptorImpl? = null ): JsAnalysisResult { @@ -81,7 +82,7 @@ abstract class AbstractTopDownAnalyzerFacadeForJS { val trace = BindingTraceContext() trace.record(MODULE_KIND, context.module, moduleKind) - return analyzeFilesWithGivenTrace(files, trace, context, configuration, additionalPackages) + return analyzeFilesWithGivenTrace(files, trace, context, configuration, targetEnvironment, additionalPackages) } protected abstract fun loadIncrementalCacheMetadata( @@ -96,6 +97,7 @@ abstract class AbstractTopDownAnalyzerFacadeForJS { trace: BindingTrace, moduleContext: ModuleContext, configuration: CompilerConfiguration, + targetEnvironment: TargetEnvironment, additionalPackages: List = emptyList() ): JsAnalysisResult { val lookupTracker = configuration.get(CommonConfigurationKeys.LOOKUP_TRACKER) ?: LookupTracker.DO_NOTHING @@ -110,7 +112,8 @@ abstract class AbstractTopDownAnalyzerFacadeForJS { languageVersionSettings, lookupTracker, expectActualTracker, - additionalPackages + listOfNotNull(packageFragment) + additionalPackages + listOfNotNull(packageFragment), + targetEnvironment, ) analyzerForJs.analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, files) return JsAnalysisResult.success(trace, moduleContext.module) @@ -169,6 +172,8 @@ object TopDownAnalyzerFacadeForJS : AbstractTopDownAnalyzerFacadeForJS() { config: JsConfig ): JsAnalysisResult { config.init() - return analyzeFiles(files, config.project, config.configuration, config.moduleDescriptors, config.friendModuleDescriptors) + return analyzeFiles( + files, config.project, config.configuration, config.moduleDescriptors, config.friendModuleDescriptors, config.targetEnvironment, + ) } } diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/config/JsConfig.java b/js/js.frontend/src/org/jetbrains/kotlin/js/config/JsConfig.java index 63bf59de68e..b1cb7bd07ee 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/config/JsConfig.java +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/config/JsConfig.java @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.incremental.components.LookupTracker; import org.jetbrains.kotlin.js.resolve.JsPlatformAnalyzerServices; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration; +import org.jetbrains.kotlin.resolve.TargetEnvironment; import org.jetbrains.kotlin.serialization.js.*; import org.jetbrains.kotlin.storage.LockBasedStorageManager; import org.jetbrains.kotlin.utils.JsMetadataVersion; @@ -71,15 +72,22 @@ public class JsConfig { @Nullable private final Set librariesToSkip; - public JsConfig(@NotNull Project project, @NotNull CompilerConfiguration configuration) { - this(project, configuration, null, null); + public final TargetEnvironment targetEnvironment; + + public JsConfig(@NotNull Project project, @NotNull CompilerConfiguration configuration, @NotNull TargetEnvironment targetEnvironment) { + this(project, configuration, targetEnvironment, null, null); } - public JsConfig(@NotNull Project project, @NotNull CompilerConfiguration configuration, + public JsConfig( + @NotNull Project project, + @NotNull CompilerConfiguration configuration, + @NotNull TargetEnvironment targetEnvironment, @Nullable List> metadataCache, - @Nullable Set librariesToSkip) { + @Nullable Set librariesToSkip + ) { this.project = project; this.configuration = configuration.copy(); + this.targetEnvironment = targetEnvironment; this.metadataCache = metadataCache; this.librariesToSkip = librariesToSkip; } diff --git a/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt b/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt index e8b655ecf24..f9ff372c394 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt @@ -56,6 +56,7 @@ import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.resolve.multiplatform.isCommonSource import org.jetbrains.kotlin.serialization.js.ModuleKind import org.junit.After @@ -435,6 +436,7 @@ class GenerateIrRuntime { configuration, emptyList(), friendModuleDescriptors = emptyList(), + CompilerEnvironment, thisIsBuiltInsModule = true, customBuiltInsModule = null ) diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsLineNumberTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsLineNumberTest.kt index 8c787e88f85..c250598584f 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsLineNumberTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsLineNumberTest.kt @@ -29,6 +29,7 @@ import org.jetbrains.kotlin.js.test.utils.LineCollector import org.jetbrains.kotlin.js.test.utils.LineOutputToStringVisitor import org.jetbrains.kotlin.js.util.TextOutputImpl import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.serialization.js.ModuleKind import org.jetbrains.kotlin.test.Directives import org.jetbrains.kotlin.test.KotlinBaseTest @@ -127,7 +128,7 @@ abstract class AbstractJsLineNumberTest : KotlinTestWithEnvironment() { configuration.put(JSConfigurationKeys.SOURCE_MAP, true) configuration.put(JSConfigurationKeys.META_INFO, true) - return JsConfig(project, configuration) + return JsConfig(project, configuration, CompilerEnvironment) } private fun createPsiFile(fileName: String): KtFile { diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/ApiTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/ApiTest.kt index d1c09c1cdc0..e71852652e4 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/ApiTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ApiTest.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.js.config.JsConfig import org.jetbrains.kotlin.jvm.compiler.ExpectedLoadErrorsUtil import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.renderer.* +import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.MemberComparator import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyPublicApi @@ -62,7 +63,7 @@ class ApiTest : KotlinTestWithEnvironment() { configuration.put(CommonConfigurationKeys.MODULE_NAME, "test") configuration.put(JSConfigurationKeys.LIBRARIES, JsConfig.JS_STDLIB) - val config = JsConfig(project, configuration) + val config = JsConfig(project, configuration, CompilerEnvironment) return config.moduleDescriptors.single().packagesSerialized() } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt index 51ccaf457f2..4465da5e1c3 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt @@ -47,6 +47,7 @@ import org.jetbrains.kotlin.metadata.DebugProtoBuf import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtNamedFunction import org.jetbrains.kotlin.psi.KtPsiFactory +import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.serialization.js.JsModuleDescriptor import org.jetbrains.kotlin.serialization.js.JsSerializerProtocol import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil @@ -908,7 +909,7 @@ abstract class BasicBoxTest( configuration.put(CommonConfigurationKeys.EXPECT_ACTUAL_LINKER, expectActualLinker) - return JsConfig(project, configuration, METADATA_CACHE, (JsConfig.JS_STDLIB + JsConfig.JS_KOTLIN_TEST).toSet()) + return JsConfig(project, configuration, CompilerEnvironment, METADATA_CACHE, (JsConfig.JS_STDLIB + JsConfig.JS_KOTLIN_TEST).toSet()) } private fun minifyAndRun( diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt index 3ee83a7dbbb..5df93549f04 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.library.resolver.impl.KotlinResolvedLibraryImpl import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtNamedFunction import org.jetbrains.kotlin.psi.KtPsiFactory +import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.test.Directives import org.jetbrains.kotlin.test.KotlinTestWithEnvironment import org.jetbrains.kotlin.test.TestFiles @@ -162,8 +163,9 @@ abstract class BasicWasmBoxTest( private fun createConfig(languageVersionSettings: LanguageVersionSettings?): JsConfig { val configuration = environment.configuration.copy() configuration.put(CommonConfigurationKeys.MODULE_NAME, TEST_MODULE) - configuration.languageVersionSettings = languageVersionSettings ?: LanguageVersionSettingsImpl(LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE) - return JsConfig(project, configuration, null, null) + configuration.languageVersionSettings = languageVersionSettings + ?: LanguageVersionSettingsImpl(LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE) + return JsConfig(project, configuration, CompilerEnvironment, null, null) } private inner class TestFileFactoryImpl : TestFiles.TestFileFactoryNoModules(), Closeable { diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/EncodeSignatureTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/EncodeSignatureTest.kt index 360201c1037..a7af9a795fa 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/EncodeSignatureTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/EncodeSignatureTest.kt @@ -32,6 +32,7 @@ import org.jetbrains.kotlin.js.config.JsConfig import org.jetbrains.kotlin.js.naming.encodeSignature import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.test.testFramework.resetApplicationToNull import org.junit.Assert @@ -212,7 +213,10 @@ class EncodeSignatureTest { configuration.put(JSConfigurationKeys.LIBRARIES, JsConfig.JS_STDLIB) configuration.put(CommonConfigurationKeys.MODULE_NAME, "sample") - val analysisResult = TopDownAnalyzerFacadeForJS.analyzeFiles(listOf(psiFile), JsConfig(project, configuration)) + val analysisResult = TopDownAnalyzerFacadeForJS.analyzeFiles( + listOf(psiFile), + JsConfig(project, configuration, CompilerEnvironment), + ) val module = analysisResult.moduleDescriptor val rootPackage = module.getPackage(FqName.ROOT) diff --git a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/AbstractCommonizationFromSourcesTest.kt b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/AbstractCommonizationFromSourcesTest.kt index fcad9a3e61f..7f2b98ead02 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/AbstractCommonizationFromSourcesTest.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/AbstractCommonizationFromSourcesTest.kt @@ -38,6 +38,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.CommonPlatforms import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtPsiFactory +import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.test.KotlinTestUtils.newConfiguration import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase @@ -320,12 +321,13 @@ private class AnalyzedModules( .toList() val module = CommonResolverForModuleFactory.analyzeFiles( - files = psiFiles, - moduleName = Name.special("<$moduleName>"), + psiFiles, + Name.special("<$moduleName>"), dependOnBuiltIns = true, - languageVersionSettings = environment.configuration.languageVersionSettings, - targetPlatform = CommonPlatforms.defaultCommonPlatform, - dependenciesContainer = DependenciesContainerImpl(sharedTarget, currentTarget, dependencies) + environment.configuration.languageVersionSettings, + CommonPlatforms.defaultCommonPlatform, + CompilerEnvironment, + dependenciesContainer = DependenciesContainerImpl(sharedTarget, currentTarget, dependencies), ) { content -> environment.createPackagePartProvider(content.moduleContentScope) }.moduleDescriptor diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/AbstractJsScriptlikeCodeAnalyser.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/AbstractJsScriptlikeCodeAnalyser.kt index 2d17b784c12..5b84829f45e 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/AbstractJsScriptlikeCodeAnalyser.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/AbstractJsScriptlikeCodeAnalyser.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingTraceContext +import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.resolve.TopDownAnalysisMode import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory @@ -64,7 +65,8 @@ abstract class AbstractJsScriptlikeCodeAnalyser( languageVersionSettings, lookupTracker, expectActualTracker, - additionalPackages + additionalPackages, + CompilerEnvironment, ) val analyzerContext = analyzer.analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, listOf(psi))