Skip to content

Commit 643fe87

Browse files
cgdeckerError Prone Team
authored and
Error Prone Team
committed
Add ResultUsePolicy.UNSPECIFIED.
For now this doesn't change anything for checking since the check just cares whether the policy is `EXPECTED` or not. PiperOrigin-RevId: 480151888
1 parent 47f34a9 commit 643fe87

File tree

4 files changed

+14
-8
lines changed

4 files changed

+14
-8
lines changed

core/src/main/java/com/google/errorprone/bugpatterns/CheckReturnValue.java

+9-5
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import static com.google.errorprone.bugpatterns.checkreturnvalue.ProtoRules.protoBuilders;
3030
import static com.google.errorprone.bugpatterns.checkreturnvalue.ResultUsePolicy.EXPECTED;
3131
import static com.google.errorprone.bugpatterns.checkreturnvalue.ResultUsePolicy.OPTIONAL;
32+
import static com.google.errorprone.bugpatterns.checkreturnvalue.ResultUsePolicy.UNSPECIFIED;
3233
import static com.google.errorprone.bugpatterns.checkreturnvalue.Rules.globalDefault;
3334
import static com.google.errorprone.bugpatterns.checkreturnvalue.Rules.mapAnnotationSimpleName;
3435
import static com.google.errorprone.fixes.SuggestedFix.emptyFix;
@@ -149,11 +150,7 @@ private static Optional<ResultUsePolicy> defaultPolicy(ErrorProneFlags flags, St
149150
*/
150151
@Override
151152
public Matcher<ExpressionTree> specializedMatcher() {
152-
return (tree, state) ->
153-
methodToInspect(tree)
154-
.map(method -> evaluator.evaluate(method, state))
155-
.orElse(OPTIONAL)
156-
.equals(EXPECTED);
153+
return (tree, state) -> getMethodPolicy(tree, state).equals(EXPECTED);
157154
}
158155

159156
private static Optional<MethodSymbol> methodToInspect(ExpressionTree tree) {
@@ -190,6 +187,13 @@ private static Optional<MethodSymbol> methodSymbol(ExpressionTree tree) {
190187
return sym instanceof MethodSymbol ? Optional.of((MethodSymbol) sym) : Optional.empty();
191188
}
192189

190+
/** Returns the {@link ResultUsePolicy} for the method used in the given {@code expression}. */
191+
public ResultUsePolicy getMethodPolicy(ExpressionTree expression, VisitorState state) {
192+
return methodToInspect(expression)
193+
.map(method -> evaluator.evaluate(method, state))
194+
.orElse(UNSPECIFIED);
195+
}
196+
193197
@Override
194198
public boolean isCovered(ExpressionTree tree, VisitorState state) {
195199
return methodToInspect(tree).stream()

core/src/main/java/com/google/errorprone/bugpatterns/checkreturnvalue/ExternalCanIgnoreReturnValue.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public String id() {
8080
@Override
8181
public Optional<ResultUsePolicy> evaluateMethod(MethodSymbol method, VisitorState state) {
8282
return EXTERNAL_RULE_EVALUATOR.get(state).methodMatches(method, state)
83-
? Optional.of(ResultUsePolicy.OPTIONAL)
83+
? Optional.of(ResultUsePolicy.UNSPECIFIED)
8484
: Optional.empty();
8585
}
8686

core/src/main/java/com/google/errorprone/bugpatterns/checkreturnvalue/ResultUsePolicy.java

+2
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,6 @@ public enum ResultUsePolicy {
2727
EXPECTED,
2828
/** Use of the result is optional. */
2929
OPTIONAL,
30+
/** It is unspecified whether the result should be used or not. */
31+
UNSPECIFIED,
3032
}

core/src/main/java/com/google/errorprone/bugpatterns/checkreturnvalue/ResultUsePolicyEvaluator.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package com.google.errorprone.bugpatterns.checkreturnvalue;
1818

1919
import static com.google.common.collect.ImmutableListMultimap.toImmutableListMultimap;
20-
import static com.google.errorprone.bugpatterns.checkreturnvalue.ResultUsePolicy.OPTIONAL;
20+
import static com.google.errorprone.bugpatterns.checkreturnvalue.ResultUsePolicy.UNSPECIFIED;
2121
import static com.google.errorprone.bugpatterns.checkreturnvalue.ResultUseRule.RuleScope.ENCLOSING_ELEMENTS;
2222
import static com.google.errorprone.bugpatterns.checkreturnvalue.ResultUseRule.RuleScope.GLOBAL;
2323
import static com.google.errorprone.bugpatterns.checkreturnvalue.ResultUseRule.RuleScope.METHOD;
@@ -82,7 +82,7 @@ private ResultUsePolicyEvaluator(Builder builder) {
8282
* apply to it.
8383
*/
8484
public ResultUsePolicy evaluate(MethodSymbol method, VisitorState state) {
85-
return policies(method, state).findFirst().orElse(OPTIONAL);
85+
return policies(method, state).findFirst().orElse(UNSPECIFIED);
8686
}
8787

8888
private Stream<ResultUsePolicy> policies(MethodSymbol method, VisitorState state) {

0 commit comments

Comments
 (0)