Do not check script definitions in parser
This commit is contained in:
@@ -20,17 +20,17 @@ import com.intellij.lang.ASTNode;
|
||||
import com.intellij.lang.PsiBuilder;
|
||||
import com.intellij.lang.PsiParser;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.io.FileUtilRt;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.script.ScriptDefinitionProvider;
|
||||
import org.jetbrains.kotlin.idea.KotlinFileType;
|
||||
import org.jetbrains.kotlin.psi.KtFile;
|
||||
|
||||
public class KotlinParser implements PsiParser {
|
||||
|
||||
private final ScriptDefinitionProvider scriptDefinitionProvider;
|
||||
|
||||
public KotlinParser(Project project) {
|
||||
scriptDefinitionProvider = ScriptDefinitionProvider.Companion.getInstance(project);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -43,12 +43,12 @@ public class KotlinParser implements PsiParser {
|
||||
@NotNull
|
||||
public ASTNode parse(IElementType iElementType, PsiBuilder psiBuilder, PsiFile psiFile) {
|
||||
KotlinParsing ktParsing = KotlinParsing.createForTopLevel(new SemanticWhitespaceAwarePsiBuilderImpl(psiBuilder));
|
||||
if (scriptDefinitionProvider != null && scriptDefinitionProvider.isScript(psiFile.getName())
|
||||
|| psiFile.getName().endsWith(KotlinParserDefinition.STD_SCRIPT_EXT)) {
|
||||
ktParsing.parseScript();
|
||||
String extension = FileUtilRt.getExtension(psiFile.getName());
|
||||
if (extension.isEmpty() || extension.equals(KotlinFileType.EXTENSION) || (psiFile instanceof KtFile && ((KtFile) psiFile).isCompiled())) {
|
||||
ktParsing.parseFile();
|
||||
}
|
||||
else {
|
||||
ktParsing.parseFile();
|
||||
ktParsing.parseScript();
|
||||
}
|
||||
return psiBuilder.getTreeBuilt();
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// FILE: p/p.kt;
|
||||
// FILE: p/p.kt
|
||||
package p
|
||||
|
||||
object Object {
|
||||
|
||||
@@ -59,7 +59,7 @@ import org.jetbrains.kotlin.idea.caches.project.NotUnderContentRootModuleInfo
|
||||
import org.jetbrains.kotlin.idea.caches.project.forcedModuleInfo
|
||||
import org.jetbrains.kotlin.idea.caches.project.productionSourceInfo
|
||||
import org.jetbrains.kotlin.idea.caches.project.testSourceInfo
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.*
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionContributor
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager
|
||||
import org.jetbrains.kotlin.idea.project.KOTLIN_CONSOLE_KEY
|
||||
@@ -143,6 +143,10 @@ class KotlinConsoleRunner(
|
||||
val builder = LanguageConsoleBuilder()
|
||||
|
||||
val consoleView = builder.gutterContentProvider(ConsoleGutterContentProvider()).build(project, KotlinLanguage.INSTANCE)
|
||||
|
||||
// This rename is needed to parse file in console as script
|
||||
consoleView.virtualFile.rename(this, consoleView.virtualFile.name + KotlinParserDefinition.STD_SCRIPT_EXT)
|
||||
|
||||
consoleView.virtualFile.putUserData(KOTLIN_CONSOLE_KEY, true)
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -221,7 +221,7 @@ class ConvertTextJavaCopyPasteProcessor : CopyPastePostProcessor<TextBlockTransf
|
||||
}
|
||||
|
||||
private fun parseAsFile(text: String, fileType: LanguageFileType, project: Project): PsiFile {
|
||||
return PsiFileFactory.getInstance(project).createFileFromText("Dummy.java", fileType, text, LocalTimeCounter.currentTime(), true)
|
||||
return PsiFileFactory.getInstance(project).createFileFromText("Dummy." + fileType.defaultExtension, fileType, text, LocalTimeCounter.currentTime(), true)
|
||||
}
|
||||
|
||||
private fun DataForConversion.tryResolveImports(targetFile: KtFile): ElementAndTextList {
|
||||
|
||||
Reference in New Issue
Block a user