blob: 97480e49ff4ae0d118686f30eedb0f0f23820c75 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
/* NSC -- new Scala compiler
* Copyright 2005-2013 LAMP/EPFL
* @author Martin Odersky
*/
package dotty.tools
package dotc
package core
package unpickleScala2
import scala.collection.{ mutable, immutable }
/** Scala2 flags, adapted from https://github.com/scala/scala/blob/2.11.x/src/reflect/scala/reflect/internal/Flags.scala
*/
object Scala2Flags {
final val IMPLICIT = 1 << 9
final val FINAL = 1 << 5 // May not be overridden. Note that java final implies much more than scala final.
final val PRIVATE = 1 << 2
final val PROTECTED = 1 << 0
final val SEALED = 1 << 10
final val OVERRIDE = 1 << 1
final val CASE = 1 << 11
final val ABSTRACT = 1 << 3 // abstract class, or used in conjunction with abstract override.
// Note difference to DEFERRED!
final val DEFERRED = 1 << 4 // was `abstract' for members | trait is virtual
final val INTERFACE = 1 << 7 // symbol is an interface (i.e. a trait which defines only abstract methods)
final val MUTABLE = 1 << 12 // symbol is a mutable variable.
final val PARAM = 1 << 13 // symbol is a (value or type) parameter to a method
final val MACRO = 1 << 15 // symbol is a macro definition
final val COVARIANT = 1 << 16 // symbol is a covariant type variable
final val BYNAMEPARAM = 1 << 16 // parameter is by name
final val CONTRAVARIANT = 1 << 17 // symbol is a contravariant type variable
final val ABSOVERRIDE = 1 << 18 // combination of abstract & override
final val LOCAL = 1 << 19 // symbol is local to current class (i.e. private[this] or protected[this]
// pre: PRIVATE or PROTECTED are also set
final val JAVA = 1 << 20 // symbol was defined by a Java class
final val STATIC = 1 << 23 // static field, method or class
final val CASEACCESSOR = 1 << 24 // symbol is a case parameter (or its accessor, or a GADT skolem)
final val TRAIT = 1 << 25 // symbol is a trait
final val DEFAULTPARAM = 1 << 25 // the parameter has a default value
final val PARAMACCESSOR = 1 << 29 // for field definitions generated for primary constructor
// parameters (no matter if it's a 'val' parameter or not)
// for parameters of a primary constructor ('val' or not)
// for the accessor methods generated for 'val' or 'var' parameters
final val LAZY = 1L << 31 // symbol is a lazy val. can't have MUTABLE unless transformed by typer
final val PRESUPER = 1L << 37 // value is evaluated before super call
final val DEFAULTINIT = 1L << 41 // symbol is initialized to the default value: used by -Xcheckinit
final val ARTIFACT = 1L << 46 // symbol should be ignored when typechecking; will be marked ACC_SYNTHETIC in bytecode
// to see which symbols are marked as ARTIFACT, see scaladocs for FlagValues.ARTIFACT
final val DEFAULTMETHOD = 1L << 47 // symbol is a java default method
final val ENUM = 1L << 48 // symbol is an enum
final val PrivateLocal = PRIVATE | LOCAL
final val ProtectedLocal = PROTECTED | LOCAL
final val AccessFlags = PRIVATE | PROTECTED | LOCAL
final val METHOD = 1 << 6 // a method
final val MODULE = 1 << 8 // symbol is module or class implementing a module
final val PACKAGE = 1 << 14 // symbol is a java package
final val CAPTURED = 1 << 16 // variable is accessed from nested function. Set by LambdaLift.
final val LABEL = 1 << 17 // method symbol is a label. Set by TailCall
final val INCONSTRUCTOR = 1 << 17 // class symbol is defined in this/superclass constructor.
final val SYNTHETIC = 1 << 21 // symbol is compiler-generated (compare with ARTIFACT)
final val STABLE = 1 << 22 // functions that are assumed to be stable
// (typically, access methods for valdefs)
// or classes that do not contain abstract types.
final val BRIDGE = 1 << 26 // function is a bridge method. Set by Erasure
final val ACCESSOR = 1 << 27 // a value or variable accessor (getter or setter)
final val SUPERACCESSOR = 1 << 28 // a super accessor
final val MODULEVAR = 1 << 30 // for variables: is the variable caching a module value
final val IS_ERROR = 1L << 32 // symbol is an error symbol
final val OVERLOADED = 1L << 33 // symbol is overloaded
final val LIFTED = 1L << 34 // class has been lifted out to package level
// local value has been lifted out to class level
// todo: make LIFTED = latePRIVATE?
final val MIXEDIN = 1L << 35 // term member has been mixed in
final val EXISTENTIAL = 1L << 35 // type is an existential parameter or skolem
final val EXPANDEDNAME = 1L << 36 // name has been expanded with class suffix
final val IMPLCLASS = 1L << 37 // symbol is an implementation class
final val TRANS_FLAG = 1L << 38 // transient flag guaranteed to be reset after each phase.
final val LOCKED = 1L << 39 // temporary flag to catch cyclic dependencies
final val SPECIALIZED = 1L << 40 // symbol is a generated specialized member
final val VBRIDGE = 1L << 42 // symbol is a varargs bridge
final val VARARGS = 1L << 43 // symbol is a Java-style varargs method
final val TRIEDCOOKING = 1L << 44 // `Cooking` has been tried on this symbol
// A Java method's type is `cooked` by transforming raw types to existentials
final val SYNCHRONIZED = 1L << 45 // symbol is a method which should be marked ACC_SYNCHRONIZED
final val IMPLICIT_PKL = (1 << 0)
final val FINAL_PKL = (1 << 1)
final val PRIVATE_PKL = (1 << 2)
final val PROTECTED_PKL = (1 << 3)
final val SEALED_PKL = (1 << 4)
final val OVERRIDE_PKL = (1 << 5)
final val CASE_PKL = (1 << 6)
final val ABSTRACT_PKL = (1 << 7)
final val DEFERRED_PKL = (1 << 8)
final val METHOD_PKL = (1 << 9)
final val MODULE_PKL = (1 << 10)
final val INTERFACE_PKL = (1 << 11)
}
|