From c6e57535a1521288926e04d811c6447be639371b Mon Sep 17 00:00:00 2001 From: Lazaro Clapp Date: Mon, 8 Apr 2019 12:19:55 -0400 Subject: [PATCH 1/4] Add support for UNSIGNED_RIGHT_SHIFT. --- nullaway/src/main/java/com/uber/nullaway/NullAway.java | 1 + 1 file changed, 1 insertion(+) diff --git a/nullaway/src/main/java/com/uber/nullaway/NullAway.java b/nullaway/src/main/java/com/uber/nullaway/NullAway.java index 6bb3f4ab2..4104da418 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; From 890659546ba36f194e05a8776e467fcbc85acdbd Mon Sep 17 00:00:00 2001 From: Lazaro Clapp Date: Mon, 8 Apr 2019 12:31:38 -0400 Subject: [PATCH 2/4] Add a test case to catch regressions --- .../com/uber/nullaway/testdata/NullAwayNegativeCases.java | 8 ++++++++ 1 file changed, 8 insertions(+) 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 6757e7551..18f95a692 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,12 @@ static void testTwoParamIter() { s.hashCode(); } } + + static int testNoCrashOnShifts(int n) { + int m = n << 2; + m <<= 2; + n >>= 1; + m >>>= 4; + return (n >>> 3) + m; + } } From 886df953ded36f925d1a66699affb0c7e981a812 Mon Sep 17 00:00:00 2001 From: Lazaro Clapp Date: Mon, 8 Apr 2019 13:14:01 -0400 Subject: [PATCH 3/4] Fix test --- .../testdata/NullAwayNegativeCases.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) 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 18f95a692..2e02150b5 100644 --- a/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNegativeCases.java +++ b/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNegativeCases.java @@ -810,11 +810,18 @@ static void testTwoParamIter() { } } - static int testNoCrashOnShifts(int n) { - int m = n << 2; - m <<= 2; - n >>= 1; - m >>>= 4; - return (n >>> 3) + m; + static String boxAndDeref(Integer boxed) { + return boxed.toString(); + } + + static String testNoCrashOnShifts(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; } } From e80f667fd3091e99d4ef03a5c873f5c5eee15b04 Mon Sep 17 00:00:00 2001 From: Lazaro Clapp Date: Mon, 8 Apr 2019 13:14:41 -0400 Subject: [PATCH 4/4] Rename method. --- .../com/uber/nullaway/testdata/NullAwayNegativeCases.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 2e02150b5..fe81e52f6 100644 --- a/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNegativeCases.java +++ b/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNegativeCases.java @@ -814,7 +814,7 @@ static String boxAndDeref(Integer boxed) { return boxed.toString(); } - static String testNoCrashOnShifts(int n) { + static String testNoCrashOnUnboxedShifts(int n) { Integer m = n << 2; String s = ""; s += boxAndDeref(m);