Class ImportManager
- java.lang.Object
-
- org.inferred.freebuilder.processor.source.ImportManager
-
class ImportManager extends java.lang.ObjectAdds imports and applies scope visibility rules to a compilation unit.To ensure we never import common names like 'Builder', nested classes must have at least one non-lowercase letter (apart from the first) in their name.
-
-
Field Summary
Fields Modifier and Type Field Description private static QualifiedNameCONFLICTImpossible typename, to use instead of null (which toMap goes odd over).private com.google.common.collect.Multimap<QualifiedName,TypeUsage>importsTypes to import, and for which usages.private java.util.Map<java.lang.String,QualifiedName>namespaceSimple name → type, orCONFLICTif multiple types conflicted for that name.private java.lang.Stringpkgprivate java.util.Map<TypeUsage,QualifiedName>resolutionsWhich type, imported or in scope, to use to shorten each type usage.private ScopeHandlerscopeHandlerprivate java.util.Deque<TypeUsage>todoType usages to process.
-
Constructor Summary
Constructors Modifier Constructor Description privateImportManager(java.util.List<TypeUsage> usages, ScopeHandler scopeHandler, java.lang.String pkg)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private booleanaddImport(QualifiedName name, TypeUsage usage)private voidappendImports(java.lang.StringBuilder result)private voidappendUsage(java.lang.StringBuilder result, TypeUsage usage)private static booleanisSensibleImport(QualifiedName name)private voidrejectName(QualifiedName name)private booleanreserveName(QualifiedName name)private voidresolveUsage(TypeUsage usage)private voidselectImports()(package private) static java.lang.StringshortenReferences(java.lang.CharSequence codeWithQualifiedNames, java.lang.String pkg, int importsIndex, java.util.List<TypeUsage> typeUsages, ScopeHandler scopeHandler)private java.util.function.Function<QualifiedName,ScopeHandler.ScopeState>visibilityIn(ScopeHandler scopeHandler, TypeUsage usage)
-
-
-
Field Detail
-
CONFLICT
private static final QualifiedName CONFLICT
Impossible typename, to use instead of null (which toMap goes odd over).
-
todo
private final java.util.Deque<TypeUsage> todo
Type usages to process.
-
namespace
private final java.util.Map<java.lang.String,QualifiedName> namespace
Simple name → type, orCONFLICTif multiple types conflicted for that name.
-
imports
private final com.google.common.collect.Multimap<QualifiedName,TypeUsage> imports
Types to import, and for which usages.
-
resolutions
private final java.util.Map<TypeUsage,QualifiedName> resolutions
Which type, imported or in scope, to use to shorten each type usage.
-
scopeHandler
private final ScopeHandler scopeHandler
-
pkg
private final java.lang.String pkg
-
-
Constructor Detail
-
ImportManager
private ImportManager(java.util.List<TypeUsage> usages, ScopeHandler scopeHandler, java.lang.String pkg)
-
-
Method Detail
-
shortenReferences
static java.lang.String shortenReferences(java.lang.CharSequence codeWithQualifiedNames, java.lang.String pkg, int importsIndex, java.util.List<TypeUsage> typeUsages, ScopeHandler scopeHandler)
-
selectImports
private void selectImports()
-
appendImports
private void appendImports(java.lang.StringBuilder result)
-
appendUsage
private void appendUsage(java.lang.StringBuilder result, TypeUsage usage)
-
reserveName
private boolean reserveName(QualifiedName name)
-
rejectName
private void rejectName(QualifiedName name)
-
addImport
private boolean addImport(QualifiedName name, TypeUsage usage)
-
resolveUsage
private void resolveUsage(TypeUsage usage)
-
visibilityIn
private java.util.function.Function<QualifiedName,ScopeHandler.ScopeState> visibilityIn(ScopeHandler scopeHandler, TypeUsage usage)
-
isSensibleImport
private static boolean isSensibleImport(QualifiedName name)
-
-