[Analysis API] Enable WASM target support ^KT-64984 Fixed
diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirWasmSessionFactory.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirWasmSessionFactory.kt index e308022..8648466 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirWasmSessionFactory.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirWasmSessionFactory.kt
@@ -19,11 +19,16 @@ import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider +import org.jetbrains.kotlin.fir.session.FirWasmSessionFactory.registerWasmComponents +import org.jetbrains.kotlin.platform.wasm.WasmPlatformWithTarget +import org.jetbrains.kotlin.platform.wasm.WasmTarget @OptIn(SessionConfiguration::class) internal class LLFirWasmSessionFactory(project: Project) : LLFirAbstractSessionFactory(project) { override fun createSourcesSession(module: KaSourceModule): LLFirSourcesSession { return doCreateSourcesSession(module) { context -> + registerWasmComponents() + register( FirSymbolProvider::class, LLFirModuleWithDependenciesSymbolProvider( @@ -41,6 +46,8 @@ override fun createLibrarySession(module: KaModule): LLFirLibraryOrLibrarySourceResolvableModuleSession { return doCreateLibrarySession(module) { context -> + registerWasmComponents() + register( FirSymbolProvider::class, LLFirModuleWithDependenciesSymbolProvider( @@ -56,11 +63,14 @@ override fun createBinaryLibrarySession(module: KaLibraryModule): LLFirLibrarySession { return doCreateBinaryLibrarySession(module) { + registerWasmComponents() } } override fun createDanglingFileSession(module: KaDanglingFileModule, contextSession: LLFirSession): LLFirSession { return doCreateDanglingFileSession(module, contextSession) { + registerWasmComponents() + register( FirSymbolProvider::class, LLFirModuleWithDependenciesSymbolProvider( @@ -76,6 +86,12 @@ } } + private fun LLFirSession.registerWasmComponents() { + val platform = ktModule.targetPlatform.singleOrNull() + val target = (platform as? WasmPlatformWithTarget)?.target ?: WasmTarget.JS + registerWasmComponents(target) + } + override fun createProjectLibraryProvidersForScope( session: LLFirSession, moduleData: LLFirModuleData,