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 {
|
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() {
|
private fun updateDefinitions() {
|
||||||
@@ -276,14 +278,16 @@ interface ScriptDefinitionContributor {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class StandardScriptDefinitionContributor(private val project: Project) : ScriptDefinitionContributor {
|
class StandardScriptDefinitionContributor(project: Project) : ScriptDefinitionContributor {
|
||||||
override fun getDefinitions() = listOf(StandardIdeScriptDefinition(project))
|
private val standardIdeScriptDefinition = StandardIdeScriptDefinition(project)
|
||||||
|
|
||||||
|
override fun getDefinitions() = listOf(standardIdeScriptDefinition)
|
||||||
|
|
||||||
override val id: String = "StandardKotlinScript"
|
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)
|
override val dependencyResolver = BundledKotlinScriptDependenciesResolver(project)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user