diff options
| author | gingerBill <bill@gingerbill.org> | 2018-02-17 19:15:58 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2018-02-17 19:15:58 +0000 |
| commit | cabb2bb9920096e8a91ac4ed36c5778f2f114d98 (patch) | |
| tree | b58aebfdd5f96ca0f2046a24af26c825ee605fbd /src | |
| parent | d560f6c920095465be71f19b3e34c836966ff5c6 (diff) | |
Commit 1000 🎉🎂
Diffstat (limited to 'src')
| -rw-r--r-- | src/check_stmt.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp index 6961d6b2e..2d99a4fbc 100644 --- a/src/check_stmt.cpp +++ b/src/check_stmt.cpp @@ -562,6 +562,9 @@ struct TypeAndToken { }; void add_constant_switch_case(Checker *c, Map<TypeAndToken> *seen, Operand operand, bool use_expr = true) { + if (operand.mode != Addressing_Constant) { + return; + } if (operand.value.kind == ExactValue_Invalid) { return; } @@ -767,10 +770,8 @@ void check_switch_stmt(Checker *c, AstNode *node, u32 mod_flags) { add_constant_switch_case(c, &seen, x, use_expr); } } else { - if (lhs.mode == Addressing_Constant) { - add_constant_switch_case(c, &seen, lhs); - } - if (rhs.mode == Addressing_Constant && op == Token_LtEq) { + add_constant_switch_case(c, &seen, lhs); + if (op == Token_LtEq) { add_constant_switch_case(c, &seen, rhs); } } @@ -939,8 +940,9 @@ void check_type_switch_stmt(Checker *c, AstNode *node, u32 mod_flags) { if (first_default != nullptr) { TokenPos pos = ast_node_token(first_default).pos; error(stmt, - "Multiple 'default' clauses\n" - "\tfirst at %.*s(%td:%td)", LIT(pos.file), pos.line, pos.column); + "Multiple 'default' clauses\n" + "\tfirst at %.*s(%td:%td)", + LIT(pos.file), pos.line, pos.column); } else { first_default = default_stmt; } |