summaryrefslogtreecommitdiff
path: root/src/compiler/scala/reflect/internal/Trees.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2011-07-30 21:04:43 +0000
committerMartin Odersky <odersky@gmail.com>2011-07-30 21:04:43 +0000
commitc0db3f2d065e22796a2c917c6c3b0f14f3982cf0 (patch)
treea21a5982ec9d0a6311843b2e1397192a3a64aecd /src/compiler/scala/reflect/internal/Trees.scala
parentd0c5e4be5554f4862da0690ac0315a4433fcb5d5 (diff)
downloadscala-c0db3f2d065e22796a2c917c6c3b0f14f3982cf0.tar.gz
scala-c0db3f2d065e22796a2c917c6c3b0f14f3982cf0.tar.bz2
scala-c0db3f2d065e22796a2c917c6c3b0f14f3982cf0.zip
LiftCode works again, now integrated with new r...
LiftCode works again, now integrated with new reflection library. Other changes: def Literal(x: Any) has been deprecated, and all its uses removed. Modifiers has lost positions as fourth case class argument; is now a field, mirroring Tree.pos (this removes junk in patterns and makes reification simpler). Review by extempore.
Diffstat (limited to 'src/compiler/scala/reflect/internal/Trees.scala')
-rw-r--r--src/compiler/scala/reflect/internal/Trees.scala26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/compiler/scala/reflect/internal/Trees.scala b/src/compiler/scala/reflect/internal/Trees.scala
index ef80b5d479..5ba1a1221e 100644
--- a/src/compiler/scala/reflect/internal/Trees.scala
+++ b/src/compiler/scala/reflect/internal/Trees.scala
@@ -22,8 +22,13 @@ trait Trees extends api.Trees { self: SymbolTable =>
*/
case class Modifiers(flags: Long,
privateWithin: Name,
- annotations: List[Tree],
- positions: Map[Long, Position]) extends AbsModifiers with HasFlags {
+ annotations: List[Tree]) extends AbsModifiers with HasFlags {
+
+ var positions: Map[Long, Position] = Map()
+
+ def setPositions(poss: Map[Long, Position]): this.type = {
+ positions = poss; this
+ }
/* Abstract types from HasFlags. */
type FlagsType = Long
@@ -40,42 +45,43 @@ trait Trees extends api.Trees { self: SymbolTable =>
def & (flag: Long): Modifiers = {
val flags1 = flags & flag
if (flags1 == flags) this
- else Modifiers(flags1, privateWithin, annotations, positions)
+ else Modifiers(flags1, privateWithin, annotations) setPositions positions
}
def &~ (flag: Long): Modifiers = {
val flags1 = flags & (~flag)
if (flags1 == flags) this
- else Modifiers(flags1, privateWithin, annotations, positions)
+ else Modifiers(flags1, privateWithin, annotations) setPositions positions
}
def | (flag: Long): Modifiers = {
val flags1 = flags | flag
if (flags1 == flags) this
- else Modifiers(flags1, privateWithin, annotations, positions)
+ else Modifiers(flags1, privateWithin, annotations) setPositions positions
}
def withAnnotations(annots: List[Tree]) =
if (annots.isEmpty) this
- else copy(annotations = annotations ::: annots)
+ else copy(annotations = annotations ::: annots) setPositions positions
+
def withPosition(flag: Long, position: Position) =
- copy(positions = positions + (flag -> position))
+ copy() setPositions positions + (flag -> position)
override def hasModifier(mod: Modifier.Value) =
hasFlag(flagOfModifier(mod))
override def allModifiers: Set[Modifier.Value] =
Modifier.values filter hasModifier
override def mapAnnotations(f: List[Tree] => List[Tree]): Modifiers =
- Modifiers(flags, privateWithin, f(annotations), positions)
+ Modifiers(flags, privateWithin, f(annotations)) setPositions positions
override def toString = "Modifiers(%s, %s, %s)".format(hasFlagsToString(-1L), annotations mkString ", ", positions)
}
- def Modifiers(flags: Long, privateWithin: Name): Modifiers = Modifiers(flags, privateWithin, List(), Map.empty)
+ def Modifiers(flags: Long, privateWithin: Name): Modifiers = Modifiers(flags, privateWithin, List())
def Modifiers(flags: Long): Modifiers = Modifiers(flags, tpnme.EMPTY)
def Modifiers(mods: Set[Modifier.Value],
privateWithin: Name,
annotations: List[Tree]): Modifiers = {
val flagSet = mods map flagOfModifier
- Modifiers((0L /: flagSet)(_ | _), privateWithin, annotations, Map.empty)
+ Modifiers((0L /: flagSet)(_ | _), privateWithin, annotations)
}
lazy val NoMods = Modifiers(0)