aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/ast/TreeInfo.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-08-03 20:50:37 +0200
committerMartin Odersky <odersky@gmail.com>2014-08-03 21:02:11 +0200
commite25232d5b4fdc1ae7bc5a44ad06e31a00699dbaf (patch)
tree26c3ce90d09933debc6a991d10e708cc65a84157 /src/dotty/tools/dotc/ast/TreeInfo.scala
parent168e4f18f0b2f8ac0e3d7ef5128797303dec6a44 (diff)
downloaddotty-e25232d5b4fdc1ae7bc5a44ad06e31a00699dbaf.tar.gz
dotty-e25232d5b4fdc1ae7bc5a44ad06e31a00699dbaf.tar.bz2
dotty-e25232d5b4fdc1ae7bc5a44ad06e31a00699dbaf.zip
Annotation decorators for symbols
Added decorators for symbols that can query specific annotations and annotation arguments (for now, -deprecated and -migration are added)
Diffstat (limited to 'src/dotty/tools/dotc/ast/TreeInfo.scala')
-rw-r--r--src/dotty/tools/dotc/ast/TreeInfo.scala12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/ast/TreeInfo.scala b/src/dotty/tools/dotc/ast/TreeInfo.scala
index cc3e53abc..174de4d46 100644
--- a/src/dotty/tools/dotc/ast/TreeInfo.scala
+++ b/src/dotty/tools/dotc/ast/TreeInfo.scala
@@ -103,11 +103,19 @@ trait TreeInfo[T >: Untyped <: Type] { self: Trees.Instance[T] =>
/** The number of arguments in an application */
def numArgs(tree: Tree): Int = unsplice(tree) match {
case Apply(fn, args) => numArgs(fn) + args.length
- case TypeApply(fn, args) => numArgs(fn)
- case Block(stats, expr) => numArgs(expr)
+ case TypeApply(fn, _) => numArgs(fn)
+ case Block(_, expr) => numArgs(expr)
case _ => 0
}
+ /** The (last) list of arguments of an application */
+ def arguments(tree: Tree): List[Tree] = unsplice(tree) match {
+ case Apply(_, args) => args
+ case TypeApply(fn, _) => arguments(fn)
+ case Block(_, expr) => arguments(expr)
+ case _ => Nil
+ }
+
/** Is tree a self constructor call this(...)? I.e. a call to a constructor of the
* same object?
*/