49
49
import com .sun .tools .javac .tree .JCTree ;
50
50
import com .sun .tools .javac .tree .JCTree .JCCompilationUnit ;
51
51
import com .sun .tools .javac .tree .JCTree .JCFieldAccess ;
52
- import com .sun .tools .javac .tree .JCTree .JCIdent ;
53
52
import com .sun .tools .javac .tree .JCTree .JCImport ;
54
53
import com .sun .tools .javac .util .Context ;
55
54
import com .sun .tools .javac .util .Log ;
@@ -293,9 +292,7 @@ private static RangeMap<Integer, String> buildReplacements(
293
292
}
294
293
295
294
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 ();
299
296
}
300
297
301
298
private static boolean isUnused (
@@ -304,18 +301,15 @@ private static boolean isUnused(
304
301
Multimap <String , Range <Integer >> usedInJavadoc ,
305
302
JCImport importTree ,
306
303
String simpleName ) {
307
- String qualifier =
308
- (( JCFieldAccess ) importTree . getQualifiedIdentifier ()) .getExpression ().toString ();
304
+ JCFieldAccess qualifiedIdentifier = getQualifiedIdentifier ( importTree );
305
+ String qualifier = qualifiedIdentifier .getExpression ().toString ();
309
306
if (qualifier .equals ("java.lang" )) {
310
307
return true ;
311
308
}
312
309
if (unit .getPackageName () != null && unit .getPackageName ().toString ().equals (qualifier )) {
313
310
return true ;
314
311
}
315
- if (importTree .getQualifiedIdentifier () instanceof JCFieldAccess
316
- && ((JCFieldAccess ) importTree .getQualifiedIdentifier ())
317
- .getIdentifier ()
318
- .contentEquals ("*" )) {
312
+ if (qualifiedIdentifier .getIdentifier ().contentEquals ("*" )) {
319
313
return false ;
320
314
}
321
315
@@ -328,6 +322,15 @@ private static boolean isUnused(
328
322
return true ;
329
323
}
330
324
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
+
331
334
/** Applies the replacements to the given source, and re-format any edited javadoc. */
332
335
private static String applyReplacements (String source , RangeMap <Integer , String > replacements ) {
333
336
// save non-empty fixed ranges for reformatting after fixes are applied
0 commit comments