[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(FirJvmTypeMapper::class, FirJvmTypeMapper(this))
|
||||
|
||||
FirSessionConfigurator(this).apply {
|
||||
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()
|
||||
registerScriptExtensions(this, module.file)
|
||||
|
||||
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 {
|
||||
val builtinsSession = LLFirBuiltinsSessionFactory.getInstance(project).getBuiltinsSession(JvmPlatforms.unspecifiedJvmPlatform)
|
||||
val languageVersionSettings = ProjectStructureProvider.getInstance(project).globalLanguageVersionSettings
|
||||
@@ -532,6 +536,10 @@ internal abstract class LLFirAbstractSessionFactory(protected val project: Proje
|
||||
.createIfNeeded(this)
|
||||
?.also { register(FirSwitchableExtensionDeclarationsSymbolProvider::class, it) }
|
||||
|
||||
if (contextModule is KtScriptModule) {
|
||||
registerScriptExtensions(this, contextModule.file)
|
||||
}
|
||||
|
||||
val context = DanglingFileSessionCreationContext(
|
||||
moduleData,
|
||||
firProvider,
|
||||
|
||||
Reference in New Issue
Block a user