drools: parsed java statement, resolve, references...

This commit is contained in:
Serega Vasiliev
2012-08-06 17:55:46 +02:00
parent f7eedc8b92
commit 570bb9b5d7
2 changed files with 8 additions and 3 deletions
@@ -837,13 +837,15 @@ public final class PsiUtil extends PsiUtilCore {
if (element instanceof PsiDirectory) return JavaDirectoryService.getInstance().getLanguageLevel((PsiDirectory)element);
final PsiFile file = element.getContainingFile();
if (file == null) {
return LanguageLevelProjectExtension.getInstance(element.getProject()).getLanguageLevel();
final LanguageLevelProjectExtension instance = LanguageLevelProjectExtension.getInstance(element.getProject());
return instance != null ? instance.getLanguageLevel() : LanguageLevel.HIGHEST;
}
if (!(file instanceof PsiJavaFile)) {
final PsiElement context = file.getContext();
if (context != null) return getLanguageLevel(context);
return LanguageLevelProjectExtension.getInstance(file.getProject()).getLanguageLevel();
final LanguageLevelProjectExtension instance = LanguageLevelProjectExtension.getInstance(file.getProject());
return instance != null ? instance.getLanguageLevel() : LanguageLevel.HIGHEST;
}
return ((PsiJavaFile)file).getLanguageLevel();
@@ -18,6 +18,7 @@ package com.intellij.lang.java.parser;
import com.intellij.codeInsight.daemon.JavaErrorMessages;
import com.intellij.lang.*;
import com.intellij.lang.impl.PsiBuilderAdapter;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.lang.java.JavaParserDefinition;
import com.intellij.lexer.JavaDocLexer;
import com.intellij.lexer.Lexer;
@@ -169,7 +170,9 @@ public class JavaParserUtil {
final PsiBuilderFactory factory = PsiBuilderFactory.getInstance();
final LanguageLevel level = PsiUtil.getLanguageLevel(psi);
final Lexer lexer = JavaParserDefinition.createLexer(level);
final PsiBuilder builder = factory.createBuilder(project, chameleon, lexer, psi.getLanguage(), text);
Language language = psi.getLanguage();
if (!language.isKindOf(JavaLanguage.INSTANCE)) language = JavaLanguage.INSTANCE;
final PsiBuilder builder = factory.createBuilder(project, chameleon, lexer, language, text);
setLanguageLevel(builder, level);
return builder;