diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2019-09-30 12:59:42 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2019-09-30 15:30:55 +0200 |
commit | d33c85dfbe50039a64595829cdcdf0d641042dc6 (patch) | |
tree | 49cc8609b6fd2874b1eb03f18e7cc8811dcf280f | |
parent | 6b9699f0f2e48961af25843eea9b694d043bd352 (diff) |
Diagnose `case` and `default` outside `switch`
-rw-r--r-- | libbuild2/parser.cxx | 3 | ||||
-rw-r--r-- | tests/switch/testscript | 8 |
2 files changed, 10 insertions, 1 deletions
diff --git a/libbuild2/parser.cxx b/libbuild2/parser.cxx index a8abbfb..a6a5a83 100644 --- a/libbuild2/parser.cxx +++ b/libbuild2/parser.cxx @@ -392,7 +392,8 @@ namespace build2 { f = &parser::parse_switch; } - else if (n == "case") + else if (n == "case" || + n == "default") { // Valid ones are handled in parse_switch(). // diff --git a/tests/switch/testscript b/tests/switch/testscript index f6c3753..e0ffe8e 100644 --- a/tests/switch/testscript +++ b/tests/switch/testscript @@ -204,6 +204,14 @@ EOI 1,d EOO +: case-outside +: +$* <<EOI 2>>EOE != 0 +case 1 +EOI +<stdin>:1:1: error: case outside switch +EOE + : default-before-case : $* <<EOI 2>>EOE != 0 |