Skip to content

Commit e7f8e3a

Browse files
authored
Fix regex literal loc (#7683)
* fix regex literal loc * changelog * more sane fix
1 parent 3606b7b commit e7f8e3a

File tree

5 files changed

+13
-11
lines changed

5 files changed

+13
-11
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434

3535
- Fix `--create-sourcedirs` generation with for a single project. https://github.com/rescript-lang/rescript/pull/7671
3636
- Fix rewatch not recompiling on changes under windows. https://github.com/rescript-lang/rescript/pull/7690
37+
- Fix locations of regex literals. https://github.com/rescript-lang/rescript/pull/7683
3738

3839
# 12.0.0-beta.2
3940

compiler/syntax/src/res_core.ml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1812,8 +1812,7 @@ and parse_constrained_expr_region p =
18121812
| _ -> Some expr)
18131813
| _ -> None
18141814

1815-
and parse_regex p pattern flags =
1816-
let start_pos = p.Parser.start_pos in
1815+
and parse_regex ~start_pos p pattern flags =
18171816
Parser.next p;
18181817
let loc = mk_loc start_pos p.prev_end_pos in
18191818
let payload =
@@ -1826,7 +1825,7 @@ and parse_regex p pattern flags =
18261825
if p.mode = ParseForTypeChecker then Some "js" else None )));
18271826
]
18281827
in
1829-
Ast_helper.Exp.extension (Location.mknoloc "re", payload)
1828+
Ast_helper.Exp.extension (Location.mkloc "re" loc, payload)
18301829

18311830
(* Atomic expressions represent unambiguous expressions.
18321831
* This means that regardless of the context, these expressions
@@ -1903,13 +1902,13 @@ and parse_atomic_expr p =
19031902
| Forwardslash -> (
19041903
Parser.next_regex_token p;
19051904
match p.token with
1906-
| Regex (pattern, flags) -> parse_regex p pattern flags
1905+
| Regex (pattern, flags) -> parse_regex ~start_pos p pattern flags
19071906
| _ -> Ast_helper.Exp.extension (Location.mknoloc "re", Parsetree.PStr [])
19081907
)
19091908
| ForwardslashDot -> (
19101909
Parser.next_regex_token p;
19111910
match p.token with
1912-
| Regex (pattern, flags) -> parse_regex p ("." ^ pattern) flags
1911+
| Regex (pattern, flags) -> parse_regex ~start_pos p ("." ^ pattern) flags
19131912
| _ -> Ast_helper.Exp.extension (Location.mknoloc "re", Parsetree.PStr [])
19141913
)
19151914
| token -> (
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11

22
We've found a bug for you!
3-
/.../fixtures/extract_from_none_file.res
3+
/.../fixtures/regex_literal.res:1:7-11
4+
5+
1 │ while /foo/ {
6+
2 │ ()
7+
3 │ }
48

59
This has type: RegExp.t
610
But a while loop condition must always be of type: bool

tests/build_tests/super_errors/fixtures/extract_from_none_file.res

Lines changed: 0 additions & 5 deletions
This file was deleted.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
while /foo/ {
2+
()
3+
}

0 commit comments

Comments
 (0)