multiple semi-sep binds in a let

This commit is contained in:
rhiannon morris 2023-12-04 23:27:59 +01:00
parent 415a823dec
commit e48f03a61c
2 changed files with 41 additions and 12 deletions

View file

@ -414,12 +414,16 @@ tests = "parser" :- [
"let" :- [
parseMatch term "let x = y in z"
`(Let (PQ One _, PV "x" {}, V "y" {}) (V "z" {}) _),
parseMatch term "let x = y; in z"
`(Let (PQ One _, PV "x" {}, V "y" {}) (V "z" {}) _),
parseMatch term "let0 x = y in z"
`(Let (PQ Zero _, PV "x" {}, V "y" {}) (V "z" {}) _),
parseMatch term "let1 x = y in z"
`(Let (PQ One _, PV "x" {}, V "y" {}) (V "z" {}) _),
parseMatch term "letω x = y in z"
`(Let (PQ Any _, PV "x" {}, V "y" {}) (V "z" {}) _),
parseMatch term "let ω.x = y in z"
`(Let (PQ Any _, PV "x" {}, V "y" {}) (V "z" {}) _),
parseMatch term "let x = y1 y2 in z1 z2"
`(Let (PQ One _, PV "x" {},
(App (V "y1" {}) (V "y2" {}) _))
@ -427,12 +431,27 @@ tests = "parser" :- [
parseMatch term "let x = a in let y = b in z"
`(Let (PQ One _, PV "x" {}, V "a" {})
(Let (PQ One _, PV "y" {}, V "b" {}) (V "z" {}) _) _),
parseMatch term "let x = a; y = b in z"
`(Let (PQ One _, PV "x" {}, V "a" {})
(Let (PQ One _, PV "y" {}, V "b" {}) (V "z" {}) _) _),
parseMatch term "letω x = a; y = b in z"
`(Let (PQ Any _, PV "x" {}, V "a" {})
(Let (PQ Any _, PV "y" {}, V "b" {}) (V "z" {}) _) _),
parseMatch term "letω x = a; y = b; in z"
`(Let (PQ Any _, PV "x" {}, V "a" {})
(Let (PQ Any _, PV "y" {}, V "b" {}) (V "z" {}) _) _),
parseMatch term "let ω.x = a; 1.y = b in z"
`(Let (PQ Any _, PV "x" {}, V "a" {})
(Let (PQ One _, PV "y" {}, V "b" {}) (V "z" {}) _) _),
parseMatch term "let x = y in z ∷ Z"
`(Let (PQ One _, PV "x" {}, V "y" {})
(Ann (V "z" {}) (V "Z" {}) _) _),
parseMatch term "let x = y in z₁ ≡ z₂ : Z"
`(Let (PQ One _, PV "x" {}, V "y" {})
(Eq (Unused _, V "Z" {}) (V "z₁" {}) (V "z₂" {}) _) _)
(Eq (Unused _, V "Z" {}) (V "z₁" {}) (V "z₂" {}) _) _),
parseFails term "let1 1.x = y in z",
parseFails term "let x = y",
parseFails term "let x in z"
],
"definitions" :-