mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-14 04:16:19 +00:00
[jdk21][fixes #3393] Support changed JCImport.qualid type
This commit is contained in:
1 parent
9e5e0c3803
commit
96cd3cd549
4 files changed
+23
-7
No files matched your search
@@ -50,7 +50,7 @@ public class JavacImportList implements ImportList {
|
||||
@Override public String getFullyQualifiedNameForSimpleNameNoAliasing(String unqualified) {
|
||||
for (JCTree def : defs) {
|
||||
if (!(def instanceof JCImport)) continue;
|
||||
JCTree qual = ((JCImport) def).qualid;
|
||||
JCTree qual = Javac.getQualid((JCImport) def);
|
||||
if (!(qual instanceof JCFieldAccess)) continue;
|
||||
String simpleName = ((JCFieldAccess) qual).name.toString();
|
||||
if (simpleName.equals(unqualified)) {
|
||||
@@ -68,7 +68,7 @@ public class JavacImportList implements ImportList {
|
||||
for (JCTree def : defs) {
|
||||
if (!(def instanceof JCImport)) continue;
|
||||
if (((JCImport) def).staticImport) continue;
|
||||
JCTree qual = ((JCImport) def).qualid;
|
||||
JCTree qual = Javac.getQualid((JCImport) def);
|
||||
if (!(qual instanceof JCFieldAccess)) continue;
|
||||
String simpleName = ((JCFieldAccess) qual).name.toString();
|
||||
if (!"*".equals(simpleName)) continue;
|
||||
@@ -87,7 +87,7 @@ public class JavacImportList implements ImportList {
|
||||
for (JCTree def : defs) {
|
||||
if (!(def instanceof JCImport)) continue;
|
||||
if (((JCImport) def).staticImport) continue;
|
||||
JCTree qual = ((JCImport) def).qualid;
|
||||
JCTree qual = Javac.getQualid((JCImport) def);
|
||||
if (!(qual instanceof JCFieldAccess)) continue;
|
||||
String simpleName = ((JCFieldAccess) qual).name.toString();
|
||||
if (!"*".equals(simpleName)) continue;
|
||||
|
||||
@@ -561,7 +561,7 @@ public class JavacHandlerUtil {
|
||||
if (!(def instanceof JCImport)) continue;
|
||||
JCImport imp0rt = (JCImport) def;
|
||||
if (imp0rt.staticImport) continue;
|
||||
if (!imp0rt.qualid.toString().equals(name)) continue;
|
||||
if (!Javac.getQualid(imp0rt).toString().equals(name)) continue;
|
||||
JavacAugments.JCImport_deletable.set(imp0rt, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,6 +92,7 @@ import com.sun.tools.javac.util.Name;
|
||||
import com.sun.tools.javac.util.Position;
|
||||
|
||||
import lombok.javac.CommentInfo;
|
||||
import lombok.javac.Javac;
|
||||
import lombok.javac.PackageName;
|
||||
import lombok.permit.Permit;
|
||||
import lombok.javac.CommentInfo.EndConnection;
|
||||
@@ -485,8 +486,9 @@ public class PrettyPrinter extends JCTree.Visitor {
|
||||
}
|
||||
|
||||
@Override public void visitImport(JCImport tree) {
|
||||
if (tree.qualid instanceof JCFieldAccess) {
|
||||
JCFieldAccess fa = ((JCFieldAccess) tree.qualid);
|
||||
JCTree qualid = Javac.getQualid(tree);
|
||||
if (qualid instanceof JCFieldAccess) {
|
||||
JCFieldAccess fa = ((JCFieldAccess) qualid);
|
||||
if (fa.name.length() == 1 && fa.name.contentEquals("*")) {
|
||||
if (fa.selected instanceof JCFieldAccess) {
|
||||
JCFieldAccess lombokExperimental = (JCFieldAccess) fa.selected;
|
||||
@@ -500,7 +502,7 @@ public class PrettyPrinter extends JCTree.Visitor {
|
||||
|
||||
aPrint("import ");
|
||||
if (tree.staticImport) print("static ");
|
||||
print(tree.qualid);
|
||||
print(qualid);
|
||||
println(";", tree);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,6 +51,7 @@ import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
|
||||
import com.sun.tools.javac.tree.JCTree.JCExpression;
|
||||
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.tree.JCTree.JCLiteral;
|
||||
import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
|
||||
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
|
||||
@@ -275,6 +276,19 @@ public class Javac {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* In some versions, the field's type is {@code JCTree}, in others it is {@code JCFieldAccess}, which at the JVM level are not the same.
|
||||
*/
|
||||
private static final Field JCIMPORT_QUALID = Permit.permissiveGetField(JCImport.class, "qualid");
|
||||
|
||||
public static JCTree getQualid(JCImport tree) {
|
||||
try {
|
||||
return (JCTree) JCIMPORT_QUALID.get(tree);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw sneakyThrow(e.getCause());
|
||||
}
|
||||
}
|
||||
|
||||
public static Object getDocComments(JCCompilationUnit cu) {
|
||||
try {
|
||||
return JCCOMPILATIONUNIT_DOCCOMMENTS.get(cu);
|
||||
|
||||
Reference in new issue
Block a user