diff options
author | Nicolas Stucki <nicolas.stucki@gmail.com> | 2016-08-15 11:01:43 +0200 |
---|---|---|
committer | Nicolas Stucki <nicolas.stucki@gmail.com> | 2016-08-15 11:03:07 +0200 |
commit | 0b2ddd0df33bf529b062dc6167b50a33fa5f84b7 (patch) | |
tree | 454846615abc9ad724d918516641d95908385553 | |
parent | 3265323f96f69bded3edb832519825bc7c89e40f (diff) | |
download | dotty-0b2ddd0df33bf529b062dc6167b50a33fa5f84b7.tar.gz dotty-0b2ddd0df33bf529b062dc6167b50a33fa5f84b7.tar.bz2 dotty-0b2ddd0df33bf529b062dc6167b50a33fa5f84b7.zip |
Fix #1432: Fix desugaring of Bind(WILDCARD, _).
-rw-r--r-- | src/dotty/tools/dotc/ast/Desugar.scala | 4 | ||||
-rw-r--r-- | tests/pos/i1432.scala | 3 | ||||
-rw-r--r-- | tests/run/i1432.check | 2 | ||||
-rw-r--r-- | tests/run/i1432.scala | 11 |
4 files changed, 18 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/ast/Desugar.scala b/src/dotty/tools/dotc/ast/Desugar.scala index a9705e209..8a4b9cfe8 100644 --- a/src/dotty/tools/dotc/ast/Desugar.scala +++ b/src/dotty/tools/dotc/ast/Desugar.scala @@ -1007,8 +1007,8 @@ object desugar { def add(named: NameTree, t: Tree): Unit = if (!seenName(named.name)) buf += ((named, t)) def collect(tree: Tree): Unit = tree match { - case Bind(nme.WILDCARD, _) => - collect(tree) + case Bind(nme.WILDCARD, tree1) => + collect(tree1) case tree @ Bind(_, Typed(tree1, tpt)) if !mayBeTypePat(tpt) => add(tree, tpt) collect(tree1) diff --git a/tests/pos/i1432.scala b/tests/pos/i1432.scala new file mode 100644 index 000000000..fb9d4c6ab --- /dev/null +++ b/tests/pos/i1432.scala @@ -0,0 +1,3 @@ +object Foo { + val _@a = 1 // This entered in an infinite loop +} diff --git a/tests/run/i1432.check b/tests/run/i1432.check new file mode 100644 index 000000000..ace7d40d3 --- /dev/null +++ b/tests/run/i1432.check @@ -0,0 +1,2 @@ +Some(foo) +foo diff --git a/tests/run/i1432.scala b/tests/run/i1432.scala new file mode 100644 index 000000000..e71b76f8e --- /dev/null +++ b/tests/run/i1432.scala @@ -0,0 +1,11 @@ +object Test { + + def main(args: Array[String]): Unit = { + val someFoo = Some("foo") + val _ @ bar = someFoo + val _ @ Some(baz) = someFoo + println(bar) + println(baz) + } + +} |