aboutsummaryrefslogtreecommitdiff
path: root/src/check_stmt.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2018-02-17 19:15:58 +0000
committergingerBill <bill@gingerbill.org>2018-02-17 19:15:58 +0000
commitcabb2bb9920096e8a91ac4ed36c5778f2f114d98 (patch)
treeb58aebfdd5f96ca0f2046a24af26c825ee605fbd /src/check_stmt.cpp
parentd560f6c920095465be71f19b3e34c836966ff5c6 (diff)
Commit 1000 🎉🎂
Diffstat (limited to 'src/check_stmt.cpp')
-rw-r--r--src/check_stmt.cpp14
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;
}