@@ -32,42 +32,30 @@ class CompilationUnit extends Element, File {
32
32
Module getModule ( ) { cumodule ( this , result ) }
33
33
34
34
/**
35
- * Gets a type which is available by its simple name in this compilation unit.
36
- * Reasons for this can be:
37
- * - The type is declared in this compilation unit as top-level type
38
- * - The type is imported
39
- * - The type is declared in the same package as this compilation unit
40
- * - The type is declared in the package `java.lang`
35
+ * Gets a type which is available in the top-level scope of this compilation unit.
36
+ * This can be a type:
37
+ * - declared in this compilation unit as top-level type
38
+ * - imported with an `import` declaration
39
+ * - declared in the same package as this compilation unit
40
+ * - declared in the package `java.lang`
41
+ *
42
+ * This predicate not consider "shadowing", it can have types as result whose simple name is
43
+ * shadowed by another type in scope.
41
44
*/
42
- ClassOrInterface getATypeAvailableBySimpleName ( ) {
45
+ ClassOrInterface getATypeInScope ( ) {
43
46
// See "Shadowing", https://docs.oracle.com/javase/specs/jls/se17/html/jls-6.html#jls-6.4.1
44
- // Note: Currently the logic below does not consider shadowing and might have multiple results
45
- // with the same type name
47
+ // Currently shadowing is not considered
46
48
result .( TopLevelType ) .getCompilationUnit ( ) = this
47
49
or
48
- exists ( ImportStaticTypeMember importDecl |
49
- importDecl .getCompilationUnit ( ) = this and
50
- result = importDecl .getATypeImport ( )
51
- )
52
- or
53
- exists ( ImportType importDecl |
54
- importDecl .getCompilationUnit ( ) = this and
55
- result = importDecl .getImportedType ( )
56
- )
57
- or
58
- exists ( ImportStaticOnDemand importDecl |
59
- importDecl .getCompilationUnit ( ) = this and
60
- result = importDecl .getATypeImport ( )
61
- )
62
- or
63
- exists ( ImportOnDemandFromType importDecl |
64
- importDecl .getCompilationUnit ( ) = this and
65
- result = importDecl .getAnImport ( )
66
- )
67
- or
68
- exists ( ImportOnDemandFromPackage importDecl |
69
- importDecl .getCompilationUnit ( ) = this and
70
- result = importDecl .getAnImport ( )
50
+ exists ( Import importDecl | importDecl .getCompilationUnit ( ) = this |
51
+ result =
52
+ [
53
+ importDecl .( ImportStaticTypeMember ) .getATypeImport ( ) ,
54
+ importDecl .( ImportType ) .getImportedType ( ) ,
55
+ importDecl .( ImportStaticOnDemand ) .getATypeImport ( ) ,
56
+ importDecl .( ImportOnDemandFromType ) .getAnImport ( ) ,
57
+ importDecl .( ImportOnDemandFromPackage ) .getAnImport ( ) ,
58
+ ]
71
59
)
72
60
or
73
61
// From same package or java.lang, see https://docs.oracle.com/javase/specs/jls/se17/html/jls-7.html
0 commit comments