From cdcd062e4d4cd29f2c5960529c4893ddac3792d7 Mon Sep 17 00:00:00 2001 From: Manu Sridharan Date: Wed, 19 Jul 2023 09:32:33 -0700 Subject: [PATCH] Revert "Fix compatibility issue when building on JDK 17 but running on JDK 8 (#779)" This reverts commit 61abe56a86476492bb73e497400eec0d33626465. --- .github/workflows/continuous-integration.yml | 3 --- nullaway/build.gradle | 7 ------- .../main/java/com/uber/nullaway/NullabilityUtil.java | 12 ------------ .../handlers/AbstractFieldContractHandler.java | 2 +- .../nullaway/handlers/ApacheThriftIsSetHandler.java | 3 +-- .../java/com/uber/nullaway/handlers/GrpcHandler.java | 3 +-- 6 files changed, 3 insertions(+), 27 deletions(-) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index aeb938f2ce..cfd9de052f 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -16,9 +16,6 @@ jobs: - os: ubuntu-latest java: 11 epVersion: 2.4.0 - - os: ubuntu-latest - java: 17 - epVersion: 2.4.0 - os: macos-latest java: 11 epVersion: 2.20.0 diff --git a/nullaway/build.gradle b/nullaway/build.gradle index af27fcf69b..8e3f3ce54e 100644 --- a/nullaway/build.gradle +++ b/nullaway/build.gradle @@ -92,13 +92,6 @@ test { // Accessed by Lombok tests "--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED", ] - if (deps.versions.errorProneApi == "2.4.0" && JavaVersion.current() >= JavaVersion.VERSION_17) { - // This test does not pass on JDK 17 with Error Prone 2.4.0 due to a Mockito incompatibility. Skip it (the - // test passes with more recent Error Prone versions on JDK 17) - filter { - excludeTestsMatching "com.uber.nullaway.NullAwaySerializationTest.suggestNullableArgumentOnBytecodeNoFileInfo" - } - } } apply plugin: 'com.vanniktech.maven.publish' diff --git a/nullaway/src/main/java/com/uber/nullaway/NullabilityUtil.java b/nullaway/src/main/java/com/uber/nullaway/NullabilityUtil.java index 880909213f..54a4c37710 100644 --- a/nullaway/src/main/java/com/uber/nullaway/NullabilityUtil.java +++ b/nullaway/src/main/java/com/uber/nullaway/NullabilityUtil.java @@ -176,18 +176,6 @@ public static TreePath findEnclosingMethodOrLambdaOrInitializer(TreePath path) { return findEnclosingMethodOrLambdaOrInitializer(path, ImmutableSet.of()); } - /** - * A wrapper for {@link Symbol#getEnclosedElements} to avoid binary compatibility issues for - * covariant overrides in subtypes of {@link Symbol}. - * - *

Same as this ASTHelpers method in Error Prone: - * https://github.com/google/error-prone/blame/a1318e4b0da4347dff7508108835d77c470a7198/check_api/src/main/java/com/google/errorprone/util/ASTHelpers.java#L1148 - * TODO: delete this method and switch to ASTHelpers once we can require Error Prone 2.20.0 - */ - public static List getEnclosedElements(Symbol symbol) { - return symbol.getEnclosedElements(); - } - /** * NOTE: this method does not work for getting all annotations of parameters of methods from class * files. For that case, use {@link #getAllAnnotationsForParameter(Symbol.MethodSymbol, int)} diff --git a/nullaway/src/main/java/com/uber/nullaway/handlers/AbstractFieldContractHandler.java b/nullaway/src/main/java/com/uber/nullaway/handlers/AbstractFieldContractHandler.java index c458f3200a..7b0c645e40 100644 --- a/nullaway/src/main/java/com/uber/nullaway/handlers/AbstractFieldContractHandler.java +++ b/nullaway/src/main/java/com/uber/nullaway/handlers/AbstractFieldContractHandler.java @@ -222,7 +222,7 @@ protected boolean validateAnnotationSyntax( public static @Nullable VariableElement getInstanceFieldOfClass( Symbol.ClassSymbol classSymbol, String name) { Preconditions.checkNotNull(classSymbol); - for (Element member : NullabilityUtil.getEnclosedElements(classSymbol)) { + for (Element member : classSymbol.getEnclosedElements()) { if (member.getKind().isField() && !member.getModifiers().contains(Modifier.STATIC)) { if (member.getSimpleName().toString().equals(name)) { return (VariableElement) member; diff --git a/nullaway/src/main/java/com/uber/nullaway/handlers/ApacheThriftIsSetHandler.java b/nullaway/src/main/java/com/uber/nullaway/handlers/ApacheThriftIsSetHandler.java index 25c4210591..2b36cdeb9a 100644 --- a/nullaway/src/main/java/com/uber/nullaway/handlers/ApacheThriftIsSetHandler.java +++ b/nullaway/src/main/java/com/uber/nullaway/handlers/ApacheThriftIsSetHandler.java @@ -30,7 +30,6 @@ import com.sun.tools.javac.code.Type; import com.sun.tools.javac.code.Types; import com.uber.nullaway.NullAway; -import com.uber.nullaway.NullabilityUtil; import com.uber.nullaway.Nullness; import com.uber.nullaway.dataflow.AccessPath; import com.uber.nullaway.dataflow.AccessPathNullnessPropagation; @@ -143,7 +142,7 @@ private FieldAndGetterElements getFieldAndGetterForProperty( Element getter = null; String fieldName = decapitalize(capPropName); String getterName = "get" + capPropName; - for (Symbol elem : NullabilityUtil.getEnclosedElements(symbol.owner)) { + for (Symbol elem : symbol.owner.getEnclosedElements()) { if (elem.getKind().isField() && elem.getSimpleName().toString().equals(fieldName)) { if (field != null) { throw new RuntimeException("already found field " + fieldName); diff --git a/nullaway/src/main/java/com/uber/nullaway/handlers/GrpcHandler.java b/nullaway/src/main/java/com/uber/nullaway/handlers/GrpcHandler.java index ed5e620db6..0e27408718 100644 --- a/nullaway/src/main/java/com/uber/nullaway/handlers/GrpcHandler.java +++ b/nullaway/src/main/java/com/uber/nullaway/handlers/GrpcHandler.java @@ -35,7 +35,6 @@ import com.sun.tools.javac.code.Type; import com.sun.tools.javac.code.Types; import com.uber.nullaway.NullAway; -import com.uber.nullaway.NullabilityUtil; import com.uber.nullaway.Nullness; import com.uber.nullaway.dataflow.AccessPath; import com.uber.nullaway.dataflow.AccessPathNullnessPropagation; @@ -123,7 +122,7 @@ public ImmutableSet onRegisterImmutableTypes() { private Symbol.MethodSymbol getGetterForMetadataSubtype( Symbol.ClassSymbol classSymbol, Types types) { // Is there a better way than iteration? - for (Symbol elem : NullabilityUtil.getEnclosedElements(classSymbol)) { + for (Symbol elem : classSymbol.getEnclosedElements()) { if (elem.getKind().equals(ElementKind.METHOD)) { Symbol.MethodSymbol methodSymbol = (Symbol.MethodSymbol) elem; if (grpcIsMetadataGetCall(methodSymbol, types)) {