From dab771f39a7e75f225fc14baf245dc2f58078e29 Mon Sep 17 00:00:00 2001 From: peter Date: Sat, 13 Feb 2016 13:15:42 +0100 Subject: [PATCH] use module to determine language level (IDEA-151620) --- .../src/com/intellij/psi/PsiResolveHelper.java | 5 +++++ java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java | 3 ++- .../psi/impl/source/resolve/PsiResolveHelperImpl.java | 8 ++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/java/java-psi-api/src/com/intellij/psi/PsiResolveHelper.java b/java/java-psi-api/src/com/intellij/psi/PsiResolveHelper.java index b63c9b545109..c35930778906 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiResolveHelper.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiResolveHelper.java @@ -19,6 +19,7 @@ import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.RecursionGuard; import com.intellij.openapi.util.RecursionManager; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.impl.source.resolve.ParameterTypeInferencePolicy; import com.intellij.psi.infos.CandidateInfo; @@ -169,4 +170,8 @@ public interface PsiResolveHelper { PsiType arg, boolean isContraVariantPosition, LanguageLevel languageLevel); + + @NotNull + LanguageLevel getEffectiveLanguageLevel(@Nullable VirtualFile virtualFile); + } diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java index ebffc3e97842..1602daa653e1 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java @@ -970,7 +970,8 @@ public final class PsiUtil extends PsiUtilCore { } } - return getLanguageLevel(element.getProject()); + PsiResolveHelper instance = PsiResolveHelper.SERVICE.getInstance(element.getProject()); + return instance != null ? instance.getEffectiveLanguageLevel(getVirtualFile(file)) : LanguageLevel.HIGHEST; } @NotNull diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiResolveHelperImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiResolveHelperImpl.java index 124cb3e8c2a8..8077e511e496 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiResolveHelperImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiResolveHelperImpl.java @@ -16,8 +16,10 @@ package com.intellij.psi.impl.source.resolve; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; +import com.intellij.psi.impl.JavaPsiImplementationHelper; import com.intellij.psi.impl.source.resolve.graphInference.PsiGraphInferenceHelper; import com.intellij.psi.infos.CandidateInfo; import com.intellij.psi.scope.MethodProcessorSetupFailedException; @@ -208,6 +210,12 @@ public class PsiResolveHelperImpl implements PsiResolveHelper { .getSubstitutionForTypeParameter(typeParam, param, arg, isContraVariantPosition, languageLevel); } + @NotNull + @Override + public LanguageLevel getEffectiveLanguageLevel(@Nullable VirtualFile virtualFile) { + return JavaPsiImplementationHelper.getInstance(myManager.getProject()).getEffectiveLanguageLevel(virtualFile); + } + @NotNull public PsiInferenceHelper getInferenceHelper(@NotNull LanguageLevel languageLevel) { if (languageLevel.isAtLeast(LanguageLevel.JDK_1_8)) {