diff --git a/compiler/psi/src/org/jetbrains/kotlin/parsing/KotlinParser.java b/compiler/psi/src/org/jetbrains/kotlin/parsing/KotlinParser.java index f2056bd265a..9651885b191 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/parsing/KotlinParser.java +++ b/compiler/psi/src/org/jetbrains/kotlin/parsing/KotlinParser.java @@ -25,7 +25,6 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.idea.KotlinFileType; -import org.jetbrains.kotlin.psi.KtFile; public class KotlinParser implements PsiParser { @@ -44,7 +43,7 @@ public class KotlinParser implements PsiParser { public static ASTNode parse(PsiBuilder psiBuilder, PsiFile psiFile) { KotlinParsing ktParsing = KotlinParsing.createForTopLevel(new SemanticWhitespaceAwarePsiBuilderImpl(psiBuilder)); String extension = FileUtilRt.getExtension(psiFile.getName()); - if (extension.isEmpty() || extension.equals(KotlinFileType.EXTENSION) || (psiFile instanceof KtFile && ((KtFile) psiFile).isCompiled())) { + if (extension.isEmpty() || extension.equals(KotlinFileType.EXTENSION) || isCompiledFile(psiFile)) { ktParsing.parseFile(); } else { @@ -53,6 +52,13 @@ public class KotlinParser implements PsiParser { return psiBuilder.getTreeBuilt(); } + @SuppressWarnings({"deprecation", "UnnecessaryFullyQualifiedName"}) + private static boolean isCompiledFile(PsiFile psiFile) { + //avoid loading KtFile which depends on java psi, which is not available in some setup + //e.g. remote dev https://youtrack.jetbrains.com/issue/GTW-7554 + return psiFile instanceof org.jetbrains.kotlin.psi.KtCommonFile && ((org.jetbrains.kotlin.psi.KtCommonFile) psiFile).isCompiled(); + } + @NotNull public static ASTNode parseTypeCodeFragment(PsiBuilder psiBuilder) { KotlinParsing ktParsing = KotlinParsing.createForTopLevel(new SemanticWhitespaceAwarePsiBuilderImpl(psiBuilder));