[Wasm] Add Wasm platform and K1 FE infrastructure
This commit is contained in:
@@ -33,12 +33,10 @@ import org.jetbrains.kotlin.incremental.components.InlineConstTracker
|
||||
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.BindingTrace
|
||||
import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer
|
||||
import org.jetbrains.kotlin.resolve.TargetEnvironment
|
||||
import org.jetbrains.kotlin.resolve.createContainer
|
||||
import org.jetbrains.kotlin.resolve.*
|
||||
import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
|
||||
fun createContainerForJS(
|
||||
moduleContext: ModuleContext,
|
||||
@@ -51,12 +49,14 @@ fun createContainerForJS(
|
||||
enumWhenTracker: EnumWhenTracker,
|
||||
additionalPackages: List<PackageFragmentProvider>,
|
||||
targetEnvironment: TargetEnvironment,
|
||||
analyzerServices: PlatformDependentAnalyzerServices,
|
||||
platform: TargetPlatform
|
||||
): StorageComponentContainer {
|
||||
val storageComponentContainer = createContainer("TopDownAnalyzerForJs", JsPlatformAnalyzerServices) {
|
||||
val storageComponentContainer = createContainer("TopDownAnalyzerForJs", analyzerServices) {
|
||||
configureModule(
|
||||
moduleContext,
|
||||
JsPlatforms.defaultJsPlatform,
|
||||
JsPlatformAnalyzerServices,
|
||||
platform,
|
||||
analyzerServices,
|
||||
bindingTrace,
|
||||
languageVersionSettings,
|
||||
optimizingOptions = null,
|
||||
@@ -93,6 +93,7 @@ fun createTopDownAnalyzerForJs(
|
||||
): LazyTopDownAnalyzer {
|
||||
return createContainerForJS(
|
||||
moduleContext, bindingTrace, declarationProviderFactory, languageVersionSettings,
|
||||
lookupTracker, expectActualTracker, inlineConstTracker, enumWhenTracker, additionalPackages, targetEnvironment
|
||||
lookupTracker, expectActualTracker, inlineConstTracker, enumWhenTracker, additionalPackages, targetEnvironment,
|
||||
JsPlatformAnalyzerServices, JsPlatforms.defaultJsPlatform
|
||||
).get<LazyTopDownAnalyzer>()
|
||||
}
|
||||
|
||||
@@ -6,9 +6,6 @@
|
||||
package org.jetbrains.kotlin.js.analyze
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.psi.search.DelegatingGlobalSearchScope
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||
import org.jetbrains.kotlin.builtins.functions.functionInterfacePackageFragmentProvider
|
||||
@@ -36,6 +33,7 @@ import org.jetbrains.kotlin.js.config.JsConfig
|
||||
import org.jetbrains.kotlin.js.resolve.JsPlatformAnalyzerServices
|
||||
import org.jetbrains.kotlin.js.resolve.MODULE_KIND
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.*
|
||||
@@ -45,9 +43,10 @@ import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil
|
||||
import org.jetbrains.kotlin.serialization.js.ModuleKind
|
||||
import org.jetbrains.kotlin.serialization.js.PackagesWithHeaderMetadata
|
||||
import org.jetbrains.kotlin.utils.JsMetadataVersion
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
abstract class AbstractTopDownAnalyzerFacadeForJS {
|
||||
abstract class AbstractTopDownAnalyzerFacadeForWeb {
|
||||
abstract val analyzerServices: PlatformDependentAnalyzerServices
|
||||
abstract val platform: TargetPlatform
|
||||
|
||||
fun analyzeFiles(
|
||||
files: Collection<KtFile>,
|
||||
@@ -74,7 +73,7 @@ abstract class AbstractTopDownAnalyzerFacadeForJS {
|
||||
ProjectContext(project, "TopDownAnalyzer for JS"),
|
||||
Name.special("<$moduleName>"),
|
||||
builtIns,
|
||||
platform = JsPlatforms.defaultJsPlatform
|
||||
platform = platform
|
||||
)
|
||||
|
||||
val additionalPackages = mutableListOf<PackageFragmentProvider>()
|
||||
@@ -109,7 +108,7 @@ abstract class AbstractTopDownAnalyzerFacadeForJS {
|
||||
configuration: CompilerConfiguration,
|
||||
targetEnvironment: TargetEnvironment,
|
||||
project: Project,
|
||||
additionalPackages: List<PackageFragmentProvider> = emptyList()
|
||||
additionalPackages: List<PackageFragmentProvider> = emptyList(),
|
||||
): JsAnalysisResult {
|
||||
val lookupTracker = configuration.get(CommonConfigurationKeys.LOOKUP_TRACKER) ?: LookupTracker.DO_NOTHING
|
||||
val expectActualTracker = configuration.get(CommonConfigurationKeys.EXPECT_ACTUAL_TRACKER) ?: ExpectActualTracker.DoNothing
|
||||
@@ -130,6 +129,8 @@ abstract class AbstractTopDownAnalyzerFacadeForJS {
|
||||
enumWhenTracker,
|
||||
additionalPackages + listOfNotNull(packageFragment),
|
||||
targetEnvironment,
|
||||
analyzerServices,
|
||||
platform
|
||||
)
|
||||
|
||||
val analysisHandlerExtensions = AnalysisHandlerExtension.getInstances(project)
|
||||
@@ -193,7 +194,10 @@ abstract class AbstractTopDownAnalyzerFacadeForJS {
|
||||
}
|
||||
}
|
||||
|
||||
object TopDownAnalyzerFacadeForJS : AbstractTopDownAnalyzerFacadeForJS() {
|
||||
object TopDownAnalyzerFacadeForJS : AbstractTopDownAnalyzerFacadeForWeb() {
|
||||
|
||||
override val analyzerServices: PlatformDependentAnalyzerServices = JsPlatformAnalyzerServices
|
||||
override val platform: TargetPlatform = JsPlatforms.defaultJsPlatform
|
||||
|
||||
override fun loadIncrementalCacheMetadata(
|
||||
incrementalData: IncrementalDataProvider,
|
||||
|
||||
Reference in New Issue
Block a user