56
56
57
57
public class ResolveVisitor extends ScriptExpressionTransformer {
58
58
59
- public static final String [] DEFAULT_IMPORTS = { "java.lang." , "java.util." , "java.io." , "java.net." , "groovy.lang." , "groovy.util." };
59
+ public static final String [] DEFAULT_PACKAGE_PREFIXES = { "java.lang." , "java.util." , "java.io." , "java.net." , "groovy.lang." , "groovy.util." };
60
60
61
61
public static final String [] EMPTY_STRING_ARRAY = new String [0 ];
62
62
@@ -66,12 +66,15 @@ public class ResolveVisitor extends ScriptExpressionTransformer {
66
66
67
67
private ClassNodeResolver classNodeResolver = new ClassNodeResolver ();
68
68
69
- private List <ClassNode > libClasses ;
69
+ private List <ClassNode > defaultImports ;
70
70
71
- public ResolveVisitor (SourceUnit sourceUnit , CompilationUnit compilationUnit , List <ClassNode > libClasses ) {
71
+ private List <ClassNode > libImports ;
72
+
73
+ public ResolveVisitor (SourceUnit sourceUnit , CompilationUnit compilationUnit , List <ClassNode > defaultImports , List <ClassNode > libImports ) {
72
74
this .sourceUnit = sourceUnit ;
73
75
this .compilationUnit = compilationUnit ;
74
- this .libClasses = libClasses ;
76
+ this .defaultImports = defaultImports ;
77
+ this .libImports = libImports ;
75
78
}
76
79
77
80
@ Override
@@ -182,7 +185,7 @@ protected boolean resolveFromModule(ClassNode type) {
182
185
183
186
protected boolean resolveFromLibImports (ClassNode type ) {
184
187
var name = type .getName ();
185
- for ( var cn : libClasses ) {
188
+ for ( var cn : libImports ) {
186
189
if ( name .equals (cn .getName ()) ) {
187
190
type .setRedirect (cn );
188
191
return true ;
@@ -194,7 +197,7 @@ protected boolean resolveFromLibImports(ClassNode type) {
194
197
protected boolean resolveFromDefaultImports (ClassNode type ) {
195
198
// resolve from script imports
196
199
var typeName = type .getName ();
197
- for ( var cn : Types . TYPES ) {
200
+ for ( var cn : defaultImports ) {
198
201
if ( typeName .equals (cn .getNameWithoutPackage ()) ) {
199
202
type .setRedirect (cn );
200
203
return true ;
@@ -207,7 +210,7 @@ protected boolean resolveFromDefaultImports(ClassNode type) {
207
210
return true ;
208
211
}
209
212
// resolve from default imports
210
- if ( resolveFromDefaultImports (type , DEFAULT_IMPORTS ) ) {
213
+ if ( resolveFromDefaultImports (type , DEFAULT_PACKAGE_PREFIXES ) ) {
211
214
return true ;
212
215
}
213
216
if ( "BigInteger" .equals (typeName ) ) {
@@ -223,7 +226,7 @@ protected boolean resolveFromDefaultImports(ClassNode type) {
223
226
224
227
private static final Map <String , Set <String >> DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE = new UnlimitedConcurrentCache <>();
225
228
static {
226
- DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE .putAll (VMPluginFactory .getPlugin ().getDefaultImportClasses (DEFAULT_IMPORTS ));
229
+ DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE .putAll (VMPluginFactory .getPlugin ().getDefaultImportClasses (DEFAULT_PACKAGE_PREFIXES ));
227
230
}
228
231
229
232
protected boolean resolveFromDefaultImports (ClassNode type , String [] packagePrefixes ) {
@@ -233,7 +236,7 @@ protected boolean resolveFromDefaultImports(ClassNode type, String[] packagePref
233
236
if ( redirect != null ) {
234
237
type .setRedirect (redirect );
235
238
// don't update cache when using a cached lookup
236
- if ( packagePrefixes == DEFAULT_IMPORTS ) {
239
+ if ( packagePrefixes == DEFAULT_PACKAGE_PREFIXES ) {
237
240
var packagePrefixSet = DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE .computeIfAbsent (typeName , key -> new HashSet <>(2 ));
238
241
packagePrefixSet .add (packagePrefix );
239
242
}
0 commit comments