Make script infrastructure providers optional
This commit is contained in:
@@ -30,6 +30,9 @@ import java.util.List;
|
||||
public class KtScript extends KtNamedDeclarationStub<KotlinScriptStub> implements KtDeclarationContainer {
|
||||
public KotlinScriptDefinition getKotlinScriptDefinition() {
|
||||
ScriptDefinitionProvider definitionsProvider = ScriptDefinitionProvider.Companion.getInstance(getProject());
|
||||
if (definitionsProvider == null) {
|
||||
throw new IllegalStateException("Unable to use KtScript: ScriptDefinitionProvider is not configured.");
|
||||
}
|
||||
KotlinScriptDefinition definition = definitionsProvider.findScriptDefinition(getContainingKtFile().getName());
|
||||
return definition != null ? definition : definitionsProvider.getDefaultScriptDefinition();
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ interface ScriptDefinitionProvider {
|
||||
fun getKnownFilenameExtensions(): Sequence<String>
|
||||
|
||||
companion object {
|
||||
fun getInstance(project: Project): ScriptDefinitionProvider =
|
||||
fun getInstance(project: Project): ScriptDefinitionProvider? =
|
||||
ServiceManager.getService(project, ScriptDefinitionProvider::class.java)
|
||||
}
|
||||
}
|
||||
@@ -51,7 +51,7 @@ fun findScriptDefinition(file: VirtualFile, project: Project): KotlinScriptDefin
|
||||
return null
|
||||
}
|
||||
|
||||
val scriptDefinitionProvider = ScriptDefinitionProvider.getInstance(project)
|
||||
val scriptDefinitionProvider = ScriptDefinitionProvider.getInstance(project) ?: return null
|
||||
val psiFile = PsiManager.getInstance(project).findFile(file)
|
||||
if (psiFile != null) {
|
||||
if (psiFile !is KtFile) return null
|
||||
|
||||
@@ -27,7 +27,7 @@ interface ScriptDependenciesProvider {
|
||||
fun getScriptDependencies(file: PsiFile) = getScriptDependencies(file.virtualFile ?: file.originalFile.virtualFile)
|
||||
|
||||
companion object {
|
||||
fun getInstance(project: Project): ScriptDependenciesProvider =
|
||||
fun getInstance(project: Project): ScriptDependenciesProvider? =
|
||||
ServiceManager.getService(project, ScriptDependenciesProvider::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user