tastyquery
Type members
Classlikes
In-memory representation of the contents of classpaths.
In-memory representation of the contents of classpaths.
Container for top-level definitions related to contexts.
Container for top-level definitions related to contexts.
See Contexts.Context for more details.
The offsets part of a full position, consisting of 2 or 3 entries:
The offsets part of a full position, consisting of 2 or 3 entries:
- start: the start offset of the span, in characters from start of file
- end : the end offset of the span
- point: if given, the offset where a single
^
would be logically placed
Spans are encoded according to the following format in little endian: Start: unsigned 26 Bits (works for source files up to 64M) End: unsigned 26 Bits Point: unsigned 12 Bits relative to start NoSpan encoded as -1L (this is a normally invalid span because point would lie beyond end).
Symbols for all kinds of definitions in Scala programs.
Symbols for all kinds of definitions in Scala programs.
Every definition, like class
es, def
s, type
s and type parameters, is
associated with a Symbol
. Symbol
s are organized in a hierarchy,
depending on what kind of definitions they represent.
Symbol
|
+- NoSymbol singleton instance used when there is no symbol
|
+- PackageSymbol any package, including the root package, the empty package, and nested packages
|
+- TermSymbol any term definition:
| `val`, `var`, `def`, term param, term capture, `object` value
|
+- TypeSymbol any definition for a type
+- ClassSymbol definition for a `class`, `trait`, or the module class of an `object`
+- TypeSymbolWithBounds any other kind of type: `type` definitions, type params, type captures
+- TypeMemberSymbol `type` definition, further refined through its `typeDef`
+- TypeParamSymbol
+- ClassTypeParamSymbol type parameter of a class
+- LocalTypeParamSymbol any other type parameter
Additionally, PackageSymbol
and ClassSymbol
extend DeclaringSymbol
.
Declaring symbols are the ones that contain declarations, which can be
looked up with their name
s.
TypeMemberSymbol
s exist in 3 flavors, indicated by their typeDef
field,
of type TypeMemberDefinition
:
TypeAlias(alias)
: type alias of the formtype T = alias
AbstractType(bounds)
: abstract type member of the formtype T >: bounds.low <: bounds.high
OpaqueTypeAlias(bounds, alias)
: opaque type alias of the formtype T >: bounds.low <: bounds.high = alias
The main property a TermSymbol
is its declaredType
, which is a Type
.
All TypeSymbolWithBounds
have bounds
of type TypeBounds
, which are
often used as their primary characteristic. ClassSymbol
s are entirely
defined by themselves.
With the exception of NoSymbol
and the root package symbol, all symbols
have an owner
which is another Symbol
.
All symbols also have a name
. It is a TypeName
for TypeSymbol
s, and a
TermName
for TermSymbol
s, PackageSymbol
s and NoSymbol
.