Skip to content

Commit 9263e4f

Browse files
authored
Fix redundant branches in generated switch body, fixes rescript-lang#6671 (rescript-lang#6672)
* Fix redundant branches in generated switch body, fixes rescript-lang#6671 Signed-Off-By: Vincenzo Pellegrini <dev@enzopellegrini.me> * Updated changelog --------- Signed-off-by: Vincenzo Pellegrini <dev@enzopellegrini.me>
1 parent 962e5fb commit 9263e4f

12 files changed

+6
-116
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
- Fix making the static import for the dynamic import of external ffi https://github.com/rescript-lang/rescript-compiler/pull/6664
1818
- Fix local type variables breaking react components. https://github.com/rescript-lang/rescript-compiler/pull/6665
19+
- Fix remove redundant branches in generated switch body. https://github.com/rescript-lang/rescript-compiler/pull/6672
1920

2021
#### :nail-care: Polish
2122

jscomp/core/lam_compile.ml

+5
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,11 @@ and compile_general_cases :
573573
break still should not be printed (it will be continuned)
574574
TOOD: disabled temporarily since it's not perfect yet *)
575575
morph_declare_to_assign cxt (fun cxt declaration ->
576+
(* Exclude cases that are the same as the default if the default is defined *)
577+
let cases = match default with
578+
| Default lam -> List.filter (fun (_, lam1) -> not (Lam.eq_approx lam lam1)) cases
579+
| _ -> cases
580+
in
576581
let default =
577582
match default with
578583
| Complete -> None

jscomp/test/gpr_1438.js

-16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jscomp/test/gpr_1698_test.js

-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jscomp/test/mario_game.js

-19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jscomp/test/ocaml_re_test.js

-17
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jscomp/test/string_test.js

-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jscomp/test/typeof_test.js

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/es6/caml_format.js

-15
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ function parse_sign_and_base(s) {
4646
case 43 :
4747
i = i + 1 | 0;
4848
break;
49-
case 44 :
50-
break;
5149
case 45 :
5250
sign = -1;
5351
i = i + 1 | 0;
@@ -417,19 +415,6 @@ function parse_format(fmt) {
417415
};
418416
_i = j;
419417
continue ;
420-
case 33 :
421-
case 34 :
422-
case 36 :
423-
case 37 :
424-
case 38 :
425-
case 39 :
426-
case 40 :
427-
case 41 :
428-
case 42 :
429-
case 44 :
430-
case 47 :
431-
exit = 1;
432-
break;
433418
case 48 :
434419
f.filter = "0";
435420
_i = i + 1 | 0;

lib/es6/genlex.js

-12
Original file line numberDiff line numberDiff line change
@@ -240,9 +240,6 @@ function make_lexer(keywords) {
240240
case 94 :
241241
exit = 3;
242242
break;
243-
case 95 :
244-
exit = 2;
245-
break;
246243
case 91 :
247244
case 93 :
248245
case 96 :
@@ -535,12 +532,6 @@ function make_lexer(keywords) {
535532
case 114 :
536533
Stream.junk(strm__);
537534
return /* '\r' */13;
538-
case 111 :
539-
case 112 :
540-
case 113 :
541-
case 115 :
542-
Stream.junk(strm__);
543-
return c1;
544535
case 116 :
545536
Stream.junk(strm__);
546537
return /* '\t' */9;
@@ -617,9 +608,6 @@ function make_lexer(keywords) {
617608
RE_EXN_ID: Stream.Failure,
618609
Error: new Error()
619610
};
620-
case 41 :
621-
Stream.junk(strm__);
622-
continue ;
623611
case 42 :
624612
Stream.junk(strm__);
625613
while(true) {

lib/js/caml_format.js

-15
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ function parse_sign_and_base(s) {
4646
case 43 :
4747
i = i + 1 | 0;
4848
break;
49-
case 44 :
50-
break;
5149
case 45 :
5250
sign = -1;
5351
i = i + 1 | 0;
@@ -417,19 +415,6 @@ function parse_format(fmt) {
417415
};
418416
_i = j;
419417
continue ;
420-
case 33 :
421-
case 34 :
422-
case 36 :
423-
case 37 :
424-
case 38 :
425-
case 39 :
426-
case 40 :
427-
case 41 :
428-
case 42 :
429-
case 44 :
430-
case 47 :
431-
exit = 1;
432-
break;
433418
case 48 :
434419
f.filter = "0";
435420
_i = i + 1 | 0;

lib/js/genlex.js

-12
Original file line numberDiff line numberDiff line change
@@ -240,9 +240,6 @@ function make_lexer(keywords) {
240240
case 94 :
241241
exit = 3;
242242
break;
243-
case 95 :
244-
exit = 2;
245-
break;
246243
case 91 :
247244
case 93 :
248245
case 96 :
@@ -535,12 +532,6 @@ function make_lexer(keywords) {
535532
case 114 :
536533
Stream.junk(strm__);
537534
return /* '\r' */13;
538-
case 111 :
539-
case 112 :
540-
case 113 :
541-
case 115 :
542-
Stream.junk(strm__);
543-
return c1;
544535
case 116 :
545536
Stream.junk(strm__);
546537
return /* '\t' */9;
@@ -617,9 +608,6 @@ function make_lexer(keywords) {
617608
RE_EXN_ID: Stream.Failure,
618609
Error: new Error()
619610
};
620-
case 41 :
621-
Stream.junk(strm__);
622-
continue ;
623611
case 42 :
624612
Stream.junk(strm__);
625613
while(true) {

0 commit comments

Comments
 (0)