diff --git a/crates/aiken-lang/src/parser.rs b/crates/aiken-lang/src/parser.rs
index dc4b04b3..78c1e87c 100644
--- a/crates/aiken-lang/src/parser.rs
+++ b/crates/aiken-lang/src/parser.rs
@@ -84,4 +84,28 @@ mod tests {
"#
);
}
+
+ #[test]
+ fn parse_unicode_offset_1() {
+ assert_module!(
+ r#"
+ fn foo() {
+ let x = "★"
+ x
+ }
+ "#
+ );
+ }
+
+ #[test]
+ fn parse_unicode_offset_2() {
+ assert_module!(
+ r#"
+ fn foo() {
+ let x = "*"
+ x
+ }
+ "#
+ );
+ }
}
diff --git a/crates/aiken-lang/src/parser/definition/data_type.rs b/crates/aiken-lang/src/parser/definition/data_type.rs
index 14083cf0..cc9ff73e 100644
--- a/crates/aiken-lang/src/parser/definition/data_type.rs
+++ b/crates/aiken-lang/src/parser/definition/data_type.rs
@@ -92,3 +92,32 @@ fn labeled_constructor_type_args(
.allow_trailing()
.delimited_by(just(Token::LeftBrace), just(Token::RightBrace))
}
+
+#[cfg(test)]
+mod tests {
+ use crate::assert_definition;
+
+ #[test]
+ fn custom_type() {
+ assert_definition!(
+ r#"
+ type Option {
+ Some(a, Int)
+ None
+ Wow { name: Int, age: Int }
+ }
+ "#
+ );
+ }
+
+ #[test]
+ fn opaque_type() {
+ assert_definition!(
+ r#"
+ pub opaque type User {
+ name: _w
+ }
+ "#
+ );
+ }
+}
diff --git a/crates/aiken-lang/src/parser/definition/snapshots/custom_type.snap b/crates/aiken-lang/src/parser/definition/snapshots/custom_type.snap
new file mode 100644
index 00000000..53760f6c
--- /dev/null
+++ b/crates/aiken-lang/src/parser/definition/snapshots/custom_type.snap
@@ -0,0 +1,92 @@
+---
+source: crates/aiken-lang/src/parser/definition/data_type.rs
+description: "Code:\n\ntype Option {\n Some(a, Int)\n None\n Wow { name: Int, age: Int }\n}\n"
+---
+DataType(
+ DataType {
+ constructors: [
+ RecordConstructor {
+ location: 19..31,
+ name: "Some",
+ arguments: [
+ RecordConstructorArg {
+ label: None,
+ annotation: Var {
+ location: 24..25,
+ name: "a",
+ },
+ location: 24..25,
+ tipo: (),
+ doc: None,
+ },
+ RecordConstructorArg {
+ label: None,
+ annotation: Constructor {
+ location: 27..30,
+ module: None,
+ name: "Int",
+ arguments: [],
+ },
+ location: 27..30,
+ tipo: (),
+ doc: None,
+ },
+ ],
+ doc: None,
+ sugar: false,
+ },
+ RecordConstructor {
+ location: 34..38,
+ name: "None",
+ arguments: [],
+ doc: None,
+ sugar: false,
+ },
+ RecordConstructor {
+ location: 41..68,
+ name: "Wow",
+ arguments: [
+ RecordConstructorArg {
+ label: Some(
+ "name",
+ ),
+ annotation: Constructor {
+ location: 53..56,
+ module: None,
+ name: "Int",
+ arguments: [],
+ },
+ location: 47..56,
+ tipo: (),
+ doc: None,
+ },
+ RecordConstructorArg {
+ label: Some(
+ "age",
+ ),
+ annotation: Constructor {
+ location: 63..66,
+ module: None,
+ name: "Int",
+ arguments: [],
+ },
+ location: 58..66,
+ tipo: (),
+ doc: None,
+ },
+ ],
+ doc: None,
+ sugar: false,
+ },
+ ],
+ doc: None,
+ location: 0..70,
+ name: "Option",
+ opaque: false,
+ parameters: [
+ "a",
+ ],
+ public: false,
+ typed_parameters: [],
+ },
+)
diff --git a/crates/aiken-lang/src/parser/definition/snapshots/opaque_type.snap b/crates/aiken-lang/src/parser/definition/snapshots/opaque_type.snap
new file mode 100644
index 00000000..2ed29bba
--- /dev/null
+++ b/crates/aiken-lang/src/parser/definition/snapshots/opaque_type.snap
@@ -0,0 +1,37 @@
+---
+source: crates/aiken-lang/src/parser/definition/data_type.rs
+description: "Code:\n\npub opaque type User {\n name: _w\n}\n"
+---
+DataType(
+ DataType {
+ constructors: [
+ RecordConstructor {
+ location: 21..35,
+ name: "User",
+ arguments: [
+ RecordConstructorArg {
+ label: Some(
+ "name",
+ ),
+ annotation: Hole {
+ location: 31..33,
+ name: "_w",
+ },
+ location: 25..33,
+ tipo: (),
+ doc: None,
+ },
+ ],
+ doc: None,
+ sugar: true,
+ },
+ ],
+ doc: None,
+ location: 0..35,
+ name: "User",
+ opaque: true,
+ parameters: [],
+ public: true,
+ typed_parameters: [],
+ },
+)
diff --git a/crates/aiken-lang/src/parser/expr/assignment.rs b/crates/aiken-lang/src/parser/expr/assignment.rs
index 0759f223..c9bd1c1c 100644
--- a/crates/aiken-lang/src/parser/expr/assignment.rs
+++ b/crates/aiken-lang/src/parser/expr/assignment.rs
@@ -50,6 +50,11 @@ mod tests {
#[test]
fn let_bindings() {
- assert_expr!(r#"let thing = [ 1, 2, a ]"#);
+ assert_expr!("let thing = [ 1, 2, a ]");
+ }
+
+ #[test]
+ fn expect() {
+ assert_expr!("expect Some(x) = something.field");
}
}
diff --git a/crates/aiken-lang/src/parser/expr/block.rs b/crates/aiken-lang/src/parser/expr/block.rs
index 320723f2..e555de05 100644
--- a/crates/aiken-lang/src/parser/expr/block.rs
+++ b/crates/aiken-lang/src/parser/expr/block.rs
@@ -18,3 +18,21 @@ pub fn parser(
),
))
}
+
+#[cfg(test)]
+mod tests {
+ use crate::assert_expr;
+
+ #[test]
+ fn block_basic() {
+ assert_expr!(
+ r#"
+ let b = {
+ let x = 4
+
+ x + 5
+ }
+ "#
+ );
+ }
+}
diff --git a/crates/aiken-lang/src/parser/expr/bytearray.rs b/crates/aiken-lang/src/parser/expr/bytearray.rs
index 66b356f7..756f6312 100644
--- a/crates/aiken-lang/src/parser/expr/bytearray.rs
+++ b/crates/aiken-lang/src/parser/expr/bytearray.rs
@@ -12,3 +12,23 @@ pub fn parser() -> impl Parser {
preferred_format,
})
}
+
+#[cfg(test)]
+mod tests {
+ use crate::assert_expr;
+
+ #[test]
+ fn bytearray_basic() {
+ assert_expr!("#[0, 170, 255]");
+ }
+
+ #[test]
+ fn bytearray_base16() {
+ assert_expr!("#\"00aaff\"");
+ }
+
+ #[test]
+ fn bytearray_utf8_encoded() {
+ assert_expr!("\"aiken\"");
+ }
+}
diff --git a/crates/aiken-lang/src/parser/expr/mod.rs b/crates/aiken-lang/src/parser/expr/mod.rs
index d6e09842..db134436 100644
--- a/crates/aiken-lang/src/parser/expr/mod.rs
+++ b/crates/aiken-lang/src/parser/expr/mod.rs
@@ -364,3 +364,42 @@ pub fn parser(
})
})
}
+
+#[cfg(test)]
+mod tests {
+ use crate::assert_expr;
+
+ #[test]
+ fn plus_binop() {
+ assert_expr!("a + 1");
+ }
+
+ #[test]
+ fn pipeline() {
+ assert_expr!(
+ r#"
+ a + 2
+ |> add_one
+ |> add_one
+ "#
+ );
+ }
+
+ #[test]
+ fn field_access() {
+ assert_expr!("user.name");
+ }
+
+ #[test]
+ fn function_invoke() {
+ assert_expr!(
+ r#"
+ let x = add_one(3)
+
+ let map_add_x = list.map(_, fn (y) { x + y })
+
+ map_add_x([ 1, 2, 3 ])
+ "#
+ );
+ }
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/block_basic.snap b/crates/aiken-lang/src/parser/expr/snapshots/block_basic.snap
new file mode 100644
index 00000000..7d07f718
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/block_basic.snap
@@ -0,0 +1,49 @@
+---
+source: crates/aiken-lang/src/parser/expr/block.rs
+description: "Code:\n\nlet b = {\n let x = 4\n\n x + 5\n}\n"
+---
+Assignment {
+ location: 0..32,
+ value: Sequence {
+ location: 12..30,
+ expressions: [
+ Assignment {
+ location: 12..21,
+ value: Int {
+ location: 20..21,
+ value: "4",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ pattern: Var {
+ location: 16..17,
+ name: "x",
+ },
+ kind: Let,
+ annotation: None,
+ },
+ BinOp {
+ location: 25..30,
+ name: AddInt,
+ left: Var {
+ location: 25..26,
+ name: "x",
+ },
+ right: Int {
+ location: 29..30,
+ value: "5",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ },
+ ],
+ },
+ pattern: Var {
+ location: 4..5,
+ name: "b",
+ },
+ kind: Let,
+ annotation: None,
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/bytearray_base16.snap b/crates/aiken-lang/src/parser/expr/snapshots/bytearray_base16.snap
new file mode 100644
index 00000000..36d36a2a
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/bytearray_base16.snap
@@ -0,0 +1,13 @@
+---
+source: crates/aiken-lang/src/parser/expr/bytearray.rs
+description: "Code:\n\n#\"00aaff\""
+---
+ByteArray {
+ location: 0..9,
+ bytes: [
+ 0,
+ 170,
+ 255,
+ ],
+ preferred_format: HexadecimalString,
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/bytearray_basic.snap b/crates/aiken-lang/src/parser/expr/snapshots/bytearray_basic.snap
new file mode 100644
index 00000000..58c6b407
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/bytearray_basic.snap
@@ -0,0 +1,17 @@
+---
+source: crates/aiken-lang/src/parser/expr/bytearray.rs
+description: "Code:\n\n#[0, 170, 255]"
+---
+ByteArray {
+ location: 0..14,
+ bytes: [
+ 0,
+ 170,
+ 255,
+ ],
+ preferred_format: ArrayOfBytes(
+ Decimal {
+ numeric_underscore: false,
+ },
+ ),
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/bytearray_utf8_encoded.snap b/crates/aiken-lang/src/parser/expr/snapshots/bytearray_utf8_encoded.snap
new file mode 100644
index 00000000..611eefcf
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/bytearray_utf8_encoded.snap
@@ -0,0 +1,15 @@
+---
+source: crates/aiken-lang/src/parser/expr/bytearray.rs
+description: "Code:\n\n\"aiken\""
+---
+ByteArray {
+ location: 0..7,
+ bytes: [
+ 97,
+ 105,
+ 107,
+ 101,
+ 110,
+ ],
+ preferred_format: Utf8String,
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/expect.snap b/crates/aiken-lang/src/parser/expr/snapshots/expect.snap
new file mode 100644
index 00000000..440e0855
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/expect.snap
@@ -0,0 +1,36 @@
+---
+source: crates/aiken-lang/src/parser/expr/assignment.rs
+description: "Code:\n\nexpect Some(x) = something.field"
+---
+Assignment {
+ location: 0..32,
+ value: FieldAccess {
+ location: 17..32,
+ label: "field",
+ container: Var {
+ location: 17..26,
+ name: "something",
+ },
+ },
+ pattern: Constructor {
+ is_record: false,
+ location: 7..14,
+ name: "Some",
+ arguments: [
+ CallArg {
+ label: None,
+ location: 12..13,
+ value: Var {
+ location: 12..13,
+ name: "x",
+ },
+ },
+ ],
+ module: None,
+ constructor: (),
+ with_spread: false,
+ tipo: (),
+ },
+ kind: Expect,
+ annotation: None,
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/field_access.snap b/crates/aiken-lang/src/parser/expr/snapshots/field_access.snap
new file mode 100644
index 00000000..f429b58e
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/field_access.snap
@@ -0,0 +1,12 @@
+---
+source: crates/aiken-lang/src/parser/expr/mod.rs
+description: "Code:\n\nuser.name"
+---
+FieldAccess {
+ location: 0..9,
+ label: "name",
+ container: Var {
+ location: 0..4,
+ name: "user",
+ },
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/function_invoke.snap b/crates/aiken-lang/src/parser/expr/snapshots/function_invoke.snap
new file mode 100644
index 00000000..411a7f4f
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/function_invoke.snap
@@ -0,0 +1,160 @@
+---
+source: crates/aiken-lang/src/parser/expr/mod.rs
+description: "Code:\n\nlet x = add_one(3)\n\nlet map_add_x = list.map(_, fn (y) { x + y })\n\nmap_add_x([ 1, 2, 3 ])\n"
+---
+Sequence {
+ location: 0..89,
+ expressions: [
+ Assignment {
+ location: 0..18,
+ value: Call {
+ arguments: [
+ CallArg {
+ label: None,
+ location: 16..17,
+ value: Int {
+ location: 16..17,
+ value: "3",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ },
+ ],
+ fun: Var {
+ location: 8..15,
+ name: "add_one",
+ },
+ location: 8..18,
+ },
+ pattern: Var {
+ location: 4..5,
+ name: "x",
+ },
+ kind: Let,
+ annotation: None,
+ },
+ Assignment {
+ location: 20..65,
+ value: Fn {
+ location: 36..65,
+ fn_style: Capture,
+ arguments: [
+ Arg {
+ arg_name: Named {
+ name: "_capture__0",
+ label: "_capture__0",
+ location: 0..0,
+ is_validator_param: false,
+ },
+ location: 0..0,
+ annotation: None,
+ tipo: (),
+ },
+ ],
+ body: Call {
+ arguments: [
+ CallArg {
+ label: None,
+ location: 45..46,
+ value: Var {
+ location: 45..46,
+ name: "_capture__0",
+ },
+ },
+ CallArg {
+ label: None,
+ location: 48..64,
+ value: Fn {
+ location: 48..64,
+ fn_style: Plain,
+ arguments: [
+ Arg {
+ arg_name: Named {
+ name: "y",
+ label: "y",
+ location: 52..53,
+ is_validator_param: false,
+ },
+ location: 52..53,
+ annotation: None,
+ tipo: (),
+ },
+ ],
+ body: BinOp {
+ location: 57..62,
+ name: AddInt,
+ left: Var {
+ location: 57..58,
+ name: "x",
+ },
+ right: Var {
+ location: 61..62,
+ name: "y",
+ },
+ },
+ return_annotation: None,
+ },
+ },
+ ],
+ fun: FieldAccess {
+ location: 36..44,
+ label: "map",
+ container: Var {
+ location: 36..40,
+ name: "list",
+ },
+ },
+ location: 36..65,
+ },
+ return_annotation: None,
+ },
+ pattern: Var {
+ location: 24..33,
+ name: "map_add_x",
+ },
+ kind: Let,
+ annotation: None,
+ },
+ Call {
+ arguments: [
+ CallArg {
+ label: None,
+ location: 77..88,
+ value: List {
+ location: 77..88,
+ elements: [
+ Int {
+ location: 79..80,
+ value: "1",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ Int {
+ location: 82..83,
+ value: "2",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ Int {
+ location: 85..86,
+ value: "3",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ ],
+ tail: None,
+ },
+ },
+ ],
+ fun: Var {
+ location: 67..76,
+ name: "map_add_x",
+ },
+ location: 67..89,
+ },
+ ],
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/parse_tuple.snap b/crates/aiken-lang/src/parser/expr/snapshots/parse_tuple.snap
new file mode 100644
index 00000000..857616c8
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/parse_tuple.snap
@@ -0,0 +1,95 @@
+---
+source: crates/aiken-lang/src/parser/expr/tuple.rs
+description: "Code:\n\nlet tuple = (1, 2, 3, 4)\ntuple.1st + tuple.2nd + tuple.3rd + tuple.4th\n"
+---
+Sequence {
+ location: 0..70,
+ expressions: [
+ Assignment {
+ location: 0..24,
+ value: Tuple {
+ location: 12..24,
+ elems: [
+ Int {
+ location: 13..14,
+ value: "1",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ Int {
+ location: 16..17,
+ value: "2",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ Int {
+ location: 19..20,
+ value: "3",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ Int {
+ location: 22..23,
+ value: "4",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ ],
+ },
+ pattern: Var {
+ location: 4..9,
+ name: "tuple",
+ },
+ kind: Let,
+ annotation: None,
+ },
+ BinOp {
+ location: 25..70,
+ name: AddInt,
+ left: BinOp {
+ location: 25..58,
+ name: AddInt,
+ left: BinOp {
+ location: 25..46,
+ name: AddInt,
+ left: TupleIndex {
+ location: 25..34,
+ index: 0,
+ tuple: Var {
+ location: 25..30,
+ name: "tuple",
+ },
+ },
+ right: TupleIndex {
+ location: 37..46,
+ index: 1,
+ tuple: Var {
+ location: 37..42,
+ name: "tuple",
+ },
+ },
+ },
+ right: TupleIndex {
+ location: 49..58,
+ index: 2,
+ tuple: Var {
+ location: 49..54,
+ name: "tuple",
+ },
+ },
+ },
+ right: TupleIndex {
+ location: 61..70,
+ index: 3,
+ tuple: Var {
+ location: 61..66,
+ name: "tuple",
+ },
+ },
+ },
+ ],
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/parse_tuple2.snap b/crates/aiken-lang/src/parser/expr/snapshots/parse_tuple2.snap
new file mode 100644
index 00000000..634d6184
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/parse_tuple2.snap
@@ -0,0 +1,54 @@
+---
+source: crates/aiken-lang/src/parser/expr/tuple.rs
+description: "Code:\n\nlet a = foo(14)\n(a, 42)\n"
+---
+Sequence {
+ location: 0..23,
+ expressions: [
+ Assignment {
+ location: 0..15,
+ value: Call {
+ arguments: [
+ CallArg {
+ label: None,
+ location: 12..14,
+ value: Int {
+ location: 12..14,
+ value: "14",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ },
+ ],
+ fun: Var {
+ location: 8..11,
+ name: "foo",
+ },
+ location: 8..15,
+ },
+ pattern: Var {
+ location: 4..5,
+ name: "a",
+ },
+ kind: Let,
+ annotation: None,
+ },
+ Tuple {
+ location: 16..23,
+ elems: [
+ Var {
+ location: 17..18,
+ name: "a",
+ },
+ Int {
+ location: 20..22,
+ value: "42",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ ],
+ },
+ ],
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/pipeline.snap b/crates/aiken-lang/src/parser/expr/snapshots/pipeline.snap
new file mode 100644
index 00000000..f98b6a8c
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/pipeline.snap
@@ -0,0 +1,32 @@
+---
+source: crates/aiken-lang/src/parser/expr/mod.rs
+description: "Code:\n\na + 2\n|> add_one\n|> add_one\n"
+---
+PipeLine {
+ expressions: [
+ BinOp {
+ location: 0..5,
+ name: AddInt,
+ left: Var {
+ location: 0..1,
+ name: "a",
+ },
+ right: Int {
+ location: 4..5,
+ value: "2",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ },
+ Var {
+ location: 9..16,
+ name: "add_one",
+ },
+ Var {
+ location: 20..27,
+ name: "add_one",
+ },
+ ],
+ one_liner: false,
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/plus_binop.snap b/crates/aiken-lang/src/parser/expr/snapshots/plus_binop.snap
new file mode 100644
index 00000000..397597ec
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/plus_binop.snap
@@ -0,0 +1,19 @@
+---
+source: crates/aiken-lang/src/parser/expr/mod.rs
+description: "Code:\n\na + 1"
+---
+BinOp {
+ location: 0..5,
+ name: AddInt,
+ left: Var {
+ location: 0..1,
+ name: "a",
+ },
+ right: Int {
+ location: 4..5,
+ value: "1",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/string_basic.snap b/crates/aiken-lang/src/parser/expr/snapshots/string_basic.snap
new file mode 100644
index 00000000..1cdd1ba9
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/string_basic.snap
@@ -0,0 +1,8 @@
+---
+source: crates/aiken-lang/src/parser/expr/string.rs
+description: "Code:\n\n@\"aiken\""
+---
+String {
+ location: 0..8,
+ value: "aiken",
+}
diff --git a/crates/aiken-lang/src/parser/expr/string.rs b/crates/aiken-lang/src/parser/expr/string.rs
index ca5c94ba..d1c07acf 100644
--- a/crates/aiken-lang/src/parser/expr/string.rs
+++ b/crates/aiken-lang/src/parser/expr/string.rs
@@ -31,3 +31,13 @@ pub fn flexible(expr: UntypedExpr) -> UntypedExpr {
_ => expr,
}
}
+
+#[cfg(test)]
+mod tests {
+ use crate::assert_expr;
+
+ #[test]
+ fn string_basic() {
+ assert_expr!("@\"aiken\"");
+ }
+}
diff --git a/crates/aiken-lang/src/parser/expr/tuple.rs b/crates/aiken-lang/src/parser/expr/tuple.rs
index 6f1e1bbf..3b02f947 100644
--- a/crates/aiken-lang/src/parser/expr/tuple.rs
+++ b/crates/aiken-lang/src/parser/expr/tuple.rs
@@ -21,3 +21,28 @@ pub fn parser(
elems,
})
}
+
+#[cfg(test)]
+mod tests {
+ use crate::assert_expr;
+
+ #[test]
+ fn parse_tuple() {
+ assert_expr!(
+ r#"
+ let tuple = (1, 2, 3, 4)
+ tuple.1st + tuple.2nd + tuple.3rd + tuple.4th
+ "#
+ );
+ }
+
+ #[test]
+ fn parse_tuple2() {
+ assert_expr!(
+ r#"
+ let a = foo(14)
+ (a, 42)
+ "#
+ );
+ }
+}
diff --git a/crates/aiken-lang/src/parser/expr/when/mod.rs b/crates/aiken-lang/src/parser/expr/when/mod.rs
index 13c2ed91..53b47627 100644
--- a/crates/aiken-lang/src/parser/expr/when/mod.rs
+++ b/crates/aiken-lang/src/parser/expr/when/mod.rs
@@ -28,3 +28,25 @@ pub fn parser(
clauses,
})
}
+
+#[cfg(test)]
+mod tests {
+ use crate::assert_expr;
+
+ #[test]
+ fn when_basic() {
+ assert_expr!(
+ r#"
+ when a is {
+ 2 if x > 1 -> 3
+ 1 | 4 | 5 -> {
+ let amazing = 5
+ amazing
+ }
+ 3 -> 9
+ _ -> 4
+ }
+ "#
+ );
+ }
+}
diff --git a/crates/aiken-lang/src/parser/expr/when/snapshots/when_basic.snap b/crates/aiken-lang/src/parser/expr/when/snapshots/when_basic.snap
new file mode 100644
index 00000000..7d5056b6
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/when/snapshots/when_basic.snap
@@ -0,0 +1,140 @@
+---
+source: crates/aiken-lang/src/parser/expr/when/mod.rs
+description: "Code:\n\nwhen a is {\n 2 if x > 1 -> 3\n 1 | 4 | 5 -> {\n let amazing = 5\n amazing\n }\n 3 -> 9\n _ -> 4\n}\n"
+---
+When {
+ location: 0..102,
+ subject: Var {
+ location: 5..6,
+ name: "a",
+ },
+ clauses: [
+ UntypedClause {
+ location: 14..29,
+ patterns: [
+ Int {
+ location: 14..15,
+ value: "2",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ ],
+ guard: Some(
+ GtInt {
+ location: 19..24,
+ left: Var {
+ location: 19..20,
+ tipo: (),
+ name: "x",
+ },
+ right: Constant(
+ Int {
+ location: 23..24,
+ value: "1",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ ),
+ },
+ ),
+ then: Int {
+ location: 28..29,
+ value: "3",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ },
+ UntypedClause {
+ location: 32..82,
+ patterns: [
+ Int {
+ location: 32..33,
+ value: "1",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ Int {
+ location: 36..37,
+ value: "4",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ Int {
+ location: 40..41,
+ value: "5",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ ],
+ guard: None,
+ then: Sequence {
+ location: 51..78,
+ expressions: [
+ Assignment {
+ location: 51..66,
+ value: Int {
+ location: 65..66,
+ value: "5",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ pattern: Var {
+ location: 55..62,
+ name: "amazing",
+ },
+ kind: Let,
+ annotation: None,
+ },
+ Var {
+ location: 71..78,
+ name: "amazing",
+ },
+ ],
+ },
+ },
+ UntypedClause {
+ location: 85..91,
+ patterns: [
+ Int {
+ location: 85..86,
+ value: "3",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ ],
+ guard: None,
+ then: Int {
+ location: 90..91,
+ value: "9",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ },
+ UntypedClause {
+ location: 94..100,
+ patterns: [
+ Discard {
+ name: "_",
+ location: 94..95,
+ },
+ ],
+ guard: None,
+ then: Int {
+ location: 99..100,
+ value: "4",
+ base: Decimal {
+ numeric_underscore: false,
+ },
+ },
+ },
+ ],
+}
diff --git a/crates/aiken-lang/src/tests/snapshots/parse_unicode_offset_1.snap b/crates/aiken-lang/src/snapshots/parse_unicode_offset_1.snap
similarity index 97%
rename from crates/aiken-lang/src/tests/snapshots/parse_unicode_offset_1.snap
rename to crates/aiken-lang/src/snapshots/parse_unicode_offset_1.snap
index fd21a8e8..b7e86215 100644
--- a/crates/aiken-lang/src/tests/snapshots/parse_unicode_offset_1.snap
+++ b/crates/aiken-lang/src/snapshots/parse_unicode_offset_1.snap
@@ -1,5 +1,5 @@
---
-source: crates/aiken-lang/src/tests/parser.rs
+source: crates/aiken-lang/src/parser.rs
description: "Code:\n\nfn foo() {\n let x = \"★\"\n x\n}\n"
---
Module {
diff --git a/crates/aiken-lang/src/tests/snapshots/parse_unicode_offset_2.snap b/crates/aiken-lang/src/snapshots/parse_unicode_offset_2.snap
similarity index 96%
rename from crates/aiken-lang/src/tests/snapshots/parse_unicode_offset_2.snap
rename to crates/aiken-lang/src/snapshots/parse_unicode_offset_2.snap
index f0186e94..b8bb738f 100644
--- a/crates/aiken-lang/src/tests/snapshots/parse_unicode_offset_2.snap
+++ b/crates/aiken-lang/src/snapshots/parse_unicode_offset_2.snap
@@ -1,5 +1,5 @@
---
-source: crates/aiken-lang/src/tests/parser.rs
+source: crates/aiken-lang/src/parser.rs
description: "Code:\n\nfn foo() {\n let x = \"*\"\n x\n}\n"
---
Module {
diff --git a/crates/aiken-lang/src/tests/mod.rs b/crates/aiken-lang/src/tests/mod.rs
index 0b33bec1..18af907b 100644
--- a/crates/aiken-lang/src/tests/mod.rs
+++ b/crates/aiken-lang/src/tests/mod.rs
@@ -1,4 +1,3 @@
mod check;
mod format;
mod lexer;
-mod parser;
diff --git a/crates/aiken-lang/src/tests/parser.rs b/crates/aiken-lang/src/tests/parser.rs
deleted file mode 100644
index 7bc5c6c2..00000000
--- a/crates/aiken-lang/src/tests/parser.rs
+++ /dev/null
@@ -1,204 +0,0 @@
-use crate::assert_module;
-
-#[test]
-fn custom_type() {
- assert_module!(
- r#"
- type Option {
- Some(a, Int)
- None
- Wow { name: Int, age: Int }
- }
- "#
- );
-}
-
-#[test]
-fn opaque_type() {
- assert_module!(
- r#"
- pub opaque type User {
- name: _w
- }
- "#
- );
-}
-
-#[test]
-fn expect() {
- assert_module!(
- r#"
- pub fn run() {
- expect Some(x) = something.field
- x.other_field
- }
- "#
- );
-}
-
-#[test]
-fn plus_binop() {
- assert_module!(
- r#"
- pub fn add_one(a) -> Int {
- a + 1
- }
- "#
- );
-}
-
-#[test]
-fn pipeline() {
- assert_module!(
- r#"
- pub fn thing(thing a: Int) {
- a + 2
- |> add_one
- |> add_one
- }
- "#
- );
-}
-
-#[test]
-fn block() {
- assert_module!(
- r#"
- pub fn wow2(a: Int){
- let b = {
- let x = 4
-
- x + 5
- }
-
- b
- }
- "#
- );
-}
-
-#[test]
-fn when() {
- assert_module!(
- r#"
- pub fn wow2(a: Int){
- when a is {
- 2 -> 3
- 1 | 4 | 5 -> {
- let amazing = 5
- amazing
- }
- 3 -> 9
- _ -> 4
- }
- }
- "#
- );
-}
-
-#[test]
-fn field_access() {
- assert_module!(
- r#"
- fn name(user: User) {
- user.name
- }
- "#
- );
-}
-
-#[test]
-fn call() {
- assert_module!(
- r#"
- fn calls() {
- let x = add_one(3)
-
- let map_add_x = list.map(_, fn (y) { x + y })
-
- map_add_x([ 1, 2, 3 ])
- }
- "#
- );
-}
-
-#[test]
-fn parse_tuple() {
- assert_module!(
- r#"
- fn foo() {
- let tuple = (1, 2, 3, 4)
- tuple.1st + tuple.2nd + tuple.3rd + tuple.4th
- }
- "#
- );
-}
-
-#[test]
-fn parse_tuple2() {
- assert_module!(
- r#"
- fn foo() {
- let a = foo(14)
- (a, 42)
- }
- "#
- );
-}
-
-#[test]
-fn plain_bytearray_literals() {
- assert_module!(
- r#"
- pub const my_policy_id = #[0, 170, 255]
- "#
- );
-}
-
-#[test]
-fn base16_bytearray_literals() {
- assert_module!(
- r#"
- pub const my_policy_id = #"00aaff"
-
- pub fn foo() {
- my_policy_id == #"00aaff"
- }
- "#
- );
-}
-
-#[test]
-fn function_invoke() {
- assert_module!(
- r#"
- fn foo() {
- let a = bar(42)
- }
- "#
- );
-}
-
-#[test]
-fn parse_unicode_offset_1() {
- assert_module!(
- r#"
- fn foo() {
- let x = "★"
- x
- }
- "#
- );
-}
-
-#[test]
-fn parse_unicode_offset_2() {
- assert_module!(
- r#"
- fn foo() {
- let x = "*"
- x
- }
- "#
- );
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/base16_bytearray_literals.snap b/crates/aiken-lang/src/tests/snapshots/base16_bytearray_literals.snap
deleted file mode 100644
index 19784cc6..00000000
--- a/crates/aiken-lang/src/tests/snapshots/base16_bytearray_literals.snap
+++ /dev/null
@@ -1,61 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub const my_policy_id = #\"00aaff\"\n\npub fn foo() {\n my_policy_id == #\"00aaff\"\n}\n"
----
-Module {
- name: "",
- docs: [],
- type_info: (),
- definitions: [
- ModuleConstant(
- ModuleConstant {
- doc: None,
- location: 0..34,
- public: true,
- name: "my_policy_id",
- annotation: None,
- value: ByteArray {
- location: 25..34,
- bytes: [
- 0,
- 170,
- 255,
- ],
- preferred_format: HexadecimalString,
- },
- tipo: (),
- },
- ),
- Fn(
- Function {
- arguments: [],
- body: BinOp {
- location: 55..80,
- name: Eq,
- left: Var {
- location: 55..67,
- name: "my_policy_id",
- },
- right: ByteArray {
- location: 71..80,
- bytes: [
- 0,
- 170,
- 255,
- ],
- preferred_format: HexadecimalString,
- },
- },
- doc: None,
- location: 36..48,
- name: "foo",
- public: true,
- return_annotation: None,
- return_type: (),
- end_position: 81,
- can_error: true,
- },
- ),
- ],
- kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/block.snap b/crates/aiken-lang/src/tests/snapshots/block.snap
deleted file mode 100644
index cbb84485..00000000
--- a/crates/aiken-lang/src/tests/snapshots/block.snap
+++ /dev/null
@@ -1,98 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub fn wow2(a: Int){\n let b = {\n let x = 4\n\n x + 5\n }\n\n b\n}\n"
----
-Module {
- name: "",
- docs: [],
- type_info: (),
- definitions: [
- Fn(
- Function {
- arguments: [
- Arg {
- arg_name: Named {
- name: "a",
- label: "a",
- location: 12..13,
- is_validator_param: false,
- },
- location: 12..18,
- annotation: Some(
- Constructor {
- location: 15..18,
- module: None,
- name: "Int",
- arguments: [],
- },
- ),
- tipo: (),
- },
- ],
- body: Sequence {
- location: 23..66,
- expressions: [
- Assignment {
- location: 23..61,
- value: Sequence {
- location: 37..57,
- expressions: [
- Assignment {
- location: 37..46,
- value: Int {
- location: 45..46,
- value: "4",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- pattern: Var {
- location: 41..42,
- name: "x",
- },
- kind: Let,
- annotation: None,
- },
- BinOp {
- location: 52..57,
- name: AddInt,
- left: Var {
- location: 52..53,
- name: "x",
- },
- right: Int {
- location: 56..57,
- value: "5",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- },
- ],
- },
- pattern: Var {
- location: 27..28,
- name: "b",
- },
- kind: Let,
- annotation: None,
- },
- Var {
- location: 65..66,
- name: "b",
- },
- ],
- },
- doc: None,
- location: 0..19,
- name: "wow2",
- public: true,
- return_annotation: None,
- return_type: (),
- end_position: 67,
- can_error: true,
- },
- ),
- ],
- kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/call.snap b/crates/aiken-lang/src/tests/snapshots/call.snap
deleted file mode 100644
index 78f7d70f..00000000
--- a/crates/aiken-lang/src/tests/snapshots/call.snap
+++ /dev/null
@@ -1,181 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\nfn calls() {\n let x = add_one(3)\n\n let map_add_x = list.map(_, fn (y) { x + y })\n\n map_add_x([ 1, 2, 3 ])\n}\n"
----
-Module {
- name: "",
- docs: [],
- type_info: (),
- definitions: [
- Fn(
- Function {
- arguments: [],
- body: Sequence {
- location: 15..108,
- expressions: [
- Assignment {
- location: 15..33,
- value: Call {
- arguments: [
- CallArg {
- label: None,
- location: 31..32,
- value: Int {
- location: 31..32,
- value: "3",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- },
- ],
- fun: Var {
- location: 23..30,
- name: "add_one",
- },
- location: 23..33,
- },
- pattern: Var {
- location: 19..20,
- name: "x",
- },
- kind: Let,
- annotation: None,
- },
- Assignment {
- location: 37..82,
- value: Fn {
- location: 53..82,
- fn_style: Capture,
- arguments: [
- Arg {
- arg_name: Named {
- name: "_capture__0",
- label: "_capture__0",
- location: 0..0,
- is_validator_param: false,
- },
- location: 0..0,
- annotation: None,
- tipo: (),
- },
- ],
- body: Call {
- arguments: [
- CallArg {
- label: None,
- location: 62..63,
- value: Var {
- location: 62..63,
- name: "_capture__0",
- },
- },
- CallArg {
- label: None,
- location: 65..81,
- value: Fn {
- location: 65..81,
- fn_style: Plain,
- arguments: [
- Arg {
- arg_name: Named {
- name: "y",
- label: "y",
- location: 69..70,
- is_validator_param: false,
- },
- location: 69..70,
- annotation: None,
- tipo: (),
- },
- ],
- body: BinOp {
- location: 74..79,
- name: AddInt,
- left: Var {
- location: 74..75,
- name: "x",
- },
- right: Var {
- location: 78..79,
- name: "y",
- },
- },
- return_annotation: None,
- },
- },
- ],
- fun: FieldAccess {
- location: 53..61,
- label: "map",
- container: Var {
- location: 53..57,
- name: "list",
- },
- },
- location: 53..82,
- },
- return_annotation: None,
- },
- pattern: Var {
- location: 41..50,
- name: "map_add_x",
- },
- kind: Let,
- annotation: None,
- },
- Call {
- arguments: [
- CallArg {
- label: None,
- location: 96..107,
- value: List {
- location: 96..107,
- elements: [
- Int {
- location: 98..99,
- value: "1",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- Int {
- location: 101..102,
- value: "2",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- Int {
- location: 104..105,
- value: "3",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- ],
- tail: None,
- },
- },
- ],
- fun: Var {
- location: 86..95,
- name: "map_add_x",
- },
- location: 86..108,
- },
- ],
- },
- doc: None,
- location: 0..10,
- name: "calls",
- public: false,
- return_annotation: None,
- return_type: (),
- end_position: 109,
- can_error: true,
- },
- ),
- ],
- kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/custom_type.snap b/crates/aiken-lang/src/tests/snapshots/custom_type.snap
deleted file mode 100644
index 1954253c..00000000
--- a/crates/aiken-lang/src/tests/snapshots/custom_type.snap
+++ /dev/null
@@ -1,100 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\ntype Option {\n Some(a, Int)\n None\n Wow { name: Int, age: Int }\n}\n"
----
-Module {
- name: "",
- docs: [],
- type_info: (),
- definitions: [
- DataType(
- DataType {
- constructors: [
- RecordConstructor {
- location: 19..31,
- name: "Some",
- arguments: [
- RecordConstructorArg {
- label: None,
- annotation: Var {
- location: 24..25,
- name: "a",
- },
- location: 24..25,
- tipo: (),
- doc: None,
- },
- RecordConstructorArg {
- label: None,
- annotation: Constructor {
- location: 27..30,
- module: None,
- name: "Int",
- arguments: [],
- },
- location: 27..30,
- tipo: (),
- doc: None,
- },
- ],
- doc: None,
- sugar: false,
- },
- RecordConstructor {
- location: 34..38,
- name: "None",
- arguments: [],
- doc: None,
- sugar: false,
- },
- RecordConstructor {
- location: 41..68,
- name: "Wow",
- arguments: [
- RecordConstructorArg {
- label: Some(
- "name",
- ),
- annotation: Constructor {
- location: 53..56,
- module: None,
- name: "Int",
- arguments: [],
- },
- location: 47..56,
- tipo: (),
- doc: None,
- },
- RecordConstructorArg {
- label: Some(
- "age",
- ),
- annotation: Constructor {
- location: 63..66,
- module: None,
- name: "Int",
- arguments: [],
- },
- location: 58..66,
- tipo: (),
- doc: None,
- },
- ],
- doc: None,
- sugar: false,
- },
- ],
- doc: None,
- location: 0..70,
- name: "Option",
- opaque: false,
- parameters: [
- "a",
- ],
- public: false,
- typed_parameters: [],
- },
- ),
- ],
- kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/expect.snap b/crates/aiken-lang/src/tests/snapshots/expect.snap
deleted file mode 100644
index 51329710..00000000
--- a/crates/aiken-lang/src/tests/snapshots/expect.snap
+++ /dev/null
@@ -1,70 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub fn run() {\n expect Some(x) = something.field\n x.other_field\n}\n"
----
-Module {
- name: "",
- docs: [],
- type_info: (),
- definitions: [
- Fn(
- Function {
- arguments: [],
- body: Sequence {
- location: 19..69,
- expressions: [
- Assignment {
- location: 19..51,
- value: FieldAccess {
- location: 36..51,
- label: "field",
- container: Var {
- location: 36..45,
- name: "something",
- },
- },
- pattern: Constructor {
- is_record: false,
- location: 26..33,
- name: "Some",
- arguments: [
- CallArg {
- label: None,
- location: 31..32,
- value: Var {
- location: 31..32,
- name: "x",
- },
- },
- ],
- module: None,
- constructor: (),
- with_spread: false,
- tipo: (),
- },
- kind: Expect,
- annotation: None,
- },
- FieldAccess {
- location: 56..69,
- label: "other_field",
- container: Var {
- location: 56..57,
- name: "x",
- },
- },
- ],
- },
- doc: None,
- location: 0..12,
- name: "run",
- public: true,
- return_annotation: None,
- return_type: (),
- end_position: 70,
- can_error: true,
- },
- ),
- ],
- kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/field_access.snap b/crates/aiken-lang/src/tests/snapshots/field_access.snap
deleted file mode 100644
index c5caa08a..00000000
--- a/crates/aiken-lang/src/tests/snapshots/field_access.snap
+++ /dev/null
@@ -1,52 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\nfn name(user: User) {\n user.name\n}\n"
----
-Module {
- name: "",
- docs: [],
- type_info: (),
- definitions: [
- Fn(
- Function {
- arguments: [
- Arg {
- arg_name: Named {
- name: "user",
- label: "user",
- location: 8..12,
- is_validator_param: false,
- },
- location: 8..18,
- annotation: Some(
- Constructor {
- location: 14..18,
- module: None,
- name: "User",
- arguments: [],
- },
- ),
- tipo: (),
- },
- ],
- body: FieldAccess {
- location: 24..33,
- label: "name",
- container: Var {
- location: 24..28,
- name: "user",
- },
- },
- doc: None,
- location: 0..19,
- name: "name",
- public: false,
- return_annotation: None,
- return_type: (),
- end_position: 34,
- can_error: true,
- },
- ),
- ],
- kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/function_invoke.snap b/crates/aiken-lang/src/tests/snapshots/function_invoke.snap
deleted file mode 100644
index 2f115edc..00000000
--- a/crates/aiken-lang/src/tests/snapshots/function_invoke.snap
+++ /dev/null
@@ -1,54 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\nfn foo() {\n let a = bar(42)\n}\n"
----
-Module {
- name: "",
- docs: [],
- type_info: (),
- definitions: [
- Fn(
- Function {
- arguments: [],
- body: Assignment {
- location: 15..30,
- value: Call {
- arguments: [
- CallArg {
- label: None,
- location: 27..29,
- value: Int {
- location: 27..29,
- value: "42",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- },
- ],
- fun: Var {
- location: 23..26,
- name: "bar",
- },
- location: 23..30,
- },
- pattern: Var {
- location: 19..20,
- name: "a",
- },
- kind: Let,
- annotation: None,
- },
- doc: None,
- location: 0..8,
- name: "foo",
- public: false,
- return_annotation: None,
- return_type: (),
- end_position: 31,
- can_error: true,
- },
- ),
- ],
- kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/opaque_type.snap b/crates/aiken-lang/src/tests/snapshots/opaque_type.snap
deleted file mode 100644
index 1f0426e1..00000000
--- a/crates/aiken-lang/src/tests/snapshots/opaque_type.snap
+++ /dev/null
@@ -1,45 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub opaque type User {\n name: _w\n}\n"
----
-Module {
- name: "",
- docs: [],
- type_info: (),
- definitions: [
- DataType(
- DataType {
- constructors: [
- RecordConstructor {
- location: 21..35,
- name: "User",
- arguments: [
- RecordConstructorArg {
- label: Some(
- "name",
- ),
- annotation: Hole {
- location: 31..33,
- name: "_w",
- },
- location: 25..33,
- tipo: (),
- doc: None,
- },
- ],
- doc: None,
- sugar: true,
- },
- ],
- doc: None,
- location: 0..35,
- name: "User",
- opaque: true,
- parameters: [],
- public: true,
- typed_parameters: [],
- },
- ),
- ],
- kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/parse_tuple.snap b/crates/aiken-lang/src/tests/snapshots/parse_tuple.snap
deleted file mode 100644
index 12489418..00000000
--- a/crates/aiken-lang/src/tests/snapshots/parse_tuple.snap
+++ /dev/null
@@ -1,116 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\nfn foo() {\n let tuple = (1, 2, 3, 4)\n tuple.1st + tuple.2nd + tuple.3rd + tuple.4th\n}\n"
----
-Module {
- name: "",
- docs: [],
- type_info: (),
- definitions: [
- Fn(
- Function {
- arguments: [],
- body: Sequence {
- location: 13..85,
- expressions: [
- Assignment {
- location: 13..37,
- value: Tuple {
- location: 25..37,
- elems: [
- Int {
- location: 26..27,
- value: "1",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- Int {
- location: 29..30,
- value: "2",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- Int {
- location: 32..33,
- value: "3",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- Int {
- location: 35..36,
- value: "4",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- ],
- },
- pattern: Var {
- location: 17..22,
- name: "tuple",
- },
- kind: Let,
- annotation: None,
- },
- BinOp {
- location: 40..85,
- name: AddInt,
- left: BinOp {
- location: 40..73,
- name: AddInt,
- left: BinOp {
- location: 40..61,
- name: AddInt,
- left: TupleIndex {
- location: 40..49,
- index: 0,
- tuple: Var {
- location: 40..45,
- name: "tuple",
- },
- },
- right: TupleIndex {
- location: 52..61,
- index: 1,
- tuple: Var {
- location: 52..57,
- name: "tuple",
- },
- },
- },
- right: TupleIndex {
- location: 64..73,
- index: 2,
- tuple: Var {
- location: 64..69,
- name: "tuple",
- },
- },
- },
- right: TupleIndex {
- location: 76..85,
- index: 3,
- tuple: Var {
- location: 76..81,
- name: "tuple",
- },
- },
- },
- ],
- },
- doc: None,
- location: 0..8,
- name: "foo",
- public: false,
- return_annotation: None,
- return_type: (),
- end_position: 86,
- can_error: true,
- },
- ),
- ],
- kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/parse_tuple2.snap b/crates/aiken-lang/src/tests/snapshots/parse_tuple2.snap
deleted file mode 100644
index 0a4185b7..00000000
--- a/crates/aiken-lang/src/tests/snapshots/parse_tuple2.snap
+++ /dev/null
@@ -1,75 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\nfn foo() {\n let a = foo(14)\n (a, 42)\n}\n"
----
-Module {
- name: "",
- docs: [],
- type_info: (),
- definitions: [
- Fn(
- Function {
- arguments: [],
- body: Sequence {
- location: 13..38,
- expressions: [
- Assignment {
- location: 13..28,
- value: Call {
- arguments: [
- CallArg {
- label: None,
- location: 25..27,
- value: Int {
- location: 25..27,
- value: "14",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- },
- ],
- fun: Var {
- location: 21..24,
- name: "foo",
- },
- location: 21..28,
- },
- pattern: Var {
- location: 17..18,
- name: "a",
- },
- kind: Let,
- annotation: None,
- },
- Tuple {
- location: 31..38,
- elems: [
- Var {
- location: 32..33,
- name: "a",
- },
- Int {
- location: 35..37,
- value: "42",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- ],
- },
- ],
- },
- doc: None,
- location: 0..8,
- name: "foo",
- public: false,
- return_annotation: None,
- return_type: (),
- end_position: 39,
- can_error: true,
- },
- ),
- ],
- kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/pipeline.snap b/crates/aiken-lang/src/tests/snapshots/pipeline.snap
deleted file mode 100644
index 0112b871..00000000
--- a/crates/aiken-lang/src/tests/snapshots/pipeline.snap
+++ /dev/null
@@ -1,72 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub fn thing(thing a: Int) {\n a + 2\n |> add_one\n |> add_one\n}\n"
----
-Module {
- name: "",
- docs: [],
- type_info: (),
- definitions: [
- Fn(
- Function {
- arguments: [
- Arg {
- arg_name: Named {
- name: "a",
- label: "thing",
- location: 13..20,
- is_validator_param: false,
- },
- location: 13..25,
- annotation: Some(
- Constructor {
- location: 22..25,
- module: None,
- name: "Int",
- arguments: [],
- },
- ),
- tipo: (),
- },
- ],
- body: PipeLine {
- expressions: [
- BinOp {
- location: 31..36,
- name: AddInt,
- left: Var {
- location: 31..32,
- name: "a",
- },
- right: Int {
- location: 35..36,
- value: "2",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- },
- Var {
- location: 42..49,
- name: "add_one",
- },
- Var {
- location: 55..62,
- name: "add_one",
- },
- ],
- one_liner: false,
- },
- doc: None,
- location: 0..26,
- name: "thing",
- public: true,
- return_annotation: None,
- return_type: (),
- end_position: 63,
- can_error: true,
- },
- ),
- ],
- kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/plain_bytearray_literals.snap b/crates/aiken-lang/src/tests/snapshots/plain_bytearray_literals.snap
deleted file mode 100644
index c97df391..00000000
--- a/crates/aiken-lang/src/tests/snapshots/plain_bytearray_literals.snap
+++ /dev/null
@@ -1,35 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub const my_policy_id = #[0, 170, 255]\n"
----
-Module {
- name: "",
- docs: [],
- type_info: (),
- definitions: [
- ModuleConstant(
- ModuleConstant {
- doc: None,
- location: 0..39,
- public: true,
- name: "my_policy_id",
- annotation: None,
- value: ByteArray {
- location: 25..39,
- bytes: [
- 0,
- 170,
- 255,
- ],
- preferred_format: ArrayOfBytes(
- Decimal {
- numeric_underscore: false,
- },
- ),
- },
- tipo: (),
- },
- ),
- ],
- kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/plus_binop.snap b/crates/aiken-lang/src/tests/snapshots/plus_binop.snap
deleted file mode 100644
index 9f52dc68..00000000
--- a/crates/aiken-lang/src/tests/snapshots/plus_binop.snap
+++ /dev/null
@@ -1,59 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub fn add_one(a) -> Int {\n a + 1\n}\n"
----
-Module {
- name: "",
- docs: [],
- type_info: (),
- definitions: [
- Fn(
- Function {
- arguments: [
- Arg {
- arg_name: Named {
- name: "a",
- label: "a",
- location: 15..16,
- is_validator_param: false,
- },
- location: 15..16,
- annotation: None,
- tipo: (),
- },
- ],
- body: BinOp {
- location: 29..34,
- name: AddInt,
- left: Var {
- location: 29..30,
- name: "a",
- },
- right: Int {
- location: 33..34,
- value: "1",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- },
- doc: None,
- location: 0..24,
- name: "add_one",
- public: true,
- return_annotation: Some(
- Constructor {
- location: 21..24,
- module: None,
- name: "Int",
- arguments: [],
- },
- ),
- return_type: (),
- end_position: 35,
- can_error: true,
- },
- ),
- ],
- kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/when.snap b/crates/aiken-lang/src/tests/snapshots/when.snap
deleted file mode 100644
index 387ffad8..00000000
--- a/crates/aiken-lang/src/tests/snapshots/when.snap
+++ /dev/null
@@ -1,162 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub fn wow2(a: Int){\n when a is {\n 2 -> 3\n 1 | 4 | 5 -> {\n let amazing = 5\n amazing\n }\n 3 -> 9\n _ -> 4\n }\n}\n"
----
-Module {
- name: "",
- docs: [],
- type_info: (),
- definitions: [
- Fn(
- Function {
- arguments: [
- Arg {
- arg_name: Named {
- name: "a",
- label: "a",
- location: 12..13,
- is_validator_param: false,
- },
- location: 12..18,
- annotation: Some(
- Constructor {
- location: 15..18,
- module: None,
- name: "Int",
- arguments: [],
- },
- ),
- tipo: (),
- },
- ],
- body: When {
- location: 23..132,
- subject: Var {
- location: 28..29,
- name: "a",
- },
- clauses: [
- UntypedClause {
- location: 39..45,
- patterns: [
- Int {
- location: 39..40,
- value: "2",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- ],
- guard: None,
- then: Int {
- location: 44..45,
- value: "3",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- },
- UntypedClause {
- location: 50..106,
- patterns: [
- Int {
- location: 50..51,
- value: "1",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- Int {
- location: 54..55,
- value: "4",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- Int {
- location: 58..59,
- value: "5",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- ],
- guard: None,
- then: Sequence {
- location: 71..100,
- expressions: [
- Assignment {
- location: 71..86,
- value: Int {
- location: 85..86,
- value: "5",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- pattern: Var {
- location: 75..82,
- name: "amazing",
- },
- kind: Let,
- annotation: None,
- },
- Var {
- location: 93..100,
- name: "amazing",
- },
- ],
- },
- },
- UntypedClause {
- location: 111..117,
- patterns: [
- Int {
- location: 111..112,
- value: "3",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- ],
- guard: None,
- then: Int {
- location: 116..117,
- value: "9",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- },
- UntypedClause {
- location: 122..128,
- patterns: [
- Discard {
- name: "_",
- location: 122..123,
- },
- ],
- guard: None,
- then: Int {
- location: 127..128,
- value: "4",
- base: Decimal {
- numeric_underscore: false,
- },
- },
- },
- ],
- },
- doc: None,
- location: 0..19,
- name: "wow2",
- public: true,
- return_annotation: None,
- return_type: (),
- end_position: 133,
- can_error: true,
- },
- ),
- ],
- kind: Validator,
-}