trait FlagSets extends AnyRef
EXPERIMENTAL
The trait that defines flag sets and operations on them.
Flag
s are used to provide modifiers for abstract syntax trees that represent definitions
via the flags
field of scala.reflect.api.Trees#Modifiers. Trees that accept modifiers are:
- scala.reflect.api.Trees#ClassDef. Classes and traits.
- scala.reflect.api.Trees#ModuleDef. Objects.
- scala.reflect.api.Trees#ValDef. Vals, vars, parameters and self-type annotations.
- scala.reflect.api.Trees#DefDef. Methods and constructors.
- scala.reflect.api.Trees#TypeDef. Type aliases, abstract type members and type parameters.
For example, to create a class named C
one would write something like:
ClassDef(Modifiers(NoFlags), TypeName("C"), Nil, ...)
Here, the flag set is empty.
To make C
private, one would write something like:
ClassDef(Modifiers(PRIVATE), TypeName("C"), Nil, ...)
Flags can also be combined with the vertical bar operator (|
).
For example, a private final class is written something like:
ClassDef(Modifiers(PRIVATE | FINAL), TypeName("C"), Nil, ...)
The list of all available flags is defined in scala.reflect.api.FlagSets#FlagValues, available via
scala.reflect.api.FlagSets#Flag. (Typically one writes a wildcard import for this, e.g.
import scala.reflect.runtime.universe.Flag._
).
Definition trees are compiled down to symbols, so flags on modifiers of these trees are transformed into flags
on the resulting symbols. Unlike trees, symbols don't expose flags, but rather provide isXXX
test methods
(e.g. isFinal
can be used to test finality). These test methods might require an upcast with asTerm
,
asType
or asClass
as some flags only make sense for certain kinds of symbols.
Of Note: This part of the Reflection API is being considered as a candidate for redesign. It is quite possible that in future releases of the reflection API, flag sets could be replaced with something else.
For more details about FlagSet
s and other aspects of Scala reflection, see the
Reflection Guide
- Self Type
- Universe
- Source
- FlagSets.scala
- Grouped
- Alphabetic
- By Inheritance
- FlagSets
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Flags
- trait FlagOps extends Any
The API of
FlagSet
instances.The API of
FlagSet
instances. The main source of information about flag sets is the scala.reflect.api.FlagSets page. - abstract type FlagSet
An abstract type representing sets of flags (like private, final, etc.) that apply to definition trees and symbols
- trait FlagValues extends AnyRef
All possible values that can constitute flag sets.
All possible values that can constitute flag sets. The main source of information about flag sets is the scala.reflect.api.FlagSets page.
- abstract val Flag: Universe.FlagValues
A module that contains all possible values that can constitute flag sets.
- abstract val NoFlags: Universe.FlagSet
The empty set of flags
- implicit abstract def addFlagOps(left: Universe.FlagSet): Universe.FlagOps
The API of
FlagSet
instances.