labels are bad apparently
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 30 Nov 2021 16:29:19 +0000 (10:29 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Tue, 30 Nov 2021 16:29:19 +0000 (10:29 -0600)
src/checker.c

index 424f7ac89845387a3ae9d657edb8704f8e3f89e3..85dd3c1ce4427c8f0c1ed0c945d115c569eb0d11 100644 (file)
@@ -391,12 +391,16 @@ CheckStatus check_switch(AstSwitch* switchnode) {
                 }
 
                 case Switch_Kind_Use_Equals: {
+                    // Gross
+                    b32 found = 0;
                     bh_arr_each(CaseToBlock, ctb, switchnode->case_exprs) {
                         if (ctb->original_value == *value) {
                             CHECK(expression, (AstTyped **) &ctb->comparison);
-                            goto value_checked;
+                            found = 1;
+                            break; 
                         }
                     }
+                    if (found) break;
 
                     CaseToBlock ctb;
                     ctb.block = sc->block;
@@ -408,8 +412,6 @@ CheckStatus check_switch(AstSwitch* switchnode) {
                     CHECK(binaryop, &bh_arr_last(switchnode->case_exprs).comparison);
                     break;
                 }
-
-                value_checked:
             }
         }