diff options
author | Adrian Thurston <thurston@complang.org> | 2015-06-17 15:22:46 -0400 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2015-06-17 15:22:46 -0400 |
commit | 04c2fcda540a4524cfdb08b6a3ea3691cca808e8 (patch) | |
tree | 808492a7401ded01b2a3074091eead885a4be460 | |
parent | 9e75a50f3e953acdc6de8d0b8644b58ae4f96826 (diff) | |
download | colm-04c2fcda540a4524cfdb08b6a3ea3691cca808e8.tar.gz |
allow switch statements to be wrapped in {}colm-barracuda-v4
Required for unambiguously nesting switch switch statements.
-rw-r--r-- | src/colm.lm | 3 | ||||
-rw-r--r-- | src/loadcolm.cc | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/colm.lm b/src/colm.lm index 4104140f..30a50c31 100644 --- a/src/colm.lm +++ b/src/colm.lm @@ -453,7 +453,8 @@ def statement | [var_def opt_def_init] :VarDef commit | [FOR id COLON type_ref IN iter_call block_or_single] :For commit | [IF code_expr block_or_single elsif_list] :If commit -| [SWITCH var_ref case_clause_list] :Switch +| [SWITCH var_ref case_clause_list] :SwitchUnder +| [SWITCH var_ref COPEN case_clause_list CCLOSE] :SwitchBlock | [WHILE code_expr block_or_single] :While commit | [var_ref EQUALS code_expr] :LhsVarRef commit | [YIELD var_ref] :Yield commit diff --git a/src/loadcolm.cc b/src/loadcolm.cc index 494c1447..4bb773d3 100644 --- a/src/loadcolm.cc +++ b/src/loadcolm.cc @@ -245,7 +245,8 @@ struct LoadColm stmt = LangStmt::cons( LangStmt::IfType, expr, stmtList, elsifList ); break; } - case statement::Switch: { + case statement::SwitchUnder: + case statement::SwitchBlock: { pushScope(); stmt = walkCaseClauseList( Statement.case_clause_list(), Statement.var_ref() ); popScope(); |