summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/Printers.scala
diff options
context:
space:
mode:
authorVladimirNik <vladimir.nikolaev9@gmail.com>2014-01-07 03:48:43 +0400
committerVladimirNik <vladimir.nikolaev9@gmail.com>2014-01-07 03:48:43 +0400
commit68ba3efba997593ee24d1d72512ee4120b8fca6b (patch)
tree5b8a7744b20762f4b4fc79d1d39bae58899effcb /src/reflect/scala/reflect/internal/Printers.scala
parent2357e5dace20be5c7a2df94a7078b1c3bd4379db (diff)
downloadscala-68ba3efba997593ee24d1d72512ee4120b8fca6b.tar.gz
scala-68ba3efba997593ee24d1d72512ee4120b8fca6b.tar.bz2
scala-68ba3efba997593ee24d1d72512ee4120b8fca6b.zip
Annotated trees processing is modified
1. Problem with multiple parameter lists in annotations is resolved 2. Tests for Annotated trees are added
Diffstat (limited to 'src/reflect/scala/reflect/internal/Printers.scala')
-rw-r--r--src/reflect/scala/reflect/internal/Printers.scala39
1 files changed, 17 insertions, 22 deletions
diff --git a/src/reflect/scala/reflect/internal/Printers.scala b/src/reflect/scala/reflect/internal/Printers.scala
index 8195b41df6..d602c19826 100644
--- a/src/reflect/scala/reflect/internal/Printers.scala
+++ b/src/reflect/scala/reflect/internal/Printers.scala
@@ -297,19 +297,6 @@ trait Printers extends api.Printers { self: SymbolTable =>
print("this")
}
- protected def printAnnotated(tree: Annotated)(printArg: => Unit) {
- val Annotated(Apply(Select(New(tpt), nme.CONSTRUCTOR), args), atree) = tree
-
- def printAnnot() {
- print("@", tpt)
- if (args.nonEmpty)
- printRow(args, "(", ",", ")")
- }
- printArg
- printAnnot()
- }
-
-
def printTree(tree: Tree) {
tree match {
case EmptyTree =>
@@ -473,7 +460,13 @@ trait Printers extends api.Printers { self: SymbolTable =>
}
case an @ Annotated(Apply(Select(New(tpt), nme.CONSTRUCTOR), args), tree) =>
- printAnnotated(an)(print(tree, if (tree.isType) " " else ": "))
+ def printAnnot() {
+ print("@", tpt)
+ if (args.nonEmpty)
+ printRow(args, "(", ",", ")")
+ }
+ print(tree, if (tree.isType) " " else ": ")
+ printAnnot()
case SingletonTypeTree(ref) =>
print(ref, ".type")
@@ -677,7 +670,11 @@ trait Printers extends api.Printers { self: SymbolTable =>
override def printAnnotations(tree: MemberDef) {
val annots = tree.mods.annotations
- annots foreach {
+ annots foreach {annot => printAnnot(annot); print(" ")}
+ }
+
+ protected def printAnnot(tree: Tree) {
+ tree match {
case treeInfo.Applied(core, _, argss) =>
print("@")
core match {
@@ -685,9 +682,8 @@ trait Printers extends api.Printers { self: SymbolTable =>
case _ =>
}
printArgss(argss)
- print(" ")
case _ => super.printTree(tree)
- }
+ }
}
override def printTree(tree: Tree) {
@@ -972,11 +968,10 @@ trait Printers extends api.Printers { self: SymbolTable =>
print(printValue)
}
- case an @ Annotated(Apply(Select(New(tpt), nme.CONSTRUCTOR), args), tree) =>
- printAnnotated(an) {
- val printParentheses = needsParentheses(tree)()
- parenthesize(printParentheses) { print(tree) }; print(if (tree.isType) " " else ": ")
- }
+ case an @ Annotated(ap, tree) =>
+ val printParentheses = needsParentheses(tree)()
+ parenthesize(printParentheses) { print(tree) }; print(if (tree.isType) " " else ": ")
+ printAnnot(ap)
case SelectFromTypeTree(qualifier, selector) =>
print("(", qualifier, ")#", blankForOperatorName(selector), printedName(selector))