Scripting Plugin. Update CoreFileTypeRegistry under lock
CoreFileTypeRegistry isn't thread-safe, so it should be updated under application lock, to avoid concurrently mutating underlying structure
This commit is contained in:
committed by
teamcity
parent
53069ee03f
commit
0fea8073ef
+7
-4
@@ -10,6 +10,7 @@ import com.intellij.mock.MockProject
|
|||||||
import com.intellij.openapi.fileTypes.FileTypeRegistry
|
import com.intellij.openapi.fileTypes.FileTypeRegistry
|
||||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||||
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
|
import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
@@ -99,10 +100,12 @@ class ScriptingCompilerConfigurationExtension(
|
|||||||
// Register new file extensions
|
// Register new file extensions
|
||||||
val fileTypeRegistry = FileTypeRegistry.getInstance() as CoreFileTypeRegistry
|
val fileTypeRegistry = FileTypeRegistry.getInstance() as CoreFileTypeRegistry
|
||||||
|
|
||||||
scriptDefinitionProvider.getKnownFilenameExtensions().filter {
|
KotlinCoreEnvironment.underApplicationLock {
|
||||||
fileTypeRegistry.getFileTypeByExtension(it) != KotlinFileType.INSTANCE
|
scriptDefinitionProvider.getKnownFilenameExtensions().filter {
|
||||||
}.forEach {
|
fileTypeRegistry.getFileTypeByExtension(it) != KotlinFileType.INSTANCE
|
||||||
fileTypeRegistry.registerFileType(KotlinFileType.INSTANCE, it)
|
}.forEach {
|
||||||
|
fileTypeRegistry.registerFileType(KotlinFileType.INSTANCE, it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user