Catch errors when instantiating script templates

If we throw from this code IDE becomes unusable

 #KT-18945 Fixed
This commit is contained in:
Pavel V. Talanov
2017-07-11 14:41:50 +03:00
parent 8ac17400ae
commit a77cd0ab09
@@ -56,13 +56,13 @@ interface ScriptTemplatesProvider {
}
fun makeScriptDefsFromTemplatesProviderExtensions(project: Project,
errorsHandler: ((ScriptTemplatesProvider, Exception) -> Unit) = { _, ex -> throw ex }
errorsHandler: ((ScriptTemplatesProvider, Throwable) -> Unit) = { _, ex -> throw ex }
): List<KotlinScriptDefinition> =
makeScriptDefsFromTemplatesProviders(Extensions.getArea(project).getExtensionPoint(ScriptTemplatesProvider.EP_NAME).extensions.asIterable(),
errorsHandler)
fun makeScriptDefsFromTemplatesProviders(providers: Iterable<ScriptTemplatesProvider>,
errorsHandler: ((ScriptTemplatesProvider, Exception) -> Unit) = { _, ex -> throw ex }
errorsHandler: ((ScriptTemplatesProvider, Throwable) -> Unit) = { _, ex -> throw ex }
): List<KotlinScriptDefinition> = providers.flatMap { provider ->
try {
LOG.info("[kts] loading script definitions ${provider.templateClassNames} using cp: ${provider.dependenciesClasspath.joinToString(File.pathSeparator)}")
@@ -73,7 +73,7 @@ fun makeScriptDefsFromTemplatesProviders(providers: Iterable<ScriptTemplatesProv
}
}
}
catch (ex: Exception) {
catch (ex: Throwable) {
LOG.info("Templates provider ${provider.id} is invalid: ${ex.message}")
errorsHandler(provider, ex)
emptyList<KotlinScriptDefinition>()