|
|
@ -168,10 +168,18 @@ fn generate_continue() -> String { |
|
|
|
|
|
|
|
|
|
|
|
fn generate_match(subject: Expression, arms: Vec<MatchArm>) -> String { |
|
|
|
fn generate_match(subject: Expression, arms: Vec<MatchArm>) -> String { |
|
|
|
let mut out_str = format!("switch ({E}) {{\n", E = generate_expression(subject)); |
|
|
|
let mut out_str = format!("switch ({E}) {{\n", E = generate_expression(subject)); |
|
|
|
for (case, statement) in arms { |
|
|
|
for arm in arms { |
|
|
|
out_str += &format!("case {}:\n", generate_expression(case)); |
|
|
|
match arm { |
|
|
|
out_str += &format!("{}\n", &generate_statement(statement)); |
|
|
|
MatchArm::Case(expr, statement) => { |
|
|
|
out_str += "break;"; |
|
|
|
out_str += &format!("case {}:\n", generate_expression(expr)); |
|
|
|
|
|
|
|
out_str += &format!("{}\n", &generate_statement(statement)); |
|
|
|
|
|
|
|
out_str += "break;"; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
MatchArm::Default(statement) => { |
|
|
|
|
|
|
|
out_str += "default:\n"; |
|
|
|
|
|
|
|
out_str += &format!("{}\n", &generate_statement(statement)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
out_str += "}"; |
|
|
|
out_str += "}"; |
|
|
|