Flag used to distinguish platform-specific implementation details. Trees and symbols which are currently marked ARTIFACT by scalac: * $outer fields and accessors * super accessors * protected accessors * lazy local accessors * bridge methods * default argument getters * evaluation-order preserving locals for right-associative and out-of-order named arguments * catch-expression storing vals * anything else which feels a setFlag(ARTIFACT)
SYNTHETIC
Flag indicating that tree represents a parameter of the primary constructor of some case class or a synthetic member underlying thereof. E.g. here's how 'case class C(val x: Int)' is represented:
trees at end of parser// Scala source: tmpnHkJ3y case class C extends scala.Product with scala.Serializable { <caseaccessor> <paramaccessor> val x: Int = _; def <init>(x: Int) = { super.<init>(); () } } ClassDef( Modifiers(CASE), TypeName("C"), List(), Template( List(Select(Ident(scala), TypeName("Product")), Select(Ident(scala), TypeName("Serializable"))), noSelfType, List( ValDef(Modifiers(CASEACCESSOR | PARAMACCESSOR), TermName("x"), Ident(TypeName("Int")), EmptyTree), DefDef( Modifiers(), nme.CONSTRUCTOR, List(), List(List(ValDef(Modifiers(PARAM | PARAMACCESSOR), TermName("x"), Ident(TypeName("Int")), EmptyTree))), TypeTree(), Block(List(pendingSuperCall), Literal(Constant(())))))))))
Flag indicating that a tree is an interface (i.e. a trait which defines only abstract methods)
Flag indicating that tree represents a member local to current class, i.e. private[this] or protected[this]. This requires having either PRIVATE or PROTECTED set as well.
Flag indicating that tree represents a class or parameter. Both type and value parameters carry the flag.
Flag indicating that tree represents a parameter of the primary constructor of some class or a synthetic member underlying thereof. E.g. here's how 'class C(val x: Int)' is represented:
trees at end of parser// Scala source: tmposDU52 class C extends scala.AnyRef { <paramaccessor> val x: Int = _; def <init>(x: Int) = { super.<init>(); () } } ClassDef( Modifiers(), TypeName("C"), List(), Template( List(Select(Ident(scala), TypeName("AnyRef"))), noSelfType, List( ValDef(Modifiers(PARAMACCESSOR), TermName("x"), Ident(TypeName("Int")), EmptyTree), DefDef( Modifiers(), nme.CONSTRUCTOR, List(), List(List(ValDef(Modifiers(PARAM | PARAMACCESSOR), TermName("x"), Ident(TypeName("Int")), EmptyTree))), TypeTree(), Block(List(pendingSuperCall), Literal(Constant(())))))))))
Flag that indicates methods that are supposed to be stable (e.g. synthetic getters of valdefs).
Flag used to distinguish programmatically generated definitions from user-written ones.
ARTIFACT
Flag indicating that tree represents an enum.
It can only appear at
(Since version 2.11.8) use isJavaEnum
on the corresponding symbol instead
© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.13.0/scala-reflect/scala/reflect/api/FlagSets$FlagValues.html
All possible values that can constitute flag sets. The main source of information about flag sets is the scala.reflect.api.FlagSets page.