mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 11:50:54 +07:00
[java-inspections] IDEA-322234 Formatter conversion error misattributed by inspection
GitOrigin-RevId: 7724093c7ffec568faab70362677ecbf1afa7c7e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f47fa86364
commit
d795671583
@@ -532,22 +532,24 @@ public final class FormatDecode {
|
||||
private final Set<Validator> validators = new HashSet<>(3);
|
||||
|
||||
@Nullable
|
||||
private String lastFailedSpecifier = null;
|
||||
@Override
|
||||
public String getInvalidSpecifier(PsiType type) {
|
||||
for (Validator validator : validators) {
|
||||
if (!validator.valid(type)) {
|
||||
return validator.getInvalidSpecifier(type);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
MultiValidator(String specifier) {
|
||||
super(specifier);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSpecifier() {
|
||||
return lastFailedSpecifier == null ? super.getSpecifier() : lastFailedSpecifier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean valid(PsiType type) {
|
||||
for (Validator validator : validators) {
|
||||
if (!validator.valid(type)) {
|
||||
lastFailedSpecifier = validator.getSpecifier();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -565,6 +567,13 @@ public final class FormatDecode {
|
||||
|
||||
public abstract static class Validator {
|
||||
|
||||
@Nullable
|
||||
public String getInvalidSpecifier(PsiType type){
|
||||
if (valid(type)) {
|
||||
return null;
|
||||
}
|
||||
return getSpecifier();
|
||||
}
|
||||
private final String mySpecifier;
|
||||
|
||||
Validator(String specifier) {
|
||||
|
||||
@@ -95,8 +95,9 @@ public class MalformedFormatStringInspection extends BaseInspection {
|
||||
}
|
||||
final PsiType argumentType = (PsiType)infos[2];
|
||||
final FormatDecode.Validator validator = (FormatDecode.Validator)infos[3];
|
||||
String specifier = validator.getInvalidSpecifier(argumentType);
|
||||
return InspectionGadgetsBundle.message("malformed.format.string.problem.descriptor.arguments.do.not.match.type",
|
||||
argumentType.getPresentableText(), validator.getSpecifier());
|
||||
argumentType.getPresentableText(), specifier == null ? validator.getSpecifier() : specifier);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user