summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2012-07-24 15:47:58 +0200
committerEugene Burmako <xeno.by@gmail.com>2012-07-24 23:59:48 +0200
commite6f3a8f6d3d4607d60e74ab8658a40fb55915d69 (patch)
tree4c03f419957fdfbd5057065b3f911646067b82c5 /src
parentf5f7570778586e8230439c4dbacb5f49dea185ff (diff)
downloadscala-e6f3a8f6d3d4607d60e74ab8658a40fb55915d69.tar.gz
scala-e6f3a8f6d3d4607d60e74ab8658a40fb55915d69.tar.bz2
scala-e6f3a8f6d3d4607d60e74ab8658a40fb55915d69.zip
SI-6112 exposes symbol mutators in macro universe
In makro.Universe we expose the most hardcore fragments of the compiler API that don't make sense / can't be made use of in runtime reflection API. makro.Universe is already refining Tree to include setters for symbols, types and positions. Now we bring Symbol up to speed.
Diffstat (limited to 'src')
-rw-r--r--src/reflect/scala/reflect/internal/Symbols.scala1
-rw-r--r--src/reflect/scala/reflect/makro/Universe.scala11
2 files changed, 10 insertions, 2 deletions
diff --git a/src/reflect/scala/reflect/internal/Symbols.scala b/src/reflect/scala/reflect/internal/Symbols.scala
index 10d02376b1..6054af0ac2 100644
--- a/src/reflect/scala/reflect/internal/Symbols.scala
+++ b/src/reflect/scala/reflect/internal/Symbols.scala
@@ -78,6 +78,7 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
def asType: Type = tpe
def asTypeIn(site: Type): Type = site.memberType(this)
def asTypeConstructor: Type = typeConstructor
+ def setFlags(flags: FlagSet): this.type = setInternalFlags(flags)
def setInternalFlags(flag: Long): this.type = { setFlag(flag); this }
def setTypeSignature(tpe: Type): this.type = { setInfo(tpe); this }
def getAnnotations: List[AnnotationInfo] = { initialize; annotations }
diff --git a/src/reflect/scala/reflect/makro/Universe.scala b/src/reflect/scala/reflect/makro/Universe.scala
index a676f7f1de..d88e7e0bb8 100644
--- a/src/reflect/scala/reflect/makro/Universe.scala
+++ b/src/reflect/scala/reflect/makro/Universe.scala
@@ -24,8 +24,15 @@ abstract class Universe extends scala.reflect.api.Universe {
*/
trait SymbolContextApi extends SymbolApi with AttachableApi { this: Symbol =>
- // [Eugene++ to Martin] should we also add mutability methods here (similarly to what's done below for trees)?
- // I'm talking about `setAnnotations` and friends
+ def setFlags(flags: FlagSet): this.type
+
+ def setTypeSignature(tpe: Type): this.type
+
+ def setAnnotations(annots: AnnotationInfo*): this.type
+
+ def setName(name: Name): this.type
+
+ def setPrivateWithin(sym: Symbol): this.type
}
// Tree extensions ---------------------------------------------------------------