@@ -2155,7 +2155,11 @@ and parseTemplateExpr ?(prefix = "js") p =
2155
2155
let op = Location. mknoloc (Longident. Lident " ^" ) in
2156
2156
Ast_helper.Exp. ident op
2157
2157
in
2158
- let rec parseParts acc =
2158
+ let concat (e1 : Parsetree.expression ) (e2 : Parsetree.expression ) =
2159
+ let loc = mkLoc e1.pexp_loc.loc_start e2.pexp_loc.loc_end in
2160
+ Ast_helper.Exp. apply ~attrs: [templateLiteralAttr] ~loc hiddenOperator
2161
+ [(Nolabel , e1); (Nolabel , e2)] in
2162
+ let rec parseParts (acc : Parsetree.expression ) =
2159
2163
let startPos = p.Parser. startPos in
2160
2164
Parser. nextTemplateLiteralToken p;
2161
2165
match p.token with
@@ -2166,25 +2170,18 @@ and parseTemplateExpr ?(prefix = "js") p =
2166
2170
Ast_helper.Exp. constant ~attrs: [templateLiteralAttr] ~loc
2167
2171
(Pconst_string (txt, Some prefix))
2168
2172
in
2169
- Ast_helper.Exp. apply ~attrs: [templateLiteralAttr] ~loc hiddenOperator
2170
- [(Nolabel , acc); (Nolabel , str)]
2173
+ concat acc str
2171
2174
| TemplatePart txt ->
2172
2175
Parser. next p;
2173
2176
let loc = mkLoc startPos p.prevEndPos in
2174
2177
let expr = parseExprBlock p in
2175
- let fullLoc = mkLoc startPos p.prevEndPos in
2176
2178
let str =
2177
2179
Ast_helper.Exp. constant ~attrs: [templateLiteralAttr] ~loc
2178
2180
(Pconst_string (txt, Some prefix))
2179
2181
in
2180
2182
let next =
2181
- let a =
2182
- Ast_helper.Exp. apply ~attrs: [templateLiteralAttr] ~loc: fullLoc
2183
- hiddenOperator
2184
- [(Nolabel , acc); (Nolabel , str)]
2185
- in
2186
- Ast_helper.Exp. apply ~loc: fullLoc hiddenOperator
2187
- [(Nolabel , a); (Nolabel , expr)]
2183
+ let a = concat acc str in
2184
+ concat a expr
2188
2185
in
2189
2186
parseParts next
2190
2187
| token ->
@@ -2203,15 +2200,11 @@ and parseTemplateExpr ?(prefix = "js") p =
2203
2200
Parser. next p;
2204
2201
let constantLoc = mkLoc startPos p.prevEndPos in
2205
2202
let expr = parseExprBlock p in
2206
- let fullLoc = mkLoc startPos p.prevEndPos in
2207
2203
let str =
2208
2204
Ast_helper.Exp. constant ~attrs: [templateLiteralAttr] ~loc: constantLoc
2209
2205
(Pconst_string (txt, Some prefix))
2210
2206
in
2211
- let next =
2212
- Ast_helper.Exp. apply ~attrs: [templateLiteralAttr] ~loc: fullLoc
2213
- hiddenOperator
2214
- [(Nolabel , str); (Nolabel , expr)]
2207
+ let next = concat str expr
2215
2208
in
2216
2209
parseParts next
2217
2210
| token ->
0 commit comments