Create one instance of StandardIdeScriptDefinition per project
ScriptModuleInfo for scripts outside source roots in compared by virtualFile and script definition. So when we use ScriptDefinitionsManaged.getDefaultScriptDefinition we shouldn't create a new one on each call EA-132810 - assert: DiagnoseUnknownModuleInfoReporter.report
This commit is contained in:
+8
-4
@@ -141,7 +141,9 @@ class ScriptDefinitionsManager(private val project: Project) : LazyScriptDefinit
|
||||
}
|
||||
|
||||
override fun getDefaultScriptDefinition(): KotlinScriptDefinition {
|
||||
return StandardIdeScriptDefinition(project)
|
||||
val standardScriptDefinitionContributor = ScriptDefinitionContributor.find<StandardScriptDefinitionContributor>(project)
|
||||
?: error("StandardScriptDefinitionContributor should be registered is plugin.xml")
|
||||
return standardScriptDefinitionContributor.getDefinitions().last()
|
||||
}
|
||||
|
||||
private fun updateDefinitions() {
|
||||
@@ -276,14 +278,16 @@ interface ScriptDefinitionContributor {
|
||||
|
||||
}
|
||||
|
||||
class StandardScriptDefinitionContributor(private val project: Project) : ScriptDefinitionContributor {
|
||||
override fun getDefinitions() = listOf(StandardIdeScriptDefinition(project))
|
||||
class StandardScriptDefinitionContributor(project: Project) : ScriptDefinitionContributor {
|
||||
private val standardIdeScriptDefinition = StandardIdeScriptDefinition(project)
|
||||
|
||||
override fun getDefinitions() = listOf(standardIdeScriptDefinition)
|
||||
|
||||
override val id: String = "StandardKotlinScript"
|
||||
}
|
||||
|
||||
|
||||
class StandardIdeScriptDefinition(project: Project) : KotlinScriptDefinition(ScriptTemplateWithArgs::class) {
|
||||
class StandardIdeScriptDefinition internal constructor(project: Project) : KotlinScriptDefinition(ScriptTemplateWithArgs::class) {
|
||||
override val dependencyResolver = BundledKotlinScriptDependenciesResolver(project)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user