From b9b492f554e1e12da2d3777a8e4e76095fda63bf Mon Sep 17 00:00:00 2001 From: dfielder Date: Fri, 30 Jun 2017 13:55:18 -0700 Subject: [PATCH] Fix NPE in AbstractReturnValueIgnored for lambdas. Fixes #657 RELNOTES: Fixes a null pointer exception in AbstractReturnValueIgnored on expression-type lambdas. MOE_MIGRATED_REVID=160684735 --- .../com/google/errorprone/matchers/IsLastStatementInBlock.java | 2 +- .../bugpatterns/testdata/ReturnValueIgnoredPositiveCases.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/check_api/src/main/java/com/google/errorprone/matchers/IsLastStatementInBlock.java b/check_api/src/main/java/com/google/errorprone/matchers/IsLastStatementInBlock.java index 35745a76fe0..c7377270891 100644 --- a/check_api/src/main/java/com/google/errorprone/matchers/IsLastStatementInBlock.java +++ b/check_api/src/main/java/com/google/errorprone/matchers/IsLastStatementInBlock.java @@ -28,6 +28,6 @@ public class IsLastStatementInBlock implements Matcher< public boolean matches(T statement, VisitorState state) { BlockTree block = state.findEnclosing(BlockTree.class); - return Iterables.getLast(block.getStatements()).equals(statement); + return block != null && Iterables.getLast(block.getStatements()).equals(statement); } } diff --git a/core/src/test/java/com/google/errorprone/bugpatterns/testdata/ReturnValueIgnoredPositiveCases.java b/core/src/test/java/com/google/errorprone/bugpatterns/testdata/ReturnValueIgnoredPositiveCases.java index 1a94e741e84..f35d2280857 100644 --- a/core/src/test/java/com/google/errorprone/bugpatterns/testdata/ReturnValueIgnoredPositiveCases.java +++ b/core/src/test/java/com/google/errorprone/bugpatterns/testdata/ReturnValueIgnoredPositiveCases.java @@ -27,6 +27,9 @@ public class ReturnValueIgnoredPositiveCases { String a = "thing"; + // BUG: Diagnostic contains: Return value of this method must be used + private Runnable r = () -> String.valueOf(""); + { // String methods // BUG: Diagnostic contains: remove this line String.format("%d", 10);