From d1cf24b6e7930ef2b9189c2ce22c61e3e5d3e992 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 31 May 2012 14:19:36 +0400 Subject: [PATCH] search for first class file in all roots to detect language level --- .../psi/impl/JavaPsiImplementationHelperImpl.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java b/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java index 3a887e667551..fe729adddc94 100644 --- a/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java @@ -142,24 +142,27 @@ public class JavaPsiImplementationHelperImpl extends JavaPsiImplementationHelper for (VirtualFile rootFile : files) { final VirtualFile classFile = rootFile.findFileByRelativePath(relativePath); if (classFile != null) { - return getLanguageLevel(classFile); + final PsiJavaFile javaFile = getPsiFileInRoot(classFile); + if (javaFile != null) { + return javaFile.getLanguageLevel(); + } } } + return LanguageLevelProjectExtension.getInstance(myProject).getLanguageLevel(); } return null; } - private LanguageLevel getLanguageLevel(final VirtualFile dirFile) { + @Nullable + private PsiJavaFile getPsiFileInRoot(final VirtualFile dirFile) { final VirtualFile[] children = dirFile.getChildren(); - final LanguageLevel defaultLanguageLevel = LanguageLevelProjectExtension.getInstance(myProject).getLanguageLevel(); for (VirtualFile child : children) { if (StdFileTypes.CLASS.equals(child.getFileType())) { final PsiFile psiFile = PsiManager.getInstance(myProject).findFile(child); - if (psiFile instanceof PsiJavaFile) return ((PsiJavaFile)psiFile).getLanguageLevel(); + if (psiFile instanceof PsiJavaFile) return ((PsiJavaFile)psiFile); } } - - return defaultLanguageLevel; + return null; } @Override