mirror of
https://github.com/jlengrand/error-prone-support.git
synced 2026-03-10 08:11:25 +00:00
Require JDK 17 rather than JDK 11 (#603)
By raising this baseline the project can now use Java 17 language features such as text blocks, switch expressions and `instanceof` pattern matching. The code has been updated to make use of these constructs. Note that the project can still be used by builds that target an older version of Java, as long as those builds are executed using JDK 17+.
This commit is contained in:
committed by
GitHub
parent
1f50772433
commit
433b8b90c0
@@ -50,8 +50,9 @@ import tech.picnic.errorprone.utils.ThirdPartyLibrary;
|
||||
@AutoService(BugChecker.class)
|
||||
@BugPattern(
|
||||
summary =
|
||||
"Prefer `Class#getCanonicalName()` over an equivalent string literal if and only if the "
|
||||
+ "type will be on the runtime classpath",
|
||||
"""
|
||||
Prefer `Class#getCanonicalName()` over an equivalent string literal if and only if the \
|
||||
type will be on the runtime classpath""",
|
||||
link = BUG_PATTERNS_BASE_URL + "ErrorProneRuntimeClasspath",
|
||||
linkType = CUSTOM,
|
||||
severity = SUGGESTION,
|
||||
|
||||
@@ -72,8 +72,9 @@ import org.jspecify.annotations.Nullable;
|
||||
@AutoService(BugChecker.class)
|
||||
@BugPattern(
|
||||
summary =
|
||||
"The set of unmigrated methods listed by the `@TypeMigration` annotation must be minimal "
|
||||
+ "yet exhaustive",
|
||||
"""
|
||||
The set of unmigrated methods listed by the `@TypeMigration` annotation must be minimal \
|
||||
yet exhaustive""",
|
||||
link = BUG_PATTERNS_BASE_URL + "ExhaustiveRefasterTypeMigration",
|
||||
linkType = CUSTOM,
|
||||
severity = WARNING,
|
||||
|
||||
@@ -42,21 +42,18 @@ public final class RefasterAnyOfUsage extends BugChecker implements MethodInvoca
|
||||
|
||||
@Override
|
||||
public Description matchMethodInvocation(MethodInvocationTree tree, VisitorState state) {
|
||||
if (REFASTER_ANY_OF.matches(tree, state)) {
|
||||
switch (tree.getArguments().size()) {
|
||||
case 0:
|
||||
// We can't safely fix this case; dropping the expression may produce non-compilable code.
|
||||
return describeMatch(tree);
|
||||
case 1:
|
||||
return describeMatch(
|
||||
tree,
|
||||
SuggestedFix.replace(
|
||||
tree, SourceCode.treeToString(tree.getArguments().get(0), state)));
|
||||
default:
|
||||
/* Handled below. */
|
||||
}
|
||||
int argumentCount = tree.getArguments().size();
|
||||
if (argumentCount > 1 || !REFASTER_ANY_OF.matches(tree, state)) {
|
||||
return Description.NO_MATCH;
|
||||
}
|
||||
|
||||
return Description.NO_MATCH;
|
||||
if (argumentCount == 0) {
|
||||
/* We can't safely fix this case; dropping the expression may produce non-compilable code. */
|
||||
return describeMatch(tree);
|
||||
}
|
||||
|
||||
return describeMatch(
|
||||
tree,
|
||||
SuggestedFix.replace(tree, SourceCode.treeToString(tree.getArguments().get(0), state)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,16 +45,14 @@ public final class UnqualifiedSuggestedFixImport extends BugChecker
|
||||
return Description.NO_MATCH;
|
||||
}
|
||||
|
||||
switch (ASTHelpers.getSymbol(tree).getSimpleName().toString()) {
|
||||
case "addImport":
|
||||
return createDescription(
|
||||
tree, "SuggestedFix.Builder#addImport", "SuggestedFixes#qualifyType");
|
||||
case "addStaticImport":
|
||||
return createDescription(
|
||||
tree, "SuggestedFix.Builder#addStaticImport", "SuggestedFixes#qualifyStaticImport");
|
||||
default:
|
||||
return Description.NO_MATCH;
|
||||
}
|
||||
return switch (ASTHelpers.getSymbol(tree).getSimpleName().toString()) {
|
||||
case "addImport" ->
|
||||
createDescription(tree, "SuggestedFix.Builder#addImport", "SuggestedFixes#qualifyType");
|
||||
case "addStaticImport" ->
|
||||
createDescription(
|
||||
tree, "SuggestedFix.Builder#addStaticImport", "SuggestedFixes#qualifyStaticImport");
|
||||
default -> Description.NO_MATCH;
|
||||
};
|
||||
}
|
||||
|
||||
private Description createDescription(
|
||||
|
||||
Reference in New Issue
Block a user