tastyquery

package tastyquery

Type members

Classlikes

object Classpaths

In-memory representation of the contents of classpaths.

In-memory representation of the contents of classpaths.

object Constants
object Contexts

Container for top-level definitions related to contexts.

Container for top-level definitions related to contexts.

See Contexts.Context for more details.

final
object Exceptions
object Flags
object Names
object Signatures
object Spans

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).

object Symbols

Symbols for all kinds of definitions in Scala programs.

Symbols for all kinds of definitions in Scala programs.

Every definition, like classes, defs, types and type parameters, is associated with a Symbol. Symbols 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 names.

TypeMemberSymbols exist in 3 flavors, indicated by their typeDef field, of type TypeMemberDefinition:

  • TypeAlias(alias): type alias of the form type T = alias
  • AbstractType(bounds): abstract type member of the form type T >: bounds.low <: bounds.high
  • OpaqueTypeAlias(bounds, alias): opaque type alias of the form type 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. ClassSymbols 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 TypeSymbols, and a TermName for TermSymbols, PackageSymbols and NoSymbol.

object Trees
object TypeTrees
object Types