[Wasm] Add Wasm platform and K1 FE infrastructure
This commit is contained in:
@@ -19,6 +19,8 @@ dependencies {
|
||||
api(project(":js:js.serializer"))
|
||||
api(project(":js:js.dce"))
|
||||
api(project(":js:js.sourcemap"))
|
||||
api(project(":wasm:wasm.frontend"))
|
||||
api(project(":wasm:wasm.config"))
|
||||
|
||||
compileOnly(intellijCore())
|
||||
}
|
||||
|
||||
@@ -31,6 +31,8 @@ import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
|
||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.*
|
||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||
import org.jetbrains.kotlin.cli.common.messages.MessageUtil
|
||||
import org.jetbrains.kotlin.cli.js.klib.TopDownAnalyzerFacadeForJSIR
|
||||
import org.jetbrains.kotlin.cli.js.klib.TopDownAnalyzerFacadeForWasm
|
||||
import org.jetbrains.kotlin.cli.js.klib.generateIrForKlibSerialization
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
@@ -427,7 +429,8 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
|
||||
environmentForJS.configuration,
|
||||
libraries,
|
||||
friendLibraries,
|
||||
AnalyzerWithCompilerReport(environmentForJS.configuration)
|
||||
AnalyzerWithCompilerReport(environmentForJS.configuration),
|
||||
analyzerFacade = if (arguments.wasm) TopDownAnalyzerFacadeForWasm else TopDownAnalyzerFacadeForJSIR
|
||||
)
|
||||
val result = sourceModule.jsFrontEndResult.jsAnalysisResult
|
||||
if (result is JsAnalysisResult.RetryWithAdditionalRoots) {
|
||||
|
||||
+9
-2
@@ -11,11 +11,18 @@ import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.incremental.js.IncrementalDataProvider
|
||||
import org.jetbrains.kotlin.ir.backend.js.JsFactories
|
||||
import org.jetbrains.kotlin.js.analyze.AbstractTopDownAnalyzerFacadeForJS
|
||||
import org.jetbrains.kotlin.js.analyze.AbstractTopDownAnalyzerFacadeForWeb
|
||||
import org.jetbrains.kotlin.js.resolve.JsPlatformAnalyzerServices
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||
import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration
|
||||
import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
|
||||
|
||||
// TODO: put it in separated module `frontend.js`
|
||||
object TopDownAnalyzerFacadeForJSIR : AbstractTopDownAnalyzerFacadeForJS() {
|
||||
object TopDownAnalyzerFacadeForJSIR : AbstractTopDownAnalyzerFacadeForWeb() {
|
||||
override val analyzerServices: PlatformDependentAnalyzerServices = JsPlatformAnalyzerServices
|
||||
override val platform: TargetPlatform = JsPlatforms.defaultJsPlatform
|
||||
|
||||
override fun loadIncrementalCacheMetadata(
|
||||
incrementalData: IncrementalDataProvider,
|
||||
moduleContext: ModuleContext,
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright 2010-2022 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.cli.js.klib
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.context.ModuleContext
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.incremental.js.IncrementalDataProvider
|
||||
import org.jetbrains.kotlin.ir.backend.js.JsFactories
|
||||
import org.jetbrains.kotlin.js.analyze.AbstractTopDownAnalyzerFacadeForWeb
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.wasm.WasmPlatforms
|
||||
import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration
|
||||
import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
|
||||
import org.jetbrains.kotlin.wasm.resolve.WasmPlatformAnalyzerServices
|
||||
|
||||
object TopDownAnalyzerFacadeForWasm : AbstractTopDownAnalyzerFacadeForWeb() {
|
||||
override val analyzerServices: PlatformDependentAnalyzerServices = WasmPlatformAnalyzerServices
|
||||
override val platform: TargetPlatform = WasmPlatforms.Default
|
||||
|
||||
override fun loadIncrementalCacheMetadata(
|
||||
incrementalData: IncrementalDataProvider,
|
||||
moduleContext: ModuleContext,
|
||||
lookupTracker: LookupTracker,
|
||||
languageVersionSettings: LanguageVersionSettings
|
||||
): PackageFragmentProvider {
|
||||
return JsFactories.DefaultDeserializedDescriptorFactory.createCachedPackageFragmentProvider(
|
||||
incrementalData.compiledPackageParts.values.map { it.metadata },
|
||||
moduleContext.storageManager,
|
||||
moduleContext.module,
|
||||
CompilerDeserializationConfiguration(languageVersionSettings),
|
||||
lookupTracker
|
||||
)
|
||||
}
|
||||
}
|
||||
+3
-1
@@ -9,6 +9,7 @@ import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.analyzer.AbstractAnalyzerWithCompilerReport
|
||||
import org.jetbrains.kotlin.cli.js.klib.TopDownAnalyzerFacadeForJSIR
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.js.analyze.AbstractTopDownAnalyzerFacadeForWeb
|
||||
import org.jetbrains.kotlin.js.config.ErrorTolerancePolicy
|
||||
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
@@ -21,10 +22,11 @@ fun prepareAnalyzedSourceModule(
|
||||
friendDependencies: List<String>,
|
||||
analyzer: AbstractAnalyzerWithCompilerReport,
|
||||
errorPolicy: ErrorTolerancePolicy = configuration.get(JSConfigurationKeys.ERROR_TOLERANCE_POLICY) ?: ErrorTolerancePolicy.DEFAULT,
|
||||
analyzerFacade: AbstractTopDownAnalyzerFacadeForWeb = TopDownAnalyzerFacadeForJSIR,
|
||||
): ModulesStructure {
|
||||
val mainModule = MainModule.SourceFiles(files)
|
||||
val sourceModule = ModulesStructure(project, mainModule, configuration, dependencies, friendDependencies)
|
||||
return sourceModule.apply {
|
||||
runAnalysis(errorPolicy, analyzer, TopDownAnalyzerFacadeForJSIR)
|
||||
runAnalysis(errorPolicy, analyzer, analyzerFacade)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user