Class ScopeHandler
- java.lang.Object
-
- org.inferred.freebuilder.processor.source.ScopeHandler
-
class ScopeHandler extends java.lang.ObjectHandles the byzantine rules of Java scoping.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static interfaceScopeHandler.Reflection(package private) static classScopeHandler.ScopeState(package private) static interfaceScopeHandler.TypeInfo(package private) static classScopeHandler.Visibility
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<java.lang.String,QualifiedName>generatedTypesQualified name as string ↦ qualified nameprivate ScopeHandler.Reflectionreflectprivate java.util.Map<QualifiedName,ScopeHandler.Visibility>typeVisibilityType ↦ visibility in parent scopeprivate static java.lang.StringUNIVERSALLY_VISIBLE_PACKAGEprivate java.util.Map<QualifiedName,com.google.common.collect.SetMultimap<java.lang.String,QualifiedName>>visibleTypesScope ↦ simple name ↦ type
-
Constructor Summary
Constructors Constructor Description ScopeHandler(ScopeHandler.Reflection reflect)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private com.google.common.collect.SetMultimap<java.lang.String,QualifiedName>computeTypesInScope(QualifiedName scope)(package private) voiddeclareGeneratedType(ScopeHandler.Visibility visibility, QualifiedName generatedType, java.util.Set<java.lang.String> supertypes)private static <K1,K2,V>
com.google.common.collect.SetMultimap<K2,V>get(java.util.Map<K1,com.google.common.collect.SetMultimap<K2,V>> map, K1 key)private booleanisTopLevelType(java.lang.String pkg, java.lang.String simpleName)private java.util.stream.Stream<QualifiedName>lookup(java.lang.String typename)private static booleanmaybeVisibleInScope(QualifiedName scope, ScopeHandler.Visibility visibility, QualifiedName type)private com.google.common.collect.SetMultimap<java.lang.String,QualifiedName>typesInScope(QualifiedName scope)(package private) ScopeHandler.ScopeStatevisibilityIn(java.lang.String pkg, QualifiedName type)Returns whethertypeis visible in, or can be imported into, a compilation unit inpkg.(package private) ScopeHandler.ScopeStatevisibilityIn(QualifiedName scope, QualifiedName type)Returns whethertypeis visible in, or can be imported into, the body oftype.private ScopeHandler.VisibilityvisibilityOf(QualifiedName type)
-
-
-
Field Detail
-
UNIVERSALLY_VISIBLE_PACKAGE
private static final java.lang.String UNIVERSALLY_VISIBLE_PACKAGE
- See Also:
- Constant Field Values
-
reflect
private final ScopeHandler.Reflection reflect
-
typeVisibility
private final java.util.Map<QualifiedName,ScopeHandler.Visibility> typeVisibility
Type ↦ visibility in parent scope
-
visibleTypes
private final java.util.Map<QualifiedName,com.google.common.collect.SetMultimap<java.lang.String,QualifiedName>> visibleTypes
Scope ↦ simple name ↦ type
-
generatedTypes
private final java.util.Map<java.lang.String,QualifiedName> generatedTypes
Qualified name as string ↦ qualified name
-
-
Constructor Detail
-
ScopeHandler
ScopeHandler(ScopeHandler.Reflection reflect)
-
-
Method Detail
-
visibilityIn
ScopeHandler.ScopeState visibilityIn(java.lang.String pkg, QualifiedName type)
Returns whethertypeis visible in, or can be imported into, a compilation unit inpkg.
-
visibilityIn
ScopeHandler.ScopeState visibilityIn(QualifiedName scope, QualifiedName type)
Returns whethertypeis visible in, or can be imported into, the body oftype.
-
declareGeneratedType
void declareGeneratedType(ScopeHandler.Visibility visibility, QualifiedName generatedType, java.util.Set<java.lang.String> supertypes)
-
lookup
private java.util.stream.Stream<QualifiedName> lookup(java.lang.String typename)
-
isTopLevelType
private boolean isTopLevelType(java.lang.String pkg, java.lang.String simpleName)
-
get
private static <K1,K2,V> com.google.common.collect.SetMultimap<K2,V> get(java.util.Map<K1,com.google.common.collect.SetMultimap<K2,V>> map, K1 key)
-
typesInScope
private com.google.common.collect.SetMultimap<java.lang.String,QualifiedName> typesInScope(QualifiedName scope)
-
computeTypesInScope
private com.google.common.collect.SetMultimap<java.lang.String,QualifiedName> computeTypesInScope(QualifiedName scope)
-
maybeVisibleInScope
private static boolean maybeVisibleInScope(QualifiedName scope, ScopeHandler.Visibility visibility, QualifiedName type)
-
visibilityOf
private ScopeHandler.Visibility visibilityOf(QualifiedName type)
-
-