public class ImportTable extends java.lang.Object implements Resolver
ImportTable
is a type of ClassResolver
that
corresponds to a particular source file.
It has a set of package and class imports, which caches the results of lookups for future reference.
Modifier and Type | Field and Description |
---|---|
protected java.util.List<Position> |
lazyImportPositions
Parallel list of positions for lazyImports.
|
protected java.util.List<java.lang.String> |
lazyImports
List of class imports which will be lazily added to the table at the
next lookup.
|
protected java.util.Map<java.lang.String,Named> |
map
Map from names to classes found, or to the NOT_FOUND object.
|
protected static Named |
NOT_FOUND |
protected Package |
pkg
Our package
|
protected java.util.List<java.lang.String> |
singleTypeImports
List of explicitly imported classes added to the table or pending in
the lazyImports list.
|
protected java.lang.String |
sourceName
Source name to use for debugging and error reporting
|
protected Position |
sourcePos
Position to use for error reporting
|
protected TypeSystem |
ts |
protected java.util.List<java.lang.String> |
typeOnDemandImports
A list of all type import on demand imports.
|
Constructor and Description |
---|
ImportTable(TypeSystem ts,
Package pkg)
Create an import table.
|
ImportTable(TypeSystem ts,
Package pkg,
java.lang.String src)
Create an import table.
|
Modifier and Type | Method and Description |
---|---|
void |
addClassImport(java.lang.String className)
Add a class import.
|
void |
addClassImport(java.lang.String className,
Position pos)
Add a class import.
|
void |
addTypeOnDemandImport(java.lang.String pkgOrTypeName)
Add a package import.
|
void |
addTypeOnDemandImport(java.lang.String pkgOrTypeName,
Position pos)
Add a type import on deamnd.
|
protected Named |
cachedFind(java.lang.String name)
Find a type by name, using the cache and the outer resolver,
but not the import table.
|
Named |
find(java.lang.String name)
Find a type by name, searching the import table.
|
protected Named |
findInPkgOrType(java.lang.String name,
java.lang.String pkgOrTypeName) |
protected boolean |
isVisibleFrom(Named n,
java.lang.String pkgName)
Return whether
n in package pkgName is visible from within
package pkg . |
protected void |
lazyImport()
Load the class imports, lazily.
|
protected void |
lazyImportLongName(java.lang.String longName)
Try to import the class longName
|
protected void |
lazyImportLongNameStaticMember(java.lang.String longName)
The class longName may be a static nested class.
|
Package |
package_()
The package of the source we are importing types into.
|
java.util.List<java.lang.String> |
singleTypeImports()
List the classes explicitly imported.
|
java.lang.String |
sourceName()
The name of the source file we are importing into.
|
java.lang.String |
toString() |
java.util.List<java.lang.String> |
typeOnDemandImports()
List the type-on-demands we import from.
|
protected TypeSystem ts
protected java.util.List<java.lang.String> typeOnDemandImports
protected java.util.Map<java.lang.String,Named> map
protected java.util.List<java.lang.String> lazyImports
protected java.util.List<Position> lazyImportPositions
protected java.util.List<java.lang.String> singleTypeImports
protected java.lang.String sourceName
protected Position sourcePos
protected Package pkg
protected static final Named NOT_FOUND
public ImportTable(TypeSystem ts, Package pkg)
ts
- The type systempkg
- The package of the source we are importing types into.public ImportTable(TypeSystem ts, Package pkg, java.lang.String src)
ts
- The type systempkg
- The package of the source we are importing types into.src
- The name of the source file we are importing into.public Package package_()
public void addClassImport(java.lang.String className)
public void addClassImport(java.lang.String className, Position pos)
public void addTypeOnDemandImport(java.lang.String pkgOrTypeName, Position pos)
public void addTypeOnDemandImport(java.lang.String pkgOrTypeName)
public java.util.List<java.lang.String> typeOnDemandImports()
public java.util.List<java.lang.String> singleTypeImports()
public java.lang.String sourceName()
protected Named cachedFind(java.lang.String name) throws SemanticException
SemanticException
public Named find(java.lang.String name) throws SemanticException
find
in interface Resolver
SemanticException
protected Named findInPkgOrType(java.lang.String name, java.lang.String pkgOrTypeName) throws SemanticException
SemanticException
protected boolean isVisibleFrom(Named n, java.lang.String pkgName)
n
in package pkgName
is visible from within
package pkg
. The empty string may
be passed in to represent the default package.protected void lazyImport() throws SemanticException
SemanticException
protected void lazyImportLongName(java.lang.String longName) throws SemanticException
longName
- SemanticException
protected void lazyImportLongNameStaticMember(java.lang.String longName) throws SemanticException
longName
- SemanticException
public java.lang.String toString()
toString
in class java.lang.Object