Skip to content

Commit ee5fca5

Browse files
committed
Change comment attachment instead of parser location of array functions.
1 parent a41eddd commit ee5fca5

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

res_syntax/src/res_comments_table.ml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1297,6 +1297,17 @@ and walkExpression expr t comments =
12971297
walkExpression operand2 t inside;
12981298
(* (List.concat [inside; after]); *)
12991299
attach t.trailing operand2.pexp_loc after
1300+
| Pexp_apply
1301+
( {pexp_desc = Pexp_ident {txt = Longident.Ldot (Lident "Array", "get")}},
1302+
[(Nolabel, parentExpr); (Nolabel, memberExpr)] ) ->
1303+
walkList [Expression parentExpr; Expression memberExpr] t comments
1304+
| Pexp_apply
1305+
( {pexp_desc = Pexp_ident {txt = Longident.Ldot (Lident "Array", "set")}},
1306+
[(Nolabel, parentExpr); (Nolabel, memberExpr); (Nolabel, targetExpr)] )
1307+
->
1308+
walkList
1309+
[Expression parentExpr; Expression memberExpr; Expression targetExpr]
1310+
t comments
13001311
| Pexp_apply (callExpr, arguments) ->
13011312
let before, inside, after = partitionByLoc comments callExpr.pexp_loc in
13021313
let after =

res_syntax/src/res_core.ml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1976,6 +1976,7 @@ and parseFirstClassModuleExpr ~startPos p =
19761976

19771977
and parseBracketAccess p expr startPos =
19781978
Parser.leaveBreadcrumb p Grammar.ExprArrayAccess;
1979+
let lbracket = p.startPos in
19791980
Parser.expect Lbracket p;
19801981
let stringStart = p.startPos in
19811982
match p.Parser.token with
@@ -2008,18 +2009,20 @@ and parseBracketAccess p expr startPos =
20082009
let accessExpr = parseConstrainedOrCoercedExpr p in
20092010
Parser.expect Rbracket p;
20102011
Parser.eatBreadcrumb p;
2012+
let rbracket = p.prevEndPos in
2013+
let arrayLoc = mkLoc lbracket rbracket in
20112014
match p.token with
20122015
| Equal ->
20132016
Parser.leaveBreadcrumb p ExprArrayMutation;
20142017
Parser.next p;
20152018
let rhsExpr = parseExpr p in
20162019
let arraySet =
2017-
Location.mknoloc (Longident.Ldot (Lident "Array", "set"))
2020+
Location.mkloc (Longident.Ldot (Lident "Array", "set")) arrayLoc
20182021
in
20192022
let endPos = p.prevEndPos in
20202023
let arraySet =
20212024
Ast_helper.Exp.apply ~loc:(mkLoc startPos endPos)
2022-
(Ast_helper.Exp.ident arraySet)
2025+
(Ast_helper.Exp.ident ~loc:arrayLoc arraySet)
20232026
[(Nolabel, expr); (Nolabel, accessExpr); (Nolabel, rhsExpr)]
20242027
in
20252028
Parser.eatBreadcrumb p;
@@ -2028,8 +2031,8 @@ and parseBracketAccess p expr startPos =
20282031
let endPos = p.prevEndPos in
20292032
let e =
20302033
Ast_helper.Exp.apply ~loc:(mkLoc startPos endPos)
2031-
(Ast_helper.Exp.ident
2032-
(Location.mknoloc (Longident.Ldot (Lident "Array", "get"))))
2034+
(Ast_helper.Exp.ident ~loc:arrayLoc
2035+
(Location.mkloc (Longident.Ldot (Lident "Array", "get")) arrayLoc))
20332036
[(Nolabel, expr); (Nolabel, accessExpr)]
20342037
in
20352038
parsePrimaryExpr ~operand:e p)

0 commit comments

Comments
 (0)