|
48 | 48 | import com.sun.tools.javac.api.JavacTaskImpl; |
49 | 49 | import com.sun.tools.javac.api.JavacTrees; |
50 | 50 | import com.sun.tools.javac.code.Attribute; |
51 | | -import com.sun.tools.javac.code.Attribute.Compound; |
| 51 | +import com.sun.tools.javac.code.ClassFinder; |
52 | 52 | import com.sun.tools.javac.code.Symbol; |
| 53 | +import com.sun.tools.javac.code.Symtab; |
| 54 | +import com.sun.tools.javac.code.TypeTag; |
| 55 | +import com.sun.tools.javac.code.Types; |
| 56 | +import com.sun.tools.javac.code.Attribute.Compound; |
53 | 57 | import com.sun.tools.javac.code.Symbol.ClassSymbol; |
| 58 | +import com.sun.tools.javac.code.Symbol.CompletionFailure; |
54 | 59 | import com.sun.tools.javac.code.Symbol.MethodSymbol; |
55 | 60 | import com.sun.tools.javac.code.Symbol.ModuleSymbol; |
56 | 61 | import com.sun.tools.javac.code.Symbol.PackageSymbol; |
57 | 62 | import com.sun.tools.javac.code.Symbol.RootPackageSymbol; |
58 | 63 | import com.sun.tools.javac.code.Symbol.TypeSymbol; |
59 | 64 | import com.sun.tools.javac.code.Symbol.TypeVariableSymbol; |
60 | 65 | import com.sun.tools.javac.code.Symbol.VarSymbol; |
61 | | -import com.sun.tools.javac.code.Symtab; |
62 | 66 | import com.sun.tools.javac.code.Type.ArrayType; |
63 | 67 | import com.sun.tools.javac.code.Type.ClassType; |
64 | 68 | import com.sun.tools.javac.code.Type.ErrorType; |
|
71 | 75 | import com.sun.tools.javac.code.Type.PackageType; |
72 | 76 | import com.sun.tools.javac.code.Type.TypeVar; |
73 | 77 | import com.sun.tools.javac.code.Type.UnknownType; |
74 | | -import com.sun.tools.javac.code.TypeTag; |
75 | | -import com.sun.tools.javac.code.Types; |
| 78 | +import com.sun.tools.javac.comp.Modules; |
76 | 79 | import com.sun.tools.javac.tree.JCTree; |
| 80 | +import com.sun.tools.javac.tree.TreeInfo; |
77 | 81 | import com.sun.tools.javac.tree.JCTree.JCAnnotatedType; |
78 | 82 | import com.sun.tools.javac.tree.JCTree.JCAnnotation; |
79 | 83 | import com.sun.tools.javac.tree.JCTree.JCArrayTypeTree; |
|
98 | 102 | import com.sun.tools.javac.tree.JCTree.JCTypeParameter; |
99 | 103 | import com.sun.tools.javac.tree.JCTree.JCVariableDecl; |
100 | 104 | import com.sun.tools.javac.tree.JCTree.JCWildcard; |
101 | | -import com.sun.tools.javac.tree.TreeInfo; |
102 | 105 | import com.sun.tools.javac.util.Context; |
103 | 106 | import com.sun.tools.javac.util.Names; |
104 | 107 |
|
@@ -1621,9 +1624,21 @@ public ITypeBinding resolveWellKnownType(String typeName) { |
1621 | 1624 | default -> null; |
1622 | 1625 | }; |
1623 | 1626 | if (type == null) { |
1624 | | - return null; |
| 1627 | + ClassFinder finder = ClassFinder.instance(context); |
| 1628 | + Modules modules = Modules.instance(context); |
| 1629 | + Names names = Names.instance(context); |
| 1630 | + if (finder != null && modules != null && names != null) { |
| 1631 | + try { |
| 1632 | + ClassSymbol sym = finder.loadClass(modules.getDefaultModule(), names.fromString(typeName)); |
| 1633 | + if (sym != null) { |
| 1634 | + type = sym.type; |
| 1635 | + } |
| 1636 | + } catch (CompletionFailure failure) { |
| 1637 | + // do nothing, class not found |
| 1638 | + } |
| 1639 | + } |
1625 | 1640 | } |
1626 | | - return this.bindings.getTypeBinding(type, true); |
| 1641 | + return type != null ? this.bindings.getTypeBinding(type, true) : null; |
1627 | 1642 | } |
1628 | 1643 |
|
1629 | 1644 | @Override |
|
0 commit comments