Cleanup (warnings; formatting)

This commit is contained in:
Roman Shevchenko
2017-02-16 18:16:37 +01:00
parent 4de7936f62
commit 9f94159536
2 changed files with 37 additions and 41 deletions
@@ -78,6 +78,8 @@ import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static com.intellij.util.ObjectUtils.notNull;
/**
* @author cdr
* @since Jul 30, 2002
@@ -521,7 +523,8 @@ public class HighlightUtil extends HighlightUtilBase {
if (initializer == null || initializer instanceof PsiArrayInitializerExpression) return null;
PsiType lType = variable.getType();
PsiType rType = initializer.getType();
int start = variable.getTypeElement().getTextRange().getStartOffset();
PsiTypeElement typeElement = variable.getTypeElement();
int start = typeElement != null ? typeElement.getTextRange().getStartOffset() : variable.getTextRange().getStartOffset();
int end = variable.getTextRange().getEndOffset();
HighlightInfo highlightInfo = checkAssignability(lType, rType, initializer, new TextRange(start, end), 0);
if (highlightInfo != null) {
@@ -1308,7 +1311,7 @@ public class HighlightUtil extends HighlightUtilBase {
return errorResult;
}
@Nullable
@NotNull
private static List<HighlightInfo> checkMultiCatchParameter(@NotNull final PsiParameter parameter,
@NotNull final Collection<PsiClassType> thrownTypes) {
final List<PsiTypeElement> typeElements = PsiUtil.getParameterTypeElements(parameter);
@@ -1689,7 +1692,7 @@ public class HighlightUtil extends HighlightUtilBase {
@NotNull
static String buildProblemWithAccessDescription(@NotNull final PsiElement reference, @NotNull final JavaResolveResult result) {
return buildProblemWithAccessDescription(reference, result, result.getElement());
return buildProblemWithAccessDescription(reference, result, notNull(result.getElement()));
}
@NotNull
@@ -1983,9 +1986,9 @@ public class HighlightUtil extends HighlightUtilBase {
*/
@Nullable
static HighlightInfo checkIllegalForwardReferenceToField(@NotNull PsiReferenceExpression expression, @NotNull PsiField referencedField) {
final Boolean isIllegalForwardReference = isIllegalForwardReferenceToField(expression, referencedField, false);
Boolean isIllegalForwardReference = isIllegalForwardReferenceToField(expression, referencedField, false);
if (isIllegalForwardReference == null) return null;
String description = isIllegalForwardReference ? JavaErrorMessages.message("illegal.forward.reference") : JavaErrorMessages.message("illegal.self.reference");
String description = JavaErrorMessages.message(isIllegalForwardReference ? "illegal.forward.reference" : "illegal.self.reference");
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(expression).descriptionAndTooltip(description).create();
}
@@ -2539,12 +2542,11 @@ public class HighlightUtil extends HighlightUtilBase {
final PsiExpression thenExpression = conditionalExpression.getThenExpression();
assert thenExpression != null;
PsiType thenType = thenExpression.getType();
PsiType elseType = type;
if (thenType == null || elseType == null) return null;
if (thenType == null || type == null) return null;
if (conditionalExpression.getType() == null) {
// cannot derive type of conditional expression
// elseType will never be castable to thenType, so no quick fix here
return createIncompatibleTypeHighlightInfo(thenType, elseType, expression.getTextRange(), 0);
// elseType will never be cast-able to thenType, so no quick fix here
return createIncompatibleTypeHighlightInfo(thenType, type, expression.getTextRange(), 0);
}
return null;
}
@@ -2693,14 +2695,13 @@ public class HighlightUtil extends HighlightUtilBase {
@Nullable
static HighlightInfo checkReference(@NotNull final PsiJavaCodeReferenceElement ref,
@NotNull final JavaResolveResult result,
static HighlightInfo checkReference(@NotNull PsiJavaCodeReferenceElement ref,
@NotNull JavaResolveResult result,
@NotNull PsiFile containingFile,
@NotNull LanguageLevel languageLevel) {
final PsiElement refName = ref.getReferenceNameElement();
PsiElement refName = ref.getReferenceNameElement();
if (!(refName instanceof PsiIdentifier) && !(refName instanceof PsiKeyword)) return null;
final PsiElement resolved = result.getElement();
PsiElement resolved = result.getElement();
HighlightInfo highlightInfo = checkMemberReferencedBeforeConstructorCalled(ref, resolved, containingFile);
if (highlightInfo != null) return highlightInfo;
@@ -2710,46 +2711,39 @@ public class HighlightUtil extends HighlightUtilBase {
if (refParent instanceof PsiReferenceExpression && (granny = refParent.getParent()) instanceof PsiMethodCallExpression) {
PsiReferenceExpression referenceToMethod = ((PsiMethodCallExpression)granny).getMethodExpression();
PsiExpression qualifierExpression = referenceToMethod.getQualifierExpression();
if (qualifierExpression == ref) {
@SuppressWarnings("UnnecessaryLocalVariable") PsiElement qualifier = resolved;
if (qualifier != null && !(qualifier instanceof PsiClass) && !(qualifier instanceof PsiVariable)) {
return HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(qualifierExpression).descriptionAndTooltip(
"Qualifier must be an expression").create();
}
if (qualifierExpression == ref && resolved != null && !(resolved instanceof PsiClass) && !(resolved instanceof PsiVariable)) {
String message = JavaErrorMessages.message("qualifier.must.be.expression");
return HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(qualifierExpression).descriptionAndTooltip(message).create();
}
}
else if (refParent instanceof PsiMethodCallExpression) {
return null; // methods checked elsewhere
}
if (resolved == null) {
// do not highlight unknown packages - javac does not care about illegal package names
if (isInsidePackageStatement(refName)) return null;
if (result.isPackagePrefixPackageReference()) return null;
if (isInsidePackageStatement(refName) || result.isPackagePrefixPackageReference() || PsiUtil.isInsideJavadocComment(ref)) return null;
JavaResolveResult[] results = ref.multiResolve(true);
String description;
if (results.length > 1) {
String t1 = format(results[0].getElement());
String t2 = format(results[1].getElement());
String t1 = format(notNull(results[0].getElement()));
String t2 = format(notNull(results[1].getElement()));
description = JavaErrorMessages.message("ambiguous.reference", refName.getText(), t1, t2);
}
else {
description = JavaErrorMessages.message("cannot.resolve.symbol", refName.getText());
}
HighlightInfoType type = HighlightInfoType.WRONG_REF;
if (PsiUtil.isInsideJavadocComment(ref)) return null;
HighlightInfo info = HighlightInfo.newHighlightInfo(type).range(refName).descriptionAndTooltip(description).create();
HighlightInfo info = HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(refName).descriptionAndTooltip(description).create();
UnresolvedReferenceQuickFixProvider.registerReferenceFixes(ref, new QuickFixActionRegistrarImpl(info));
return info;
}
if (!result.isValidResult() && !PsiUtil.isInsideJavadocComment(ref)) {
if (!result.isAccessible()) {
String description = buildProblemWithAccessDescription(ref, result, resolved);
HighlightInfo info =
HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(refName).descriptionAndTooltip(description).create();
String message = buildProblemWithAccessDescription(ref, result, resolved);
HighlightInfo info = HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(refName).descriptionAndTooltip(message).create();
if (result.isStaticsScopeCorrect()) {
registerAccessQuickFixAction((PsiMember)resolved, ref, info, result.getCurrentFileResolveScope());
if (ref instanceof PsiReferenceExpression) {
@@ -2771,18 +2765,19 @@ public class HighlightUtil extends HighlightUtilBase {
return info;
}
}
if ((resolved instanceof PsiLocalVariable || resolved instanceof PsiParameter) && !(resolved instanceof ImplicitVariable)) {
highlightInfo = HighlightControlFlowUtil.checkVariableMustBeFinal((PsiVariable)resolved, ref, languageLevel);
return HighlightControlFlowUtil.checkVariableMustBeFinal((PsiVariable)resolved, ref, languageLevel);
}
else if (resolved instanceof PsiClass) {
if (((PsiClass)resolved).getContainingClass() == null &&
PsiTreeUtil.getParentOfType(ref, PsiImportStatementBase.class) != null &&
PsiUtil.isFromDefaultPackage((PsiClass)resolved)) {
String description = JavaErrorMessages.message("cannot.resolve.symbol", refName.getText());
return HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(refName).descriptionAndTooltip(description).create();
}
else if (resolved instanceof PsiClass &&
((PsiClass)resolved).getContainingClass() == null &&
PsiTreeUtil.getParentOfType(ref, PsiImportStatementBase.class) != null &&
PsiUtil.isFromDefaultPackage((PsiClass)resolved)) {
String description = JavaErrorMessages.message("cannot.resolve.symbol", refName.getText());
return HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(refName).descriptionAndTooltip(description).create();
}
return highlightInfo;
return null;
}
@NotNull