@@ -131,7 +131,7 @@ type ParserTests () =
131131 member _. ``Parses let expression without in`` () =
132132 let p = Helpers.parse " let x = (let y = 1\n y + 1\n )"
133133 match p.[ 0 ] with
134- | SLet (_, _, ELet ( " y" , _, _, _, _), _, _, _) -> ()
134+ | SLet (_, _, EParen ( ELet ( " y" , _, _, _, _) , _), _, _, _) -> ()
135135 | _ -> Assert.Fail( " Expected nested let expression" )
136136
137137 [<Test>]
@@ -249,6 +249,22 @@ type ParserTests () =
249249 | SExpr ( EMatch (_, cases, _)) -> cases.Length |> should equal 2
250250 | _ -> Assert.Fail( " Expected match" )
251251
252+ [<Test>]
253+ member _. ``Parses match with non - empty list literal pattern`` () =
254+ let src = " match [1] with\n | [x] -> x\n | _ -> 0"
255+ let program = Helpers.parse src
256+ match program.[ 0 ] with
257+ | SExpr ( EMatch (_, ( PCons (_, PNil _, _), _, _) :: _, _)) -> ()
258+ | _ -> Assert.Fail( " Expected non-empty list pattern" )
259+
260+ [<Test>]
261+ member _. ``Parses Some with non - empty list literal pattern`` () =
262+ let src = " match Some [1] with\n | Some [x] -> x\n | _ -> 0"
263+ let program = Helpers.parse src
264+ match program.[ 0 ] with
265+ | SExpr ( EMatch (_, ( PSome ( PCons (_, PNil _, _), _), _, _) :: _, _)) -> ()
266+ | _ -> Assert.Fail( " Expected Some with non-empty list pattern" )
267+
252268 [<Test>]
253269 member _. ``Parses match with option patterns`` () =
254270 let src = " match Some 1 with\n | Some x -> x\n | None -> 0"
@@ -313,6 +329,14 @@ type ParserTests () =
313329 | SLet ( " f" , [_], ELet _, false , _, _) -> ()
314330 | _ -> Assert.Fail( " Expected block-desugared let" )
315331
332+ [<Test>]
333+ member _. ``Parses multiline lambda argument closed by parenthesis on same line`` () =
334+ let src = " Map.fold (fun acc key value ->\n match value with\n | \" workspace:*\" -> key :: acc\n | _ -> acc) [] #{ \" a\" = \" workspace:*\" }"
335+ let p = Helpers.parse src
336+ match p.[ 0 ] with
337+ | SExpr ( EApply ( EApply ( EApply ( EFieldGet ( EVar ( " Map" , _), " fold" , _), _, _), _, _), _, _)) -> ()
338+ | _ -> Assert.Fail( " Expected multiline lambda argument application" )
339+
316340 [<Test>]
317341 member _. ``Parses exported top - level let binding`` () =
318342 let p = Helpers.parse " export let cosine x = x"
@@ -346,7 +370,7 @@ type ParserTests () =
346370 let src = " (let rec even n = if n = 0 then true else odd (n - 1)\n and odd n = if n = 0 then false else even (n - 1)\n even 4\n )"
347371 let p = Helpers.parse src
348372 match p.[ 0 ] with
349- | SExpr ( ELetRecGroup ( bindings, _, _)) -> bindings.Length |> should equal 2
373+ | SExpr ( EParen ( ELetRecGroup ( bindings, _, _) , _)) -> bindings.Length |> should equal 2
350374 | _ -> Assert.Fail( " Expected recursive let-expression group" )
351375
352376 [<Test>]
0 commit comments