use module to determine language level (IDEA-151620)

This commit is contained in:
peter
2016-02-13 13:21:20 +01:00
parent 0f494aace2
commit dab771f39a
3 changed files with 15 additions and 1 deletions
@@ -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);
}
@@ -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
@@ -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)) {