From d2d84b0114d394832e8ce904cf94aa0d9ad5639a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1zaro=20Clapp?= Date: Mon, 8 Apr 2019 13:46:34 -0400 Subject: [PATCH] Add support for UNSIGNED_RIGHT_SHIFT. (#303) --- .../src/main/java/com/uber/nullaway/NullAway.java | 1 + .../nullaway/testdata/NullAwayNegativeCases.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/nullaway/src/main/java/com/uber/nullaway/NullAway.java b/nullaway/src/main/java/com/uber/nullaway/NullAway.java index 6bb3f4ab28..4104da418d 100644 --- a/nullaway/src/main/java/com/uber/nullaway/NullAway.java +++ b/nullaway/src/main/java/com/uber/nullaway/NullAway.java @@ -1889,6 +1889,7 @@ private boolean mayBeNullExpr(VisitorState state, ExpressionTree expr) { case XOR: case LEFT_SHIFT: case RIGHT_SHIFT: + case UNSIGNED_RIGHT_SHIFT: // clearly not null exprMayBeNull = false; break; diff --git a/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNegativeCases.java b/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNegativeCases.java index 6757e75512..fe81e52f67 100644 --- a/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNegativeCases.java +++ b/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNegativeCases.java @@ -809,4 +809,19 @@ static void testTwoParamIter() { s.hashCode(); } } + + static String boxAndDeref(Integer boxed) { + return boxed.toString(); + } + + static String testNoCrashOnUnboxedShifts(int n) { + Integer m = n << 2; + String s = ""; + s += boxAndDeref(m); + s += boxAndDeref(m <<= 2); + s += boxAndDeref(n >>= 1); + s += boxAndDeref(m >>>= 4); + s += boxAndDeref(n >>> 3); + return s; + } }