ci: fix sanitize job failures after 02b889d

pull/13777/head
Delyan Angelov 2022-03-19 21:43:42 +02:00
parent 02b889dac3
commit c05634ebd1
No known key found for this signature in database
GPG Key ID: 66886C0F12D595ED
2 changed files with 8 additions and 1 deletions

View File

@ -183,6 +183,7 @@ fn (mut g Gen) match_expr_sumtype(node ast.MatchExpr, is_expr bool, cond_var str
} }
fn (mut g Gen) match_expr_switch(node ast.MatchExpr, is_expr bool, cond_var string, tmp_var string, enum_typ ast.TypeSymbol) { fn (mut g Gen) match_expr_switch(node ast.MatchExpr, is_expr bool, cond_var string, tmp_var string, enum_typ ast.TypeSymbol) {
cname := '${enum_typ.cname}__'
mut covered_enum := []string{cap: (enum_typ.info as ast.Enum).vals.len} // collects missing enum variant branches to avoid cstrict errors mut covered_enum := []string{cap: (enum_typ.info as ast.Enum).vals.len} // collects missing enum variant branches to avoid cstrict errors
mut range_branches := []ast.MatchBranch{cap: node.branches.len} // branches have RangeExpr cannot emit as switch case branch, we handle it in default branch mut range_branches := []ast.MatchBranch{cap: node.branches.len} // branches have RangeExpr cannot emit as switch case branch, we handle it in default branch
mut default_generated := false mut default_generated := false
@ -191,6 +192,11 @@ fn (mut g Gen) match_expr_switch(node ast.MatchExpr, is_expr bool, cond_var stri
g.indent++ g.indent++
for branch in node.branches { for branch in node.branches {
if branch.is_else { if branch.is_else {
for val in (enum_typ.info as ast.Enum).vals {
if val !in covered_enum {
g.writeln('case $cname$val:')
}
}
g.writeln('default:') g.writeln('default:')
default_generated = true default_generated = true
if range_branches.len > 0 { if range_branches.len > 0 {

View File

@ -1,4 +1,5 @@
case main__Enum__e1: case main__Enum__e1:
case main__Enum__e4: case main__Enum__e4:
case main__Enum__e6:
default: default:
(e >= 4 && e <= 5) (e >= 4 && e <= 5)