Provide a default scriptDefinition for script

This commit is contained in:
Natalia Selezneva
2018-07-19 09:48:17 +03:00
parent c802428326
commit 736361e345
5 changed files with 24 additions and 18 deletions
@@ -25,18 +25,18 @@ import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.psi.stubs.KotlinScriptStub;
import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes;
import org.jetbrains.kotlin.script.KotlinScriptDefinition;
import org.jetbrains.kotlin.script.KotlinScriptDefinitionProviderKt;
import org.jetbrains.kotlin.script.ScriptDefinitionProvider;
import java.util.List;
import java.util.Objects;
import static kotlin.LazyThreadSafetyMode.PUBLICATION;
public class KtScript extends KtNamedDeclarationStub<KotlinScriptStub> implements KtDeclarationContainer {
public final Lazy<KotlinScriptDefinition> kotlinScriptDefinition = LazyKt.lazy(PUBLICATION, () -> Objects.requireNonNull(
KotlinScriptDefinitionProviderKt.getScriptDefinition(getContainingKtFile()),
() -> "Should not parse a script without definition: " + getContainingKtFile().getVirtualFile().getPath()
));
public final Lazy<KotlinScriptDefinition> kotlinScriptDefinition = LazyKt.lazy(PUBLICATION, () -> {
ScriptDefinitionProvider definitionsProvider = ScriptDefinitionProvider.Companion.getInstance(getProject());
KotlinScriptDefinition definition = definitionsProvider.findScriptDefinition(getContainingKtFile().getName());
return definition != null ? definition : definitionsProvider.getDefaultScriptDefinition();
});
public KtScript(@NotNull ASTNode node) {
super(node);
@@ -29,6 +29,7 @@ import kotlin.concurrent.write
interface ScriptDefinitionProvider {
fun findScriptDefinition(fileName: String): KotlinScriptDefinition?
fun isScript(fileName: String): Boolean
fun getDefaultScriptDefinition(): KotlinScriptDefinition
companion object {
fun getInstance(project: Project): ScriptDefinitionProvider =