mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-26 19:06:24 +07:00
Merge branch 'master' into upsource-master
This commit is contained in:
@@ -32,6 +32,7 @@ import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.IndexNotReadyException;
|
||||
import com.intellij.openapi.util.IconLoader;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.searches.AllOverridingMethodsSearch;
|
||||
import com.intellij.psi.search.searches.ClassInheritorsSearch;
|
||||
@@ -60,6 +61,8 @@ public class JavaLineMarkerProvider implements LineMarkerProvider, DumbAware {
|
||||
private static final Icon IMPLEMENTED_INTERFACE_MARKER_RENDERER = IMPLEMENTED_METHOD_MARKER_RENDERER;
|
||||
private static final Icon SUBCLASSED_CLASS_MARKER_RENDERER = OVERRIDEN_METHOD_MARKER_RENDERER;
|
||||
|
||||
private static final Icon RECURSIVE_METHOD_ICON = IconLoader.getIcon("/gutter/recursiveMethod.png");
|
||||
|
||||
protected final DaemonCodeAnalyzerSettings myDaemonSettings;
|
||||
protected final EditorColorsManager myColorsManager;
|
||||
|
||||
@@ -164,6 +167,11 @@ public class JavaLineMarkerProvider implements LineMarkerProvider, DumbAware {
|
||||
}
|
||||
else if (element instanceof PsiClass && !(element instanceof PsiTypeParameter)) {
|
||||
collectInheritingClasses((PsiClass)element, result);
|
||||
} else if(element instanceof PsiMethodCallExpression){
|
||||
final PsiMethodCallExpression methodCall = (PsiMethodCallExpression)element;
|
||||
if (isRecursiveMethodCall(methodCall)){
|
||||
result.add(new RecursiveMethodCallMarkerInfo(methodCall));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!methods.isEmpty()) {
|
||||
@@ -171,6 +179,14 @@ public class JavaLineMarkerProvider implements LineMarkerProvider, DumbAware {
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isRecursiveMethodCall(@NotNull PsiMethodCallExpression methodCall){
|
||||
PsiMethod referencedMethod = methodCall.resolveMethod();
|
||||
|
||||
TextRange rmRange = referencedMethod == null ? null : referencedMethod.getTextRange();
|
||||
int mcOffset = methodCall.getTextRange().getStartOffset();
|
||||
return rmRange != null && rmRange.contains(mcOffset);
|
||||
}
|
||||
|
||||
private static void collectInheritingClasses(PsiClass aClass, Collection<LineMarkerInfo> result) {
|
||||
if (aClass.hasModifierProperty(PsiModifier.FINAL)) {
|
||||
return;
|
||||
@@ -276,4 +292,36 @@ public class JavaLineMarkerProvider implements LineMarkerProvider, DumbAware {
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
private static class RecursiveMethodCallMarkerInfo extends MergeableLineMarkerInfo<PsiMethodCallExpression> {
|
||||
private RecursiveMethodCallMarkerInfo(@NotNull PsiMethodCallExpression methodCall) {
|
||||
super(methodCall,
|
||||
methodCall.getTextRange(),
|
||||
RECURSIVE_METHOD_ICON,
|
||||
Pass.UPDATE_OVERRIDEN_MARKERS,
|
||||
FunctionUtil.<PsiMethodCallExpression, String>constant("Recursive call"),
|
||||
null,
|
||||
GutterIconRenderer.Alignment.RIGHT
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canMergeWith(@NotNull MergeableLineMarkerInfo<?> info) {
|
||||
if (!(info instanceof RecursiveMethodCallMarkerInfo)) return false;
|
||||
PsiElement otherElement = info.getElement();
|
||||
PsiElement myElement = getElement();
|
||||
return otherElement != null && myElement != null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Icon getCommonIcon(@NotNull List<MergeableLineMarkerInfo> infos) {
|
||||
return myIcon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Function<? super PsiElement, String> getCommonTooltip(@NotNull List<MergeableLineMarkerInfo> infos) {
|
||||
return FunctionUtil.<PsiElement, String>constant("Multiple recursive calls");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+16
-23
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2011 JetBrains s.r.o.
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -51,7 +51,6 @@ import java.util.*;
|
||||
*/
|
||||
public class GenericsHighlightUtil {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.daemon.impl.analysis.GenericsHighlightUtil");
|
||||
private static final String GENERICS_ARE_NOT_SUPPORTED = JavaErrorMessages.message("generics.are.not.supported");
|
||||
private static final QuickFixFactory QUICK_FIX_FACTORY = QuickFixFactory.getInstance();
|
||||
|
||||
private GenericsHighlightUtil() {}
|
||||
@@ -102,6 +101,7 @@ public class GenericsHighlightUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static HighlightInfo checkParameterizedReferenceTypeArguments(PsiElement resolved,
|
||||
final PsiJavaCodeReferenceElement referenceElement,
|
||||
final PsiSubstitutor substitutor) {
|
||||
@@ -110,17 +110,14 @@ public class GenericsHighlightUtil {
|
||||
return checkReferenceTypeArgumentList(typeParameterListOwner, referenceElement.getParameterList(), substitutor, true);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static HighlightInfo checkReferenceTypeArgumentList(final PsiTypeParameterListOwner typeParameterListOwner,
|
||||
final PsiReferenceParameterList referenceParameterList,
|
||||
final PsiSubstitutor substitutor,
|
||||
boolean registerIntentions) {
|
||||
if (referenceParameterList != null && !PsiUtil.isLanguageLevel5OrHigher(referenceParameterList)) {
|
||||
if (referenceParameterList.getTypeParameterElements().length > 0) {
|
||||
HighlightInfo info = HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, referenceParameterList, GENERICS_ARE_NOT_SUPPORTED);
|
||||
QuickFixAction.registerQuickFixAction(info, new ShowModulePropertiesFix(referenceParameterList));
|
||||
QuickFixAction.registerQuickFixAction(info, new IncreaseLanguageLevelFix(LanguageLevel.JDK_1_5));
|
||||
return info;
|
||||
}
|
||||
if (referenceParameterList != null) {
|
||||
HighlightInfo info = HighlightUtil.checkGenericsFeature(referenceParameterList, referenceParameterList.getTypeParameterElements().length);
|
||||
if (info != null) return info;
|
||||
}
|
||||
|
||||
PsiDiamondType.DiamondInferenceResult inferenceResult = null;
|
||||
@@ -914,15 +911,13 @@ public class GenericsHighlightUtil {
|
||||
return valueOfMethod.equals(methodSignature);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static HighlightInfo checkTypeParametersList(PsiTypeParameterList parameterList) {
|
||||
PsiTypeParameter[] typeParameters = parameterList.getTypeParameters();
|
||||
if (typeParameters.length == 0) return null;
|
||||
if (!PsiUtil.isLanguageLevel5OrHigher(parameterList)) {
|
||||
HighlightInfo info = HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, parameterList, GENERICS_ARE_NOT_SUPPORTED);
|
||||
QuickFixAction.registerQuickFixAction(info, new ShowModulePropertiesFix(parameterList));
|
||||
QuickFixAction.registerQuickFixAction(info, new IncreaseLanguageLevelFix(LanguageLevel.JDK_1_5));
|
||||
return info;
|
||||
}
|
||||
HighlightInfo info = HighlightUtil.checkGenericsFeature(parameterList, typeParameters.length);
|
||||
if (info != null) return info;
|
||||
|
||||
final PsiElement parent = parameterList.getParent();
|
||||
if (parent instanceof PsiClass && ((PsiClass)parent).isEnum()) {
|
||||
return HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR,
|
||||
@@ -1208,21 +1203,18 @@ public class GenericsHighlightUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static HighlightInfo checkVarArgParameterIsLast(PsiParameter parameter) {
|
||||
PsiElement declarationScope = parameter.getDeclarationScope();
|
||||
if (declarationScope instanceof PsiMethod) {
|
||||
PsiParameter[] params = ((PsiMethod)declarationScope).getParameterList().getParameters();
|
||||
if (parameter.isVarArgs()) {
|
||||
if (!PsiUtil.getLanguageLevel(parameter).hasEnumKeywordAndAutoboxing()) {
|
||||
HighlightInfo info = HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, parameter, JavaErrorMessages.message("varargs.prior.15"));
|
||||
QuickFixAction.registerQuickFixAction(info, new IncreaseLanguageLevelFix(LanguageLevel.JDK_1_5));
|
||||
return info;
|
||||
}
|
||||
HighlightInfo info = HighlightUtil.checkVarargFeature(parameter);
|
||||
if (info != null) return info;
|
||||
|
||||
if (params[params.length - 1] != parameter) {
|
||||
HighlightInfo info = HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, parameter,
|
||||
JavaErrorMessages.message("vararg.not.last.parameter"));
|
||||
QuickFixAction.registerQuickFixAction(info, new MakeVarargParameterLastFix(parameter), null);
|
||||
info = HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, parameter, JavaErrorMessages.message("vararg.not.last.parameter"));
|
||||
QuickFixAction.registerQuickFixAction(info, new MakeVarargParameterLastFix(parameter));
|
||||
return info;
|
||||
}
|
||||
}
|
||||
@@ -1230,6 +1222,7 @@ public class GenericsHighlightUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static List<HighlightInfo> checkEnumConstantModifierList(PsiModifierList modifierList) {
|
||||
List<HighlightInfo> list = null;
|
||||
PsiElement[] children = modifierList.getChildren();
|
||||
|
||||
+83
-5
@@ -58,6 +58,7 @@ import org.intellij.lang.annotations.Language;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.PropertyKey;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -593,6 +594,7 @@ public class HighlightUtil {
|
||||
if (variable instanceof PsiLocalVariable ||
|
||||
variable instanceof PsiParameter && ((PsiParameter)variable).getDeclarationScope() instanceof PsiCatchSection ||
|
||||
variable instanceof PsiParameter && ((PsiParameter)variable).getDeclarationScope() instanceof PsiForeachStatement) {
|
||||
@SuppressWarnings("unchecked")
|
||||
PsiElement scope = PsiTreeUtil.getParentOfType(variable, PsiFile.class, PsiMethod.class, PsiClassInitializer.class, PsiResourceList.class);
|
||||
VariablesNotProcessor proc = new VariablesNotProcessor(variable, false) {
|
||||
@Override
|
||||
@@ -602,7 +604,9 @@ public class HighlightUtil {
|
||||
};
|
||||
PsiScopesUtil.treeWalkUp(proc, identifier, scope);
|
||||
if (scope instanceof PsiResourceList && proc.size() == 0) {
|
||||
scope = PsiTreeUtil.getParentOfType(variable, PsiFile.class, PsiMethod.class, PsiClassInitializer.class);
|
||||
@SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
|
||||
NavigatablePsiElement parent = PsiTreeUtil.getParentOfType(variable, PsiFile.class, PsiMethod.class, PsiClassInitializer.class);
|
||||
scope = parent;
|
||||
PsiScopesUtil.treeWalkUp(proc, identifier, scope);
|
||||
}
|
||||
if (proc.size() > 0) {
|
||||
@@ -1403,7 +1407,7 @@ public class HighlightUtil {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
static HighlightInfo checkValidArrayAccessExpression(PsiExpression arrayExpression, PsiExpression indexExpression, PsiType type) {
|
||||
static HighlightInfo checkValidArrayAccessExpression(@Nullable PsiExpression arrayExpression, PsiExpression indexExpression, PsiType type) {
|
||||
PsiType arrayExpressionType = arrayExpression == null ? null : arrayExpression.getType();
|
||||
if (arrayExpressionType != null && !(arrayExpressionType instanceof PsiArrayType)) {
|
||||
String description = JavaErrorMessages.message("array.type.expected", formatType(arrayExpressionType));
|
||||
@@ -1744,9 +1748,11 @@ public class HighlightUtil {
|
||||
referencedClass = PsiUtil.resolveClassInType(type);
|
||||
}
|
||||
else if (qualifier instanceof PsiThisExpression || qualifier == null) {
|
||||
resolved = PsiTreeUtil.getParentOfType(expression, PsiMethod.class, true, PsiMember.class);
|
||||
@SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
|
||||
PsiMethod parent = PsiTreeUtil.getParentOfType(expression, PsiMethod.class, true, PsiMember.class);
|
||||
resolved = parent;
|
||||
expression = qualifier == null ? expression : qualifier;
|
||||
if (resolved instanceof PsiMethod) {
|
||||
if (resolved != null) {
|
||||
referencedClass = ((PsiMethod)resolved).getContainingClass();
|
||||
}
|
||||
}
|
||||
@@ -2452,7 +2458,7 @@ public class HighlightUtil {
|
||||
public static void registerChangeVariableTypeFixes(PsiVariable parameter, PsiType itemType, HighlightInfo highlightInfo) {
|
||||
for (ChangeVariableTypeQuickFixProvider fixProvider : Extensions.getExtensions(ChangeVariableTypeQuickFixProvider.EP_NAME)) {
|
||||
for (IntentionAction action : fixProvider.getFixes(parameter, itemType)) {
|
||||
QuickFixAction.registerQuickFixAction(highlightInfo, action, null);
|
||||
QuickFixAction.registerQuickFixAction(highlightInfo, action);
|
||||
}
|
||||
}
|
||||
ChangeParameterClassFix.registerQuickFixAction(parameter, itemType, highlightInfo);
|
||||
@@ -2466,4 +2472,76 @@ public class HighlightUtil {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static enum Feature {
|
||||
GENERICS(LanguageLevel.JDK_1_5, "feature.generics"),
|
||||
ANNOTATIONS(LanguageLevel.JDK_1_5, "feature.annotations"),
|
||||
STATIC_IMPORTS(LanguageLevel.JDK_1_5, "feature.static.imports"),
|
||||
FOR_EACH(LanguageLevel.JDK_1_5, "feature.for.each"),
|
||||
VARARGS(LanguageLevel.JDK_1_5, "feature.varargs"),
|
||||
DIAMOND_TYPES(LanguageLevel.JDK_1_7, "feature.diamond.types"),
|
||||
MULTI_CATCH(LanguageLevel.JDK_1_7, "feature.multi.catch"),
|
||||
TRY_WITH_RESOURCES(LanguageLevel.JDK_1_7, "feature.try.with.resources");
|
||||
|
||||
private final LanguageLevel level;
|
||||
private final String key;
|
||||
|
||||
private Feature(final LanguageLevel level, @PropertyKey(resourceBundle = JavaErrorMessages.BUNDLE) final String key) {
|
||||
this.level = level;
|
||||
this.key = key;
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static HighlightInfo checkFeature(@Nullable final PsiElement element, @NotNull final Feature feature) {
|
||||
if (element != null && !PsiUtil.getLanguageLevel(element).isAtLeast(feature.level)) {
|
||||
final String message = JavaErrorMessages.message("insufficient.language.level", JavaErrorMessages.message(feature.key));
|
||||
final HighlightInfo info = HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, element, message);
|
||||
QuickFixAction.registerQuickFixAction(info, new IncreaseLanguageLevelFix(feature.level));
|
||||
QuickFixAction.registerQuickFixAction(info, new ShowModulePropertiesFix(element));
|
||||
return info;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static HighlightInfo checkGenericsFeature(final PsiElement parameterList, final int listSize) {
|
||||
return listSize > 0 ? checkFeature(parameterList, Feature.GENERICS) : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static HighlightInfo checkAnnotationFeature(final PsiElement element) {
|
||||
return checkFeature(element, Feature.ANNOTATIONS);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static HighlightInfo checkForEachFeature(final PsiForeachStatement statement) {
|
||||
return checkFeature(statement, Feature.FOR_EACH);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static HighlightInfo checkStaticImportFeature(final PsiImportStaticStatement statement) {
|
||||
return checkFeature(statement, Feature.STATIC_IMPORTS);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static HighlightInfo checkVarargFeature(final PsiParameter parameter) {
|
||||
return checkFeature(parameter, Feature.VARARGS);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static HighlightInfo checkDiamondFeature(final PsiTypeElement typeElement) {
|
||||
return typeElement.getType() instanceof PsiDiamondType ? checkFeature(typeElement.getParent(), Feature.DIAMOND_TYPES) : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static HighlightInfo checkMultiCatchFeature(final PsiParameter parameter) {
|
||||
return parameter.getType() instanceof PsiDisjunctionType ? checkFeature(parameter, Feature.MULTI_CATCH) : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static HighlightInfo checkTryWithResourcesFeature(final PsiResourceVariable resourceVariable) {
|
||||
return checkFeature(resourceVariable.getParent(), Feature.TRY_WITH_RESOURCES);
|
||||
}
|
||||
}
|
||||
|
||||
+24
-31
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2011 JetBrains s.r.o.
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -30,7 +30,6 @@ import com.intellij.openapi.project.IndexNotReadyException;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.controlFlow.ControlFlowUtil;
|
||||
import com.intellij.psi.impl.source.javadoc.PsiDocMethodOrFieldRef;
|
||||
@@ -170,16 +169,11 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
|
||||
}
|
||||
}
|
||||
|
||||
@Override public void visitAnnotation(PsiAnnotation annotation) {
|
||||
@Override
|
||||
public void visitAnnotation(PsiAnnotation annotation) {
|
||||
super.visitAnnotation(annotation);
|
||||
if (!PsiUtil.isLanguageLevel5OrHigher(annotation)) {
|
||||
HighlightInfo info = HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, annotation, JavaErrorMessages.message("annotations.prior.15"));
|
||||
QuickFixAction.registerQuickFixAction(info, new IncreaseLanguageLevelFix(LanguageLevel.JDK_1_5));
|
||||
myHolder.add(info);
|
||||
return;
|
||||
}
|
||||
|
||||
myHolder.add(AnnotationsHighlightUtil.checkApplicability(annotation));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(HighlightUtil.checkAnnotationFeature(annotation));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(AnnotationsHighlightUtil.checkApplicability(annotation));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(AnnotationsHighlightUtil.checkAnnotationType(annotation));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(AnnotationsHighlightUtil.checkMissingAttributes(annotation));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(AnnotationsHighlightUtil.checkTargetAnnotationDuplicates(annotation));
|
||||
@@ -187,7 +181,8 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(AnnotationsHighlightUtil.checkForeignInnerClassesUsed(annotation));
|
||||
}
|
||||
|
||||
@Override public void visitAnnotationArrayInitializer(PsiArrayInitializerMemberValue initializer) {
|
||||
@Override
|
||||
public void visitAnnotationArrayInitializer(PsiArrayInitializerMemberValue initializer) {
|
||||
PsiMethod method = null;
|
||||
PsiElement parent = initializer.getParent();
|
||||
if (parent instanceof PsiNameValuePair) {
|
||||
@@ -364,28 +359,24 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
|
||||
}
|
||||
}
|
||||
|
||||
@Override public void visitField(PsiField field) {
|
||||
@Override
|
||||
public void visitField(PsiField field) {
|
||||
super.visitField(field);
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(HighlightControlFlowUtil.checkFinalFieldInitialized(field));
|
||||
}
|
||||
|
||||
@Override public void visitForeachStatement(PsiForeachStatement statement) {
|
||||
if (!PsiUtil.isLanguageLevel5OrHigher(statement)) {
|
||||
HighlightInfo info = HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, statement.getFirstChild(), JavaErrorMessages.message("foreach.prior.15"));
|
||||
QuickFixAction.registerQuickFixAction(info, new IncreaseLanguageLevelFix(LanguageLevel.JDK_1_5));
|
||||
myHolder.add(info);
|
||||
}
|
||||
@Override
|
||||
public void visitForeachStatement(final PsiForeachStatement statement) {
|
||||
myHolder.add(HighlightUtil.checkForEachFeature(statement));
|
||||
}
|
||||
|
||||
@Override public void visitImportStaticStatement(PsiImportStaticStatement statement) {
|
||||
if (!PsiUtil.isLanguageLevel5OrHigher(statement)) {
|
||||
HighlightInfo info = HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, statement.getFirstChild(), JavaErrorMessages.message("static.imports.prior.15"));
|
||||
QuickFixAction.registerQuickFixAction(info, new IncreaseLanguageLevelFix(LanguageLevel.JDK_1_5));
|
||||
myHolder.add(info);
|
||||
}
|
||||
@Override
|
||||
public void visitImportStaticStatement(final PsiImportStaticStatement statement) {
|
||||
myHolder.add(HighlightUtil.checkStaticImportFeature(statement));
|
||||
}
|
||||
|
||||
@Override public void visitIdentifier(PsiIdentifier identifier) {
|
||||
@Override
|
||||
public void visitIdentifier(final PsiIdentifier identifier) {
|
||||
PsiElement parent = identifier.getParent();
|
||||
final EditorColorsScheme colorsScheme = myHolder.getColorsScheme();
|
||||
if (parent instanceof PsiVariable) {
|
||||
@@ -411,10 +402,8 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
|
||||
}
|
||||
else if (parent instanceof PsiClass) {
|
||||
PsiClass aClass = (PsiClass)parent;
|
||||
if (aClass.isAnnotationType() && !PsiUtil.isLanguageLevel5OrHigher(aClass)) {
|
||||
HighlightInfo info = HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, identifier, JavaErrorMessages.message("annotations.prior.15"));
|
||||
QuickFixAction.registerQuickFixAction(info, new IncreaseLanguageLevelFix(LanguageLevel.JDK_1_5));
|
||||
myHolder.add(info);
|
||||
if (aClass.isAnnotationType()) {
|
||||
myHolder.add(HighlightUtil.checkAnnotationFeature(identifier));
|
||||
}
|
||||
|
||||
myHolder.add(HighlightClassUtil.checkClassAlreadyImported(aClass, identifier));
|
||||
@@ -742,6 +731,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkForeachLoopParameterType((PsiForeachStatement)parent));
|
||||
}
|
||||
else if (parent instanceof PsiCatchSection) {
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(HighlightUtil.checkMultiCatchFeature(parameter));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(HighlightUtil.checkCatchParameterIsThrowable(parameter));
|
||||
if (!myHolder.hasErrorResults()) myHolder.addAll(GenericsHighlightUtil.checkCatchParameterIsClass(parameter));
|
||||
if (!myHolder.hasErrorResults()) myHolder.addAll(HighlightUtil.checkCatchTypeIsDisjoint(parameter));
|
||||
@@ -987,11 +977,14 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
|
||||
@Override
|
||||
public void visitResourceVariable(final PsiResourceVariable resourceVariable) {
|
||||
visitVariable(resourceVariable);
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(HighlightUtil.checkTryWithResourcesFeature(resourceVariable));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(HighlightUtil.checkTryResourceIsAutoCloseable(resourceVariable));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(HighlightUtil.checkUnhandledCloserExceptions(resourceVariable));
|
||||
}
|
||||
|
||||
@Override public void visitTypeElement(PsiTypeElement type) {
|
||||
@Override
|
||||
public void visitTypeElement(final PsiTypeElement type) {
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(HighlightUtil.checkDiamondFeature(type));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(HighlightUtil.checkIllegalType(type));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkReferenceTypeUsedAsTypeArgument(type));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkWildcardUsage(type));
|
||||
|
||||
@@ -137,7 +137,7 @@ public class RedundantSuppressInspection extends GlobalInspectionTool{
|
||||
String idsString = SuppressManager.getInstance().getSuppressedInspectionIdsIn(owner);
|
||||
if (idsString != null && idsString.length() != 0) {
|
||||
List<String> ids = StringUtil.split(idsString, ",");
|
||||
if (IGNORE_ALL && ids.contains(SuppressionUtil.ALL)) return;
|
||||
if (IGNORE_ALL && (ids.contains(SuppressionUtil.ALL) || ids.contains(SuppressionUtil.ALL.toLowerCase()))) return;
|
||||
Collection<String> suppressed = suppressedScopes.get(owner);
|
||||
if (suppressed == null) {
|
||||
suppressed = ids;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2011 JetBrains s.r.o.
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -39,6 +39,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectManager;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
@@ -118,7 +119,7 @@ public class DataFlowInspection extends BaseLocalInspectionTool {
|
||||
binary.getLOperand().replace(qualifier);
|
||||
List<LocalQuickFix> fixes = new SmartList<LocalQuickFix>();
|
||||
|
||||
if (PsiUtil.getLanguageLevel(qualifier).hasAssertKeyword()) {
|
||||
if (PsiUtil.getLanguageLevel(qualifier).isAtLeast(LanguageLevel.JDK_1_4)) {
|
||||
fixes.add(new AddAssertStatementFix(binary));
|
||||
}
|
||||
SurroundWithIfFix ifFix = new SurroundWithIfFix(qualifier);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -34,9 +34,7 @@ public class JavaHighlightingLexer extends LayeredLexer {
|
||||
registerSelfStoppingLayer(new StringLiteralLexer('\'', JavaTokenType.STRING_LITERAL),
|
||||
new IElementType[]{JavaTokenType.CHARACTER_LITERAL}, IElementType.EMPTY_ARRAY);
|
||||
|
||||
|
||||
|
||||
LayeredLexer docLexer = new LayeredLexer(new JavaDocLexer(languageLevel.hasEnumKeywordAndAutoboxing()));
|
||||
LayeredLexer docLexer = new LayeredLexer(new JavaDocLexer(languageLevel.isAtLeast(LanguageLevel.JDK_1_5)));
|
||||
|
||||
HtmlHighlightingLexer lexer = new HtmlHighlightingLexer();
|
||||
lexer.setHasNoEmbeddments(true);
|
||||
|
||||
@@ -1,205 +0,0 @@
|
||||
/* It's an automatically generated code. Do not modify it. */
|
||||
package com.intellij.lexer;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.tree.JavaDocElementType;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
|
||||
@SuppressWarnings({"ALL"})
|
||||
%%
|
||||
|
||||
%{
|
||||
private boolean myAssertKeywordEnabled;
|
||||
private boolean myJdk15Enabled;
|
||||
|
||||
public _JavaLexer(boolean isAssertKeywordEnabled, boolean jdk15Enabled){
|
||||
this((java.io.Reader)null);
|
||||
myAssertKeywordEnabled = isAssertKeywordEnabled;
|
||||
myJdk15Enabled = jdk15Enabled;
|
||||
}
|
||||
|
||||
public void goTo(int offset) {
|
||||
zzCurrentPos = zzMarkedPos = zzStartRead = offset;
|
||||
zzPushbackPos = 0;
|
||||
zzAtEOF = offset < zzEndRead;
|
||||
}
|
||||
%}
|
||||
|
||||
%unicode
|
||||
%class _JavaLexer
|
||||
%implements FlexLexer
|
||||
%function advance
|
||||
%type IElementType
|
||||
%eof{ return;
|
||||
%eof}
|
||||
|
||||
WHITE_SPACE_CHAR=[\ \n\r\t\f]
|
||||
|
||||
IDENTIFIER=[:jletter:] [:jletterdigit:]*
|
||||
|
||||
C_STYLE_COMMENT=("/*"[^"*"]{COMMENT_TAIL})|"/*"
|
||||
DOC_COMMENT="/*""*"+("/"|([^"/""*"]{COMMENT_TAIL}))?
|
||||
COMMENT_TAIL=([^"*"]*("*"+[^"*""/"])?)*("*"+"/")?
|
||||
END_OF_LINE_COMMENT="/""/"[^\r\n]*
|
||||
|
||||
DIGIT=[0-9]
|
||||
DIGIT_OR_UNDERSCORE=[_0-9]
|
||||
OCTAL_DIGIT=[0-7]
|
||||
OCTAL_DIGIT_OR_UNDERSCORE=[_0-7]
|
||||
HEX_DIGIT=[0-9A-Fa-f]
|
||||
HEX_DIGIT_OR_UNDERSCORE=[_0-9A-Fa-f]
|
||||
BINARY_DIGIT=[01]
|
||||
BINARY_DIGIT_OR_UNDERSCORE=[_01]
|
||||
|
||||
DIGITS={DIGIT}|({DIGIT}{DIGIT_OR_UNDERSCORE}*{DIGIT})
|
||||
HEX_DIGITS={HEX_DIGIT}|({HEX_DIGIT}{HEX_DIGIT_OR_UNDERSCORE}*{HEX_DIGIT})
|
||||
BINARY_DIGITS={BINARY_DIGIT}|({BINARY_DIGIT}{BINARY_DIGIT_OR_UNDERSCORE}*{BINARY_DIGIT})
|
||||
|
||||
INTEGER_LITERAL={DECIMAL_INTEGER_LITERAL}|{OCTAL_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}|{BINARY_INTEGER_LITERAL}
|
||||
DECIMAL_INTEGER_LITERAL=0|([1-9]({DIGIT_OR_UNDERSCORE}*{DIGIT})?)
|
||||
OCTAL_INTEGER_LITERAL=0{OCTAL_DIGIT_OR_UNDERSCORE}*{OCTAL_DIGIT}
|
||||
HEX_INTEGER_LITERAL=0[Xx]{HEX_DIGITS}?
|
||||
BINARY_INTEGER_LITERAL=0[Bb]{BINARY_DIGITS}?
|
||||
LONG_LITERAL={INTEGER_LITERAL}[Ll]
|
||||
|
||||
FLOAT_LITERAL=({FLOATING_POINT_LITERAL1}|{FLOATING_POINT_LITERAL2}|{FLOATING_POINT_LITERAL3}|{FLOATING_POINT_LITERAL4})[Ff]
|
||||
DOUBLE_LITERAL=(({FLOATING_POINT_LITERAL1}|{FLOATING_POINT_LITERAL2}|{FLOATING_POINT_LITERAL3})[Dd]?)|({FLOATING_POINT_LITERAL4}[Dd])
|
||||
FLOATING_POINT_LITERAL1={DIGITS}"."{DIGITS}?{EXPONENT_PART}?
|
||||
FLOATING_POINT_LITERAL2="."{DIGITS}{EXPONENT_PART}?
|
||||
FLOATING_POINT_LITERAL3={DIGITS}{EXPONENT_PART}
|
||||
FLOATING_POINT_LITERAL4={DIGITS}
|
||||
EXPONENT_PART=[Ee]["+""-"]?{DIGITS}?
|
||||
|
||||
HEX_FLOAT_LITERAL={HEX_SIGNIFICAND}{BINARY_EXPONENT}[Ff]
|
||||
HEX_DOUBLE_LITERAL={HEX_SIGNIFICAND}{BINARY_EXPONENT}[Dd]?
|
||||
BINARY_EXPONENT=[Pp][+-]?{DIGITS}
|
||||
HEX_SIGNIFICAND={HEX_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}.|0[Xx]{HEX_DIGITS}?.{HEX_DIGITS}
|
||||
|
||||
CHARACTER_LITERAL="'"([^\\\'\r\n]|{ESCAPE_SEQUENCE})*("'"|\\)?
|
||||
STRING_LITERAL=\"([^\\\"\r\n]|{ESCAPE_SEQUENCE})*(\"|\\)?
|
||||
ESCAPE_SEQUENCE=\\[^\r\n]
|
||||
|
||||
%%
|
||||
|
||||
<YYINITIAL> {WHITE_SPACE_CHAR}+ { return JavaTokenType.WHITE_SPACE; }
|
||||
|
||||
<YYINITIAL> {C_STYLE_COMMENT} { return JavaTokenType.C_STYLE_COMMENT; }
|
||||
<YYINITIAL> {END_OF_LINE_COMMENT} { return JavaTokenType.END_OF_LINE_COMMENT; }
|
||||
<YYINITIAL> {DOC_COMMENT} { return JavaDocElementType.DOC_COMMENT; }
|
||||
|
||||
<YYINITIAL> {LONG_LITERAL} { return JavaTokenType.LONG_LITERAL; }
|
||||
<YYINITIAL> {INTEGER_LITERAL} { return JavaTokenType.INTEGER_LITERAL; }
|
||||
<YYINITIAL> {FLOAT_LITERAL} { return JavaTokenType.FLOAT_LITERAL; }
|
||||
<YYINITIAL> {HEX_FLOAT_LITERAL} { return JavaTokenType.FLOAT_LITERAL; }
|
||||
<YYINITIAL> {DOUBLE_LITERAL} { return JavaTokenType.DOUBLE_LITERAL; }
|
||||
<YYINITIAL> {HEX_DOUBLE_LITERAL} { return JavaTokenType.DOUBLE_LITERAL; }
|
||||
|
||||
<YYINITIAL> {CHARACTER_LITERAL} { return JavaTokenType.CHARACTER_LITERAL; }
|
||||
<YYINITIAL> {STRING_LITERAL} { return JavaTokenType.STRING_LITERAL; }
|
||||
|
||||
<YYINITIAL> "true" { return JavaTokenType.TRUE_KEYWORD; }
|
||||
<YYINITIAL> "false" { return JavaTokenType.FALSE_KEYWORD; }
|
||||
<YYINITIAL> "null" { return JavaTokenType.NULL_KEYWORD; }
|
||||
|
||||
<YYINITIAL> "abstract" { return JavaTokenType.ABSTRACT_KEYWORD; }
|
||||
<YYINITIAL> "assert" { return myAssertKeywordEnabled ? JavaTokenType.ASSERT_KEYWORD : JavaTokenType.IDENTIFIER; }
|
||||
<YYINITIAL> "boolean" { return JavaTokenType.BOOLEAN_KEYWORD; }
|
||||
<YYINITIAL> "break" { return JavaTokenType.BREAK_KEYWORD; }
|
||||
<YYINITIAL> "byte" { return JavaTokenType.BYTE_KEYWORD; }
|
||||
<YYINITIAL> "case" { return JavaTokenType.CASE_KEYWORD; }
|
||||
<YYINITIAL> "catch" { return JavaTokenType.CATCH_KEYWORD; }
|
||||
<YYINITIAL> "char" { return JavaTokenType.CHAR_KEYWORD; }
|
||||
<YYINITIAL> "class" { return JavaTokenType.CLASS_KEYWORD; }
|
||||
<YYINITIAL> "const" { return JavaTokenType.CONST_KEYWORD; }
|
||||
<YYINITIAL> "continue" { return JavaTokenType.CONTINUE_KEYWORD; }
|
||||
<YYINITIAL> "default" { return JavaTokenType.DEFAULT_KEYWORD; }
|
||||
<YYINITIAL> "do" { return JavaTokenType.DO_KEYWORD; }
|
||||
<YYINITIAL> "double" { return JavaTokenType.DOUBLE_KEYWORD; }
|
||||
<YYINITIAL> "else" { return JavaTokenType.ELSE_KEYWORD; }
|
||||
<YYINITIAL> "enum" { return myJdk15Enabled ? JavaTokenType.ENUM_KEYWORD : JavaTokenType.IDENTIFIER; }
|
||||
<YYINITIAL> "extends" { return JavaTokenType.EXTENDS_KEYWORD; }
|
||||
<YYINITIAL> "final" { return JavaTokenType.FINAL_KEYWORD; }
|
||||
<YYINITIAL> "finally" { return JavaTokenType.FINALLY_KEYWORD; }
|
||||
<YYINITIAL> "float" { return JavaTokenType.FLOAT_KEYWORD; }
|
||||
<YYINITIAL> "for" { return JavaTokenType.FOR_KEYWORD; }
|
||||
<YYINITIAL> "goto" { return JavaTokenType.GOTO_KEYWORD; }
|
||||
<YYINITIAL> "if" { return JavaTokenType.IF_KEYWORD; }
|
||||
<YYINITIAL> "implements" { return JavaTokenType.IMPLEMENTS_KEYWORD; }
|
||||
<YYINITIAL> "import" { return JavaTokenType.IMPORT_KEYWORD; }
|
||||
<YYINITIAL> "instanceof" { return JavaTokenType.INSTANCEOF_KEYWORD; }
|
||||
<YYINITIAL> "int" { return JavaTokenType.INT_KEYWORD; }
|
||||
<YYINITIAL> "interface" { return JavaTokenType.INTERFACE_KEYWORD; }
|
||||
<YYINITIAL> "long" { return JavaTokenType.LONG_KEYWORD; }
|
||||
<YYINITIAL> "native" { return JavaTokenType.NATIVE_KEYWORD; }
|
||||
<YYINITIAL> "new" { return JavaTokenType.NEW_KEYWORD; }
|
||||
<YYINITIAL> "package" { return JavaTokenType.PACKAGE_KEYWORD; }
|
||||
<YYINITIAL> "private" { return JavaTokenType.PRIVATE_KEYWORD; }
|
||||
<YYINITIAL> "public" { return JavaTokenType.PUBLIC_KEYWORD; }
|
||||
<YYINITIAL> "short" { return JavaTokenType.SHORT_KEYWORD; }
|
||||
<YYINITIAL> "super" { return JavaTokenType.SUPER_KEYWORD; }
|
||||
<YYINITIAL> "switch" { return JavaTokenType.SWITCH_KEYWORD; }
|
||||
<YYINITIAL> "synchronized" { return JavaTokenType.SYNCHRONIZED_KEYWORD; }
|
||||
<YYINITIAL> "this" { return JavaTokenType.THIS_KEYWORD; }
|
||||
<YYINITIAL> "throw" { return JavaTokenType.THROW_KEYWORD; }
|
||||
<YYINITIAL> "protected" { return JavaTokenType.PROTECTED_KEYWORD; }
|
||||
<YYINITIAL> "transient" { return JavaTokenType.TRANSIENT_KEYWORD; }
|
||||
<YYINITIAL> "return" { return JavaTokenType.RETURN_KEYWORD; }
|
||||
<YYINITIAL> "void" { return JavaTokenType.VOID_KEYWORD; }
|
||||
<YYINITIAL> "static" { return JavaTokenType.STATIC_KEYWORD; }
|
||||
<YYINITIAL> "strictfp" { return JavaTokenType.STRICTFP_KEYWORD; }
|
||||
<YYINITIAL> "while" { return JavaTokenType.WHILE_KEYWORD; }
|
||||
<YYINITIAL> "try" { return JavaTokenType.TRY_KEYWORD; }
|
||||
<YYINITIAL> "volatile" { return JavaTokenType.VOLATILE_KEYWORD; }
|
||||
<YYINITIAL> "throws" { return JavaTokenType.THROWS_KEYWORD; }
|
||||
|
||||
<YYINITIAL> {IDENTIFIER} { return JavaTokenType.IDENTIFIER; }
|
||||
|
||||
<YYINITIAL> "==" { return JavaTokenType.EQEQ; }
|
||||
<YYINITIAL> "!=" { return JavaTokenType.NE; }
|
||||
<YYINITIAL> "||" { return JavaTokenType.OROR; }
|
||||
<YYINITIAL> "++" { return JavaTokenType.PLUSPLUS; }
|
||||
<YYINITIAL> "--" { return JavaTokenType.MINUSMINUS; }
|
||||
|
||||
<YYINITIAL> "<" { return JavaTokenType.LT; }
|
||||
<YYINITIAL> "<=" { return JavaTokenType.LE; }
|
||||
<YYINITIAL> "<<=" { return JavaTokenType.LTLTEQ; }
|
||||
<YYINITIAL> "<<" { return JavaTokenType.LTLT; }
|
||||
<YYINITIAL> ">" { return JavaTokenType.GT; }
|
||||
<YYINITIAL> "&" { return JavaTokenType.AND; }
|
||||
<YYINITIAL> "&&" { return JavaTokenType.ANDAND; }
|
||||
|
||||
<YYINITIAL> "+=" { return JavaTokenType.PLUSEQ; }
|
||||
<YYINITIAL> "-=" { return JavaTokenType.MINUSEQ; }
|
||||
<YYINITIAL> "*=" { return JavaTokenType.ASTERISKEQ; }
|
||||
<YYINITIAL> "/=" { return JavaTokenType.DIVEQ; }
|
||||
<YYINITIAL> "&=" { return JavaTokenType.ANDEQ; }
|
||||
<YYINITIAL> "|=" { return JavaTokenType.OREQ; }
|
||||
<YYINITIAL> "^=" { return JavaTokenType.XOREQ; }
|
||||
<YYINITIAL> "%=" { return JavaTokenType.PERCEQ; }
|
||||
|
||||
<YYINITIAL> "(" { return JavaTokenType.LPARENTH; }
|
||||
<YYINITIAL> ")" { return JavaTokenType.RPARENTH; }
|
||||
<YYINITIAL> "{" { return JavaTokenType.LBRACE; }
|
||||
<YYINITIAL> "}" { return JavaTokenType.RBRACE; }
|
||||
<YYINITIAL> "[" { return JavaTokenType.LBRACKET; }
|
||||
<YYINITIAL> "]" { return JavaTokenType.RBRACKET; }
|
||||
<YYINITIAL> ";" { return JavaTokenType.SEMICOLON; }
|
||||
<YYINITIAL> "," { return JavaTokenType.COMMA; }
|
||||
<YYINITIAL> "..." { return JavaTokenType.ELLIPSIS; }
|
||||
<YYINITIAL> "." { return JavaTokenType.DOT; }
|
||||
|
||||
<YYINITIAL> "=" { return JavaTokenType.EQ; }
|
||||
<YYINITIAL> "!" { return JavaTokenType.EXCL; }
|
||||
<YYINITIAL> "~" { return JavaTokenType.TILDE; }
|
||||
<YYINITIAL> "?" { return JavaTokenType.QUEST; }
|
||||
<YYINITIAL> ":" { return JavaTokenType.COLON; }
|
||||
<YYINITIAL> "+" { return JavaTokenType.PLUS; }
|
||||
<YYINITIAL> "-" { return JavaTokenType.MINUS; }
|
||||
<YYINITIAL> "*" { return JavaTokenType.ASTERISK; }
|
||||
<YYINITIAL> "/" { return JavaTokenType.DIV; }
|
||||
<YYINITIAL> "|" { return JavaTokenType.OR; }
|
||||
<YYINITIAL> "^" { return JavaTokenType.XOR; }
|
||||
<YYINITIAL> "%" { return JavaTokenType.PERC; }
|
||||
<YYINITIAL> "@" { return JavaTokenType.AT; }
|
||||
|
||||
<YYINITIAL> . { return JavaTokenType.BAD_CHARACTER; }
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -53,7 +53,7 @@ public class ValueDocTagInfo implements JavadocTagInfo {
|
||||
public String checkTagValue(PsiDocTagValue value) {
|
||||
boolean hasReference = (value != null && value.getFirstChild() != null);
|
||||
if (hasReference) {
|
||||
if (!PsiUtil.getLanguageLevel(value).hasEnumKeywordAndAutoboxing()) {
|
||||
if (!PsiUtil.isLanguageLevel5OrHigher(value)) {
|
||||
return JavaErrorMessages.message("javadoc.value.tag.jdk15.required");
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2011 JetBrains s.r.o.
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -82,7 +82,7 @@ public class JavaClassReferenceSet {
|
||||
|
||||
if (ch == LT || ch == COMMA) {
|
||||
if (!allowGenericsCalculated) {
|
||||
allowGenerics = !isStaticImport && PsiUtil.getLanguageLevel(element).hasEnumKeywordAndAutoboxing();
|
||||
allowGenerics = !isStaticImport && PsiUtil.isLanguageLevel5OrHigher(element);
|
||||
allowGenericsCalculated = true;
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -30,6 +30,7 @@ import com.intellij.openapi.roots.LanguageLevelProjectExtension;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.SuggestedNameInfo;
|
||||
@@ -265,7 +266,7 @@ class IntroduceConstantDialog extends DialogWrapper {
|
||||
|
||||
final PsiManager psiManager = PsiManager.getInstance(myProject);
|
||||
if ((myTypeSelectorManager.isSuggestedType("java.lang.String") || (myLocalVariable != null && AnnotationUtil.isAnnotated(myLocalVariable, AnnotationUtil.NON_NLS, false)))&&
|
||||
LanguageLevelProjectExtension.getInstance(psiManager.getProject()).getLanguageLevel().hasEnumKeywordAndAutoboxing() &&
|
||||
LanguageLevelProjectExtension.getInstance(psiManager.getProject()).getLanguageLevel().isAtLeast(LanguageLevel.JDK_1_5) &&
|
||||
JavaPsiFacade.getInstance(psiManager.getProject()).findClass(AnnotationUtil.NON_NLS, myParentClass.getResolveScope()) != null) {
|
||||
final PropertiesComponent component = PropertiesComponent.getInstance(myProject);
|
||||
myCbNonNls.setSelected(component.isTrueValue(NONNLS_SELECTED_PROPERTY));
|
||||
|
||||
+10
-12
@@ -80,20 +80,10 @@ public class JavaNameSuggestionProvider implements NameSuggestionProvider {
|
||||
}
|
||||
}
|
||||
final String[] strings = info != null ? info.names : ArrayUtil.EMPTY_STRING_ARRAY;
|
||||
ArrayList<String> list = new ArrayList<String>(Arrays.asList(strings));
|
||||
final ArrayList<String> list = new ArrayList<String>(Arrays.asList(strings));
|
||||
final String[] properlyCased = suggestProperlyCasedName(element);
|
||||
if (!list.contains(initialName)) {
|
||||
list.add(0, initialName);
|
||||
}
|
||||
else {
|
||||
int i = list.indexOf(initialName);
|
||||
list.remove(i);
|
||||
list.add(0, initialName);
|
||||
}
|
||||
if (properlyCased != null) {
|
||||
for (String properlyCasedSuggestion : properlyCased) {
|
||||
list.add(1, properlyCasedSuggestion);
|
||||
}
|
||||
Collections.addAll(list, properlyCased);
|
||||
}
|
||||
if (parameterName != null && !list.contains(parameterName)) {
|
||||
list.add(parameterName);
|
||||
@@ -101,6 +91,14 @@ public class JavaNameSuggestionProvider implements NameSuggestionProvider {
|
||||
if (superMethodName != null && !list.contains(superMethodName)) {
|
||||
list.add(0, superMethodName);
|
||||
}
|
||||
if (!list.contains(initialName)) {
|
||||
list.add(initialName);
|
||||
}
|
||||
else {
|
||||
int i = list.indexOf(initialName);
|
||||
list.remove(i);
|
||||
list.add(initialName);
|
||||
}
|
||||
ContainerUtil.removeDuplicates(list);
|
||||
result.addAll(list);
|
||||
return info;
|
||||
|
||||
Reference in New Issue
Block a user