mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-04 06:38:47 +00:00
Commit 1000 🎉🎂
This commit is contained in:
+8
-6
@@ -562,6 +562,9 @@ struct TypeAndToken {
|
|||||||
};
|
};
|
||||||
|
|
||||||
void add_constant_switch_case(Checker *c, Map<TypeAndToken> *seen, Operand operand, bool use_expr = true) {
|
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) {
|
if (operand.value.kind == ExactValue_Invalid) {
|
||||||
return;
|
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);
|
add_constant_switch_case(c, &seen, x, use_expr);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (lhs.mode == Addressing_Constant) {
|
add_constant_switch_case(c, &seen, lhs);
|
||||||
add_constant_switch_case(c, &seen, lhs);
|
if (op == Token_LtEq) {
|
||||||
}
|
|
||||||
if (rhs.mode == Addressing_Constant && op == Token_LtEq) {
|
|
||||||
add_constant_switch_case(c, &seen, rhs);
|
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) {
|
if (first_default != nullptr) {
|
||||||
TokenPos pos = ast_node_token(first_default).pos;
|
TokenPos pos = ast_node_token(first_default).pos;
|
||||||
error(stmt,
|
error(stmt,
|
||||||
"Multiple 'default' clauses\n"
|
"Multiple 'default' clauses\n"
|
||||||
"\tfirst at %.*s(%td:%td)", LIT(pos.file), pos.line, pos.column);
|
"\tfirst at %.*s(%td:%td)",
|
||||||
|
LIT(pos.file), pos.line, pos.column);
|
||||||
} else {
|
} else {
|
||||||
first_default = default_stmt;
|
first_default = default_stmt;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user