Make trailing else on switch fix pass on to multiple when switches

This commit is contained in:
Chris Hoffman 2010-02-22 19:17:54 -06:00
parent a64afe6162
commit fdffacfb40
3 changed files with 13 additions and 2 deletions

View File

@ -1248,7 +1248,7 @@
// Rewrite a chain of IfNodes to add a default case as the final else. // Rewrite a chain of IfNodes to add a default case as the final else.
add_else: function add_else(exprs, statement) { add_else: function add_else(exprs, statement) {
if (this.is_chain()) { if (this.is_chain()) {
this.else_body.add_else(exprs); this.else_body.add_else(exprs, statement);
} else { } else {
if (!(statement)) { if (!(statement)) {
exprs = exprs.unwrap(); exprs = exprs.unwrap();

View File

@ -987,7 +987,7 @@ IfNode: exports.IfNode: inherit Node, {
# Rewrite a chain of IfNodes to add a default case as the final else. # Rewrite a chain of IfNodes to add a default case as the final else.
add_else: (exprs, statement) -> add_else: (exprs, statement) ->
if @is_chain() if @is_chain()
@else_body.add_else exprs @else_body.add_else exprs, statement
else else
exprs: exprs.unwrap() unless statement exprs: exprs.unwrap() unless statement
@children.push @else_body: exprs @children.push @else_body: exprs

View File

@ -51,3 +51,14 @@ switch "word"
result: true unless false result: true unless false
ok result ok result
result: false
switch "word"
when "one thing"
do_something()
when "other thing"
do_something()
else
result: true unless false
ok result