aboutsummaryrefslogtreecommitdiff
path: root/src/check_stmt.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2019-03-06 16:23:50 +0000
committergingerBill <bill@gingerbill.org>2019-03-06 16:23:50 +0000
commit15d3f4c190abbeaef2cd6920d16aacaf71c35fe1 (patch)
treed9155251f3a95a9da92b4d23c6412000160e7a2c /src/check_stmt.cpp
parent1b3ec66fa2cf6f9a8f15d9c1988db677ac1a6fa6 (diff)
Allow implicit selector expressions in switch statements
Diffstat (limited to 'src/check_stmt.cpp')
-rw-r--r--src/check_stmt.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp
index c861cfdf3..cead61ce8 100644
--- a/src/check_stmt.cpp
+++ b/src/check_stmt.cpp
@@ -686,14 +686,14 @@ void check_switch_stmt(CheckerContext *ctx, Ast *node, u32 mod_flags) {
ast_node(ie, BinaryExpr, expr);
Operand lhs = {};
Operand rhs = {};
- check_expr(ctx, &lhs, ie->left);
+ check_expr_with_type_hint(ctx, &lhs, ie->left, x.type);
if (x.mode == Addressing_Invalid) {
continue;
}
if (lhs.mode == Addressing_Invalid) {
continue;
}
- check_expr(ctx, &rhs, ie->right);
+ check_expr_with_type_hint(ctx, &rhs, ie->right, x.type);
if (rhs.mode == Addressing_Invalid) {
continue;
}
@@ -732,7 +732,7 @@ void check_switch_stmt(CheckerContext *ctx, Ast *node, u32 mod_flags) {
if (is_type_typeid(x.type)) {
check_expr_or_type(ctx, &y, expr, x.type);
} else {
- check_expr(ctx, &y, expr);
+ check_expr_with_type_hint(ctx, &y, expr, x.type);
}
if (x.mode == Addressing_Invalid ||