Skip to content

Commit a7583fb

Browse files
cushongoogle-java-format Team
authored andcommitted
Prepare for a change to JCTree.getQualifiedIdentifier
openjdk/jdk@a917fb3 Fixes: #898 PiperOrigin-RevId: 512759236
1 parent 64f98ed commit a7583fb

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

core/src/main/java/com/google/googlejavaformat/java/RemoveUnusedImports.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949
import com.sun.tools.javac.tree.JCTree;
5050
import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
5151
import com.sun.tools.javac.tree.JCTree.JCFieldAccess;
52-
import com.sun.tools.javac.tree.JCTree.JCIdent;
5352
import com.sun.tools.javac.tree.JCTree.JCImport;
5453
import com.sun.tools.javac.util.Context;
5554
import com.sun.tools.javac.util.Log;
@@ -293,9 +292,7 @@ private static RangeMap<Integer, String> buildReplacements(
293292
}
294293

295294
private static String getSimpleName(JCImport importTree) {
296-
return importTree.getQualifiedIdentifier() instanceof JCIdent
297-
? ((JCIdent) importTree.getQualifiedIdentifier()).getName().toString()
298-
: ((JCFieldAccess) importTree.getQualifiedIdentifier()).getIdentifier().toString();
295+
return getQualifiedIdentifier(importTree).getIdentifier().toString();
299296
}
300297

301298
private static boolean isUnused(
@@ -304,18 +301,15 @@ private static boolean isUnused(
304301
Multimap<String, Range<Integer>> usedInJavadoc,
305302
JCImport importTree,
306303
String simpleName) {
307-
String qualifier =
308-
((JCFieldAccess) importTree.getQualifiedIdentifier()).getExpression().toString();
304+
JCFieldAccess qualifiedIdentifier = getQualifiedIdentifier(importTree);
305+
String qualifier = qualifiedIdentifier.getExpression().toString();
309306
if (qualifier.equals("java.lang")) {
310307
return true;
311308
}
312309
if (unit.getPackageName() != null && unit.getPackageName().toString().equals(qualifier)) {
313310
return true;
314311
}
315-
if (importTree.getQualifiedIdentifier() instanceof JCFieldAccess
316-
&& ((JCFieldAccess) importTree.getQualifiedIdentifier())
317-
.getIdentifier()
318-
.contentEquals("*")) {
312+
if (qualifiedIdentifier.getIdentifier().contentEquals("*")) {
319313
return false;
320314
}
321315

@@ -328,6 +322,15 @@ private static boolean isUnused(
328322
return true;
329323
}
330324

325+
private static JCFieldAccess getQualifiedIdentifier(JCImport importTree) {
326+
// Use reflection because the return type is JCTree in some versions and JCFieldAccess in others
327+
try {
328+
return (JCFieldAccess) JCImport.class.getMethod("getQualifiedIdentifier").invoke(importTree);
329+
} catch (ReflectiveOperationException e) {
330+
throw new LinkageError(e.getMessage(), e);
331+
}
332+
}
333+
331334
/** Applies the replacements to the given source, and re-format any edited javadoc. */
332335
private static String applyReplacements(String source, RangeMap<Integer, String> replacements) {
333336
// save non-empty fixed ranges for reformatting after fixes are applied

0 commit comments

Comments
 (0)