diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index 5962a7c746..bada5eedf1 100755 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -40,7 +40,7 @@ if (project.hasProperty("epApiVersion")) { def versions = [ asm : "9.3", - checkerFramework : "3.41.0", + checkerFramework : "3.40.0", // for comparisons in other parts of the build errorProneLatest : latestErrorProneVersion, // The version of Error Prone used to check NullAway's code. diff --git a/nullaway/build.gradle b/nullaway/build.gradle index 7d39adccb2..15327aed88 100644 --- a/nullaway/build.gradle +++ b/nullaway/build.gradle @@ -65,6 +65,9 @@ dependencies { testImplementation deps.test.mockito testImplementation deps.test.javaxAnnotationApi testImplementation deps.test.assertJ + // This is for a test exposing a CFG construction failure in the Checker Framework. We can probably remove it once + // the issue is fixed upstream and we update. See https://github.com/typetools/checker-framework/issues/6396. + testImplementation 'org.apache.spark:spark-sql_2.12:3.3.2' errorProneOldest deps.build.errorProneCheckApiOld errorProneOldest(deps.build.errorProneTestHelpersOld) { diff --git a/nullaway/src/test/java/com/uber/nullaway/NullAwayCoreTests.java b/nullaway/src/test/java/com/uber/nullaway/NullAwayCoreTests.java index f8f3ed622c..dd6e0d7575 100644 --- a/nullaway/src/test/java/com/uber/nullaway/NullAwayCoreTests.java +++ b/nullaway/src/test/java/com/uber/nullaway/NullAwayCoreTests.java @@ -960,4 +960,29 @@ public void primitiveCastsRememberNullChecks() { "}") .doTest(); } + + /** + * This test exposes a failure in CFG construction in Checker Framework 3.41.0 and above. Once a + * fix for this issue makes it to a Checker Framework release, we can probably remove this test. + * See https://github.com/typetools/checker-framework/issues/6396. + */ + @Test + public void cfgConstructionSymbolCompletionFailure() { + defaultCompilationHelper + .addSourceLines( + "Test.java", + "package com.uber;", + "import org.apache.spark.sql.SparkSession;", + "class Test {", + " static class X {", + " X(SparkSession session) {}", + " }", + " X run() {", + " try (SparkSession session = SparkSession.builder().getOrCreate()) {", + " return new X(session);", + " }", + " }", + "}") + .doTest(); + } }