aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiam Miller-Cushon <cushon@google.com>2023-02-27 16:12:44 -0800
committergoogle-java-format Team <google-java-format-dev+copybara@google.com>2023-02-27 16:13:51 -0800
commita7583fbb7776ee2f9398c280d78a68e161b929b0 (patch)
treeb97d79cde39d15e00c30adc722be728c68154787
parent64f98edf6aeef20a890f09122bb8a5729bc7585a (diff)
downloadgoogle-java-format-a7583fbb7776ee2f9398c280d78a68e161b929b0.tar.gz
Prepare for a change to `JCTree.getQualifiedIdentifier `
https://github.com/openjdk/jdk/commit/a917fb3fcf0fe1a4c4de86c08ae4041462848b82 Fixes: https://github.com/google/google-java-format/issues/898 PiperOrigin-RevId: 512759236
-rw-r--r--core/src/main/java/com/google/googlejavaformat/java/RemoveUnusedImports.java23
1 files changed, 13 insertions, 10 deletions
diff --git a/core/src/main/java/com/google/googlejavaformat/java/RemoveUnusedImports.java b/core/src/main/java/com/google/googlejavaformat/java/RemoveUnusedImports.java
index ecb30ee..a0fc2f5 100644
--- a/core/src/main/java/com/google/googlejavaformat/java/RemoveUnusedImports.java
+++ b/core/src/main/java/com/google/googlejavaformat/java/RemoveUnusedImports.java
@@ -49,7 +49,6 @@ import com.sun.tools.javac.tree.DCTree.DCReference;
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
import com.sun.tools.javac.tree.JCTree.JCFieldAccess;
-import com.sun.tools.javac.tree.JCTree.JCIdent;
import com.sun.tools.javac.tree.JCTree.JCImport;
import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.Log;
@@ -293,9 +292,7 @@ public class RemoveUnusedImports {
}
private static String getSimpleName(JCImport importTree) {
- return importTree.getQualifiedIdentifier() instanceof JCIdent
- ? ((JCIdent) importTree.getQualifiedIdentifier()).getName().toString()
- : ((JCFieldAccess) importTree.getQualifiedIdentifier()).getIdentifier().toString();
+ return getQualifiedIdentifier(importTree).getIdentifier().toString();
}
private static boolean isUnused(
@@ -304,18 +301,15 @@ public class RemoveUnusedImports {
Multimap<String, Range<Integer>> usedInJavadoc,
JCImport importTree,
String simpleName) {
- String qualifier =
- ((JCFieldAccess) importTree.getQualifiedIdentifier()).getExpression().toString();
+ JCFieldAccess qualifiedIdentifier = getQualifiedIdentifier(importTree);
+ String qualifier = qualifiedIdentifier.getExpression().toString();
if (qualifier.equals("java.lang")) {
return true;
}
if (unit.getPackageName() != null && unit.getPackageName().toString().equals(qualifier)) {
return true;
}
- if (importTree.getQualifiedIdentifier() instanceof JCFieldAccess
- && ((JCFieldAccess) importTree.getQualifiedIdentifier())
- .getIdentifier()
- .contentEquals("*")) {
+ if (qualifiedIdentifier.getIdentifier().contentEquals("*")) {
return false;
}
@@ -328,6 +322,15 @@ public class RemoveUnusedImports {
return true;
}
+ private static JCFieldAccess getQualifiedIdentifier(JCImport importTree) {
+ // Use reflection because the return type is JCTree in some versions and JCFieldAccess in others
+ try {
+ return (JCFieldAccess) JCImport.class.getMethod("getQualifiedIdentifier").invoke(importTree);
+ } catch (ReflectiveOperationException e) {
+ throw new LinkageError(e.getMessage(), e);
+ }
+ }
+
/** Applies the replacements to the given source, and re-format any edited javadoc. */
private static String applyReplacements(String source, RangeMap<Integer, String> replacements) {
// save non-empty fixed ranges for reformatting after fixes are applied