blob: cbfe91e59bae433aa37d4c1607930caacf149987 (
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
|
package scala.reflect.api
import collection.{ immutable, mutable }
sealed abstract class Modifier {
def name: String
def isKeyword: Boolean
def sourceString: String = if (isKeyword) "`" + name + "`" else name
override def equals(that: Any) = this eq that.asInstanceOf[AnyRef]
override def hashCode = name.hashCode
override def toString = name
}
final class SymbolModifier private (val name: String, val isKeyword: Boolean) extends Modifier {
def this(name: String) = this(name, false)
}
final class SourceModifier private (val name: String) extends Modifier {
def isKeyword = true
}
object SymbolModifier {
private val seen = mutable.ListBuffer[SymbolModifier]()
private[api] def apply(name: String): SymbolModifier = {
val mod = name match {
case "case" | "trait" => new SymbolModifier(name, isKeyword = true)
case _ => new SymbolModifier(name)
}
seen += mod
mod
}
private[api] def all = seen.toList
}
object SourceModifier {
private val seen = mutable.ListBuffer[SourceModifier]()
private[api] def apply(name: String): SourceModifier = {
val mod = new SourceModifier(name)
seen += mod
mod
}
private[api] def all = seen.toList
}
object Modifier extends immutable.Set[Modifier] {
val `abstract` = SourceModifier("abstract")
val `final` = SourceModifier("final")
val `implicit` = SourceModifier("implicit")
val `lazy` = SourceModifier("lazy")
val `macro` = SourceModifier("macro")
val `override` = SourceModifier("override")
val `private` = SourceModifier("private")
val `protected` = SourceModifier("protected")
val `sealed` = SourceModifier("sealed")
val `case` = SymbolModifier("case")
val `trait` = SymbolModifier("trait")
val abstractOverride = SymbolModifier("abstractOverride")
val bynameParameter = SymbolModifier("bynameParameter")
val caseAccessor = SymbolModifier("caseAccessor")
val contravariant = SymbolModifier("contravariant")
val covariant = SymbolModifier("covariant")
val defaultInit = SymbolModifier("defaultInit")
val defaultParameter = SymbolModifier("defaultParameter")
val deferred = SymbolModifier("deferred")
val interface = SymbolModifier("interface")
val java = SymbolModifier("java")
val local = SymbolModifier("local")
val mutable = SymbolModifier("mutable")
val paramAccessor = SymbolModifier("paramAccessor")
val parameter = SymbolModifier("parameter")
val preSuper = SymbolModifier("preSuper")
val static = SymbolModifier("static")
val sourceModifiers: Set[SourceModifier] = SourceModifier.all.toSet
val symbolModifiers: Set[SymbolModifier] = SymbolModifier.all.toSet
val allModifiers: Set[Modifier] = sourceModifiers ++ symbolModifiers
def values = allModifiers
def contains(key: Modifier) = allModifiers(key)
def iterator = allModifiers.iterator
def -(elem: Modifier) = allModifiers - elem
def +(elem: Modifier) = allModifiers + elem
}
|