[Analysis API] Load scripting extensions for script dangling files
The commit fixes failing 'ContextCollectorScriptTestGenerated' for dangling file copies.
This commit is contained in:
+25
-17
@@ -160,28 +160,32 @@ internal abstract class LLFirAbstractSessionFactory(protected val project: Proje
|
|||||||
register(FirRegisteredPluginAnnotations::class, FirRegisteredPluginAnnotationsImpl(this))
|
register(FirRegisteredPluginAnnotations::class, FirRegisteredPluginAnnotationsImpl(this))
|
||||||
register(FirJvmTypeMapper::class, FirJvmTypeMapper(this))
|
register(FirJvmTypeMapper::class, FirJvmTypeMapper(this))
|
||||||
|
|
||||||
FirSessionConfigurator(this).apply {
|
registerScriptExtensions(this, module.file)
|
||||||
val hostConfiguration = ScriptingHostConfiguration(defaultJvmScriptingHostConfiguration) {}
|
|
||||||
val scriptDefinition = module.file.findScriptDefinition()
|
|
||||||
?: errorWithAttachment("Cannot load script definition") {
|
|
||||||
withVirtualFileEntry("file", module.file.virtualFile)
|
|
||||||
}
|
|
||||||
|
|
||||||
val extensionRegistrar = FirScriptingCompilerExtensionIdeRegistrar(
|
|
||||||
project,
|
|
||||||
hostConfiguration,
|
|
||||||
scriptDefinitionSources = emptyList(),
|
|
||||||
scriptDefinitions = listOf(scriptDefinition)
|
|
||||||
)
|
|
||||||
|
|
||||||
registerExtensions(extensionRegistrar.configure())
|
|
||||||
registerExtensions(FirScriptingSamWithReceiverExtensionRegistrar().configure())
|
|
||||||
}.configure()
|
|
||||||
|
|
||||||
LLFirSessionConfigurator.configure(this)
|
LLFirSessionConfigurator.configure(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun registerScriptExtensions(session: LLFirSession, file: KtFile) {
|
||||||
|
FirSessionConfigurator(session).apply {
|
||||||
|
val hostConfiguration = ScriptingHostConfiguration(defaultJvmScriptingHostConfiguration) {}
|
||||||
|
val scriptDefinition = file.findScriptDefinition()
|
||||||
|
?: errorWithAttachment("Cannot load script definition") {
|
||||||
|
withVirtualFileEntry("file", file.virtualFile)
|
||||||
|
}
|
||||||
|
|
||||||
|
val extensionRegistrar = FirScriptingCompilerExtensionIdeRegistrar(
|
||||||
|
project,
|
||||||
|
hostConfiguration,
|
||||||
|
scriptDefinitionSources = emptyList(),
|
||||||
|
scriptDefinitions = listOf(scriptDefinition)
|
||||||
|
)
|
||||||
|
|
||||||
|
registerExtensions(extensionRegistrar.configure())
|
||||||
|
registerExtensions(FirScriptingSamWithReceiverExtensionRegistrar().configure())
|
||||||
|
}.configure()
|
||||||
|
}
|
||||||
|
|
||||||
fun createNotUnderContentRootResolvableSession(module: KtNotUnderContentRootModule): LLFirNotUnderContentRootResolvableModuleSession {
|
fun createNotUnderContentRootResolvableSession(module: KtNotUnderContentRootModule): LLFirNotUnderContentRootResolvableModuleSession {
|
||||||
val builtinsSession = LLFirBuiltinsSessionFactory.getInstance(project).getBuiltinsSession(JvmPlatforms.unspecifiedJvmPlatform)
|
val builtinsSession = LLFirBuiltinsSessionFactory.getInstance(project).getBuiltinsSession(JvmPlatforms.unspecifiedJvmPlatform)
|
||||||
val languageVersionSettings = ProjectStructureProvider.getInstance(project).globalLanguageVersionSettings
|
val languageVersionSettings = ProjectStructureProvider.getInstance(project).globalLanguageVersionSettings
|
||||||
@@ -532,6 +536,10 @@ internal abstract class LLFirAbstractSessionFactory(protected val project: Proje
|
|||||||
.createIfNeeded(this)
|
.createIfNeeded(this)
|
||||||
?.also { register(FirSwitchableExtensionDeclarationsSymbolProvider::class, it) }
|
?.also { register(FirSwitchableExtensionDeclarationsSymbolProvider::class, it) }
|
||||||
|
|
||||||
|
if (contextModule is KtScriptModule) {
|
||||||
|
registerScriptExtensions(this, contextModule.file)
|
||||||
|
}
|
||||||
|
|
||||||
val context = DanglingFileSessionCreationContext(
|
val context = DanglingFileSessionCreationContext(
|
||||||
moduleData,
|
moduleData,
|
||||||
firProvider,
|
firProvider,
|
||||||
|
|||||||
Reference in New Issue
Block a user