diff options
author | Paul Phillips <paulp@improving.org> | 2012-02-27 21:58:26 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-02-27 22:12:52 -0800 |
commit | 0bcc8f8f92bbee772924813d00512f3765d4beee (patch) | |
tree | 98e9d0320fb8be7ee91ffe3312631b0c867106e1 /src/compiler/scala/reflect/internal/Trees.scala | |
parent | 07ffa8d66dedcf2bf2ac26d5e31f09922f5479ce (diff) | |
download | scala-0bcc8f8f92bbee772924813d00512f3765d4beee.tar.gz scala-0bcc8f8f92bbee772924813d00512f3765d4beee.tar.bz2 scala-0bcc8f8f92bbee772924813d00512f3765d4beee.zip |
Specialized NonLocalReturnControl.
From the extempore archive of already implemented things.
Diffstat (limited to 'src/compiler/scala/reflect/internal/Trees.scala')
-rw-r--r-- | src/compiler/scala/reflect/internal/Trees.scala | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/compiler/scala/reflect/internal/Trees.scala b/src/compiler/scala/reflect/internal/Trees.scala index 610c6dc493..3782b24c02 100644 --- a/src/compiler/scala/reflect/internal/Trees.scala +++ b/src/compiler/scala/reflect/internal/Trees.scala @@ -230,17 +230,18 @@ trait Trees extends api.Trees { self: SymbolTable => def Bind(sym: Symbol, body: Tree): Bind = Bind(sym.name, body) setSymbol sym - /** 0-1 argument list new, based on a symbol or type. - */ - def New(sym: Symbol, args: Tree*): Tree = - New(sym.tpe, args: _*) + def Try(body: Tree, cases: (Tree, Tree)*): Try = + Try(body, cases.toList map { case (pat, rhs) => CaseDef(pat, EmptyTree, rhs) }, EmptyTree) - def New(tpe: Type, args: Tree*): Tree = - New(TypeTree(tpe), List(args.toList)) + def Throw(tpe: Type, args: Tree*): Throw = + Throw(New(tpe, args: _*)) def Apply(sym: Symbol, args: Tree*): Tree = Apply(Ident(sym), args.toList) + def New(sym: Symbol, args: Tree*): Tree = + New(sym.tpe, args: _*) + def Super(sym: Symbol, mix: TypeName): Tree = Super(This(sym), mix) /** Block factory that flattens directly nested blocks. |