Skip to content

Commit be1f099

Browse files
authored
Merge pull request #1439 from cswinter/parsedtry
Fix #1367: Add ParsedTry case to UntypedTree{Copier,Map,Accumulator}
2 parents 01bd948 + 28bc8e8 commit be1f099

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

src/dotty/tools/dotc/ast/untpd.scala

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,11 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
281281
case tree: ModuleDef if (name eq tree.name) && (impl eq tree.impl) => tree
282282
case _ => untpd.ModuleDef(name, impl).withPos(tree.pos)
283283
}
284+
def ParsedTry(tree: Tree)(expr: Tree, handler: Tree, finalizer: Tree) = tree match {
285+
case tree: ParsedTry
286+
if (expr eq tree.expr) && (handler eq tree.handler) && (finalizer eq tree.finalizer) => tree
287+
case _ => untpd.ParsedTry(expr, handler, finalizer).withPos(tree.pos)
288+
}
284289
def PolyTypeDef(tree: Tree)(name: TypeName, tparams: List[TypeDef], rhs: Tree) = tree match {
285290
case tree: PolyTypeDef if (name eq tree.name) && (tparams eq tree.tparams) && (rhs eq tree.rhs) => tree
286291
case _ => new PolyTypeDef(name, tparams, rhs).withPos(tree.pos)
@@ -359,6 +364,8 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
359364
override def transform(tree: Tree)(implicit ctx: Context): Tree = tree match {
360365
case ModuleDef(name, impl) =>
361366
cpy.ModuleDef(tree)(name, transformSub(impl))
367+
case ParsedTry(expr, handler, finalizer) =>
368+
cpy.ParsedTry(tree)(transform(expr), transform(handler), transform(finalizer))
362369
case SymbolLit(str) =>
363370
cpy.SymbolLit(tree)(str)
364371
case InterpolatedString(id, strings, elems) =>
@@ -404,6 +411,8 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
404411
override def foldOver(x: X, tree: Tree)(implicit ctx: Context): X = tree match {
405412
case ModuleDef(name, impl) =>
406413
this(x, impl)
414+
case ParsedTry(expr, handler, finalizer) =>
415+
this(this(this(x, expr), handler), finalizer)
407416
case SymbolLit(str) =>
408417
x
409418
case InterpolatedString(id, strings, elems) =>

tests/repl/toplevelTry.check

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
scala> try { 0 } catch { _: Throwable => 1 }
2+
res0: Int = 0
3+
scala> :quit

0 commit comments

Comments
 (0)