From e26fd721b9d4f902be68a93836e21e05ddbda931 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Wed, 19 Feb 2014 15:31:15 +0100 Subject: SI-8306: handle SWITCH nodes with just default case Handle properly SWITCH nodes that contain just a default case in optimizer (ConstantOptimization). SWITCH with just default case is expressed as a node with empty tags and exactly one label. We can handle such nodes easily by introducing a shortcut in logic that computes reachableLabels. Add a test case which triggers patmat to generate SWITCH node with just a default case. Fixes SI-8306. --- test/files/pos/t8306.flags | 1 + test/files/pos/t8306.scala | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 test/files/pos/t8306.flags create mode 100644 test/files/pos/t8306.scala (limited to 'test') diff --git a/test/files/pos/t8306.flags b/test/files/pos/t8306.flags new file mode 100644 index 0000000000..49d036a887 --- /dev/null +++ b/test/files/pos/t8306.flags @@ -0,0 +1 @@ +-optimize diff --git a/test/files/pos/t8306.scala b/test/files/pos/t8306.scala new file mode 100644 index 0000000000..e04b054eb9 --- /dev/null +++ b/test/files/pos/t8306.scala @@ -0,0 +1,8 @@ +class Si8306 { + def foo: Int = 123 + lazy val extension: Int = + foo match { + case idx if idx != -1 => 15 + case _ => 17 + } +} -- cgit v1.2.3