test: adjust snapshots

This commit is contained in:
rvcas 2023-06-30 16:54:19 -04:00
parent 8a7df7f66b
commit da0b969865
No known key found for this signature in database
GPG Key ID: C09B64E263F7D68C
40 changed files with 403 additions and 328 deletions

View File

@ -1,65 +1,79 @@
use crate::{ast, parser}; use crate::{ast, parser};
macro_rules! assert_parse { macro_rules! assert_parse {
($name:ident, $code:expr) => { ($code:expr) => {
#[test] let (module, _) =
fn $name() { parser::module(indoc::indoc!{ $code }, ast::ModuleKind::Validator).expect("Failed to parse code");
let (module, _) =
parser::module(indoc::indoc!{ $code }, ast::ModuleKind::Validator).expect("Failed to parse code");
insta::with_settings!({ insta::with_settings!({
info => &stringify!($name), description => concat!("Code:\n\n", indoc::indoc! { $code }),
description => $code, prepend_module_to_snapshot => false,
omit_expression => true omit_expression => true
}, { }, {
insta::assert_debug_snapshot!(module); insta::assert_debug_snapshot!(module);
}); });
}
}; };
} }
assert_parse!(windows_newline, "use aiken/list\r\n"); #[test]
assert_parse!( fn windows_newline() {
can_handle_comments_at_end_of_file, assert_parse!("use aiken/list\r\n");
r#" }
use aiken
// some comment #[test]
// more comments"# fn can_handle_comments_at_end_of_file() {
); assert_parse!(
assert_parse!( r#"
type_annotation_with_module_prefix, use aiken
r#"
use aiken
pub fn go() -> aiken.Option<Int> { // some comment
False // more comments"#
} );
"# }
);
assert_parse!(
test_fail,
r#"
!test invalid_inputs() {
expect True = False
False #[test]
} fn type_annotation_with_module_prefix() {
"# assert_parse!(
); r#"
assert_parse!( use aiken
validator,
r#" pub fn go() -> aiken.Option<Int> {
False
}
"#
);
}
#[test]
fn test_fail() {
assert_parse!(
r#"
!test invalid_inputs() {
expect True = False
False
}
"#
);
}
#[test]
fn validator() {
assert_parse!(
r#"
validator { validator {
fn foo(datum, rdmr, ctx) { fn foo(datum, rdmr, ctx) {
True True
} }
} }
"# "#
); );
assert_parse!( }
double_validator,
r#" #[test]
fn double_validator() {
assert_parse!(
r#"
validator { validator {
fn foo(datum, rdmr, ctx) { fn foo(datum, rdmr, ctx) {
True True
@ -69,92 +83,128 @@ assert_parse!(
True True
} }
} }
"# "#
); );
assert_parse!( }
import,
r#" #[test]
fn import() {
assert_parse!(
r#"
use std/list use std/list
"# "#
); );
assert_parse!( }
unqualified_imports,
r#" #[test]
fn unqualified_imports() {
assert_parse!(
r#"
use std/address.{Address as A, thing as w} use std/address.{Address as A, thing as w}
"# "#
); );
assert_parse!( }
import_alias,
r#" #[test]
fn import_alias() {
assert_parse!(
r#"
use std/tx as t use std/tx as t
"# "#
); );
assert_parse!( }
custom_type,
r#" #[test]
fn custom_type() {
assert_parse!(
r#"
type Option<a> { type Option<a> {
Some(a, Int) Some(a, Int)
None None
Wow { name: Int, age: Int } Wow { name: Int, age: Int }
} }
"# "#
); );
assert_parse!( }
opaque_type,
r#" #[test]
fn opaque_type() {
assert_parse!(
r#"
pub opaque type User { pub opaque type User {
name: _w name: _w
} }
"# "#
); );
assert_parse!( }
type_alias,
r#" #[test]
fn type_alias() {
assert_parse!(
r#"
type Thing = Option<Int> type Thing = Option<Int>
"# "#
); );
assert_parse!( }
pub_type_alias,
r#" #[test]
fn pub_type_alias() {
assert_parse!(
r#"
pub type Me = Option<String> pub type Me = Option<String>
"# "#
); );
assert_parse!( }
empty_function,
r#" #[test]
fn empty_function() {
assert_parse!(
r#"
pub fn run() {} pub fn run() {}
"# "#
); );
assert_parse!( }
expect,
r#" #[test]
fn expect() {
assert_parse!(
r#"
pub fn run() { pub fn run() {
expect Some(x) = something.field expect Some(x) = something.field
x.other_field x.other_field
} }
"# "#
); );
assert_parse!( }
plus_binop,
r#" #[test]
fn plus_binop() {
assert_parse!(
r#"
pub fn add_one(a) -> Int { pub fn add_one(a) -> Int {
a + 1 a + 1
} }
"# "#
); );
assert_parse!( }
pipeline,
r#" #[test]
fn pipeline() {
assert_parse!(
r#"
pub fn thing(thing a: Int) { pub fn thing(thing a: Int) {
a + 2 a + 2
|> add_one |> add_one
|> add_one |> add_one
} }
"# "#
); );
assert_parse!( }
if_expression,
r#" #[test]
fn if_expression() {
assert_parse!(
r#"
fn ifs() { fn ifs() {
if True { if True {
1 + 1 1 + 1
@ -167,10 +217,13 @@ assert_parse!(
} }
} }
"# "#
); );
assert_parse!( }
let_bindings,
r#" #[test]
fn let_bindings() {
assert_parse!(
r#"
pub fn wow(a: Int) { pub fn wow(a: Int) {
let x = let x =
a + 2 a + 2
@ -183,11 +236,14 @@ assert_parse!(
y y
} }
"# "#
); );
assert_parse!( }
block,
r#" #[test]
fn block() {
assert_parse!(
r#"
pub fn wow2(a: Int){ pub fn wow2(a: Int){
let b = { let b = {
let x = 4 let x = 4
@ -197,11 +253,14 @@ assert_parse!(
b b
} }
"# "#
); );
assert_parse!( }
when,
r#" #[test]
fn when() {
assert_parse!(
r#"
pub fn wow2(a: Int){ pub fn wow2(a: Int){
when a is { when a is {
2 -> 3 2 -> 3
@ -213,29 +272,38 @@ assert_parse!(
_ -> 4 _ -> 4
} }
} }
"# "#
); );
assert_parse!( }
anonymous_function,
r#" #[test]
fn anonymous_function() {
assert_parse!(
r#"
pub fn such() -> Int { pub fn such() -> Int {
let add_one = fn (a: Int) -> Int { a + 1 } let add_one = fn (a: Int) -> Int { a + 1 }
2 |> add_one 2 |> add_one
} }
"# "#
); );
assert_parse!( }
field_access,
r#" #[test]
fn field_access() {
assert_parse!(
r#"
fn name(user: User) { fn name(user: User) {
user.name user.name
} }
"# "#
); );
assert_parse!( }
call,
r#" #[test]
fn call() {
assert_parse!(
r#"
fn calls() { fn calls() {
let x = add_one(3) let x = add_one(3)
@ -243,138 +311,183 @@ assert_parse!(
map_add_x([ 1, 2, 3 ]) map_add_x([ 1, 2, 3 ])
} }
"# "#
); );
assert_parse!( }
record_update,
r#" #[test]
fn record_update() {
assert_parse!(
r#"
fn update_name(user: User, name: ByteArray) -> User { fn update_name(user: User, name: ByteArray) -> User {
User { ..user, name: "Aiken", age } User { ..user, name: "Aiken", age }
} }
"# "#
); );
assert_parse!( }
record_create_labeled,
r#" #[test]
fn record_create_labeled() {
assert_parse!(
r#"
fn create() { fn create() {
User { name: "Aiken", age, thing: 2 } User { name: "Aiken", age, thing: 2 }
} }
"# "#
); );
assert_parse!( }
record_create_labeled_with_field_access,
r#" #[test]
fn record_create_labeled_with_field_access() {
assert_parse!(
r#"
fn create() { fn create() {
some_module.User { name: "Aiken", age, thing: 2 } some_module.User { name: "Aiken", age, thing: 2 }
} }
"# "#
); );
assert_parse!( }
cargo_create_unlabeled,
r#" #[test]
fn cargo_create_unlabeled() {
assert_parse!(
r#"
fn create() { fn create() {
some_module.Thing(1, a) some_module.Thing(1, a)
} }
"# "#
); );
assert_parse!( }
parse_tuple,
r#" #[test]
fn parse_tuple() {
assert_parse!(
r#"
fn foo() { fn foo() {
let tuple = (1, 2, 3, 4) let tuple = (1, 2, 3, 4)
tuple.1st + tuple.2nd + tuple.3rd + tuple.4th tuple.1st + tuple.2nd + tuple.3rd + tuple.4th
} }
"# "#
); );
assert_parse!( }
parse_tuple2,
r#" #[test]
fn parse_tuple2() {
assert_parse!(
r#"
fn foo() { fn foo() {
let a = foo(14) let a = foo(14)
(a, 42) (a, 42)
} }
"# "#
); );
assert_parse!( }
plain_bytearray_literals,
r#" #[test]
fn plain_bytearray_literals() {
assert_parse!(
r#"
pub const my_policy_id = #[0, 170, 255] pub const my_policy_id = #[0, 170, 255]
"# "#
); );
assert_parse!( }
base16_bytearray_literals,
r#" #[test]
fn base16_bytearray_literals() {
assert_parse!(
r#"
pub const my_policy_id = #"00aaff" pub const my_policy_id = #"00aaff"
pub fn foo() { pub fn foo() {
my_policy_id == #"00aaff" my_policy_id == #"00aaff"
} }
"# "#
); );
assert_parse!( }
function_def,
r#" #[test]
fn function_def() {
assert_parse!(
r#"
fn foo() {} fn foo() {}
"# "#
); );
assert_parse!( }
function_invoke,
r#" #[test]
fn function_invoke() {
assert_parse!(
r#"
fn foo() { fn foo() {
let a = bar(42) let a = bar(42)
} }
"# "#
); );
assert_parse!( }
function_ambiguous_sequence,
r#"
fn foo_1() {
let a = bar
(40)
}
fn foo_2() { #[test]
let a = bar fn function_ambiguous_sequence() {
{40} assert_parse!(
} r#"
fn foo_1() {
fn foo_3() { let a = bar
let a = (40+2) (40)
}
fn foo_4() {
let a = bar(42)
(a + 14) * 42
}
"#
);
assert_parse!(
tuple_type_alias,
r#"
type RoyaltyToken = (PolicyId, AssetName)
"#
);
assert_parse!(
int_parsing_hex_bytes,
r#"
fn foo() {
#[ 0x01, 0xa2, 0x03 ]
}
"#
);
assert_parse!(
test_parsing_numeric_underscore,
r#"
fn foo() {
let i = 1_234_567
let j = 1_000_000
let k = -10_000
} }
"#
); fn foo_2() {
assert_parse!( let a = bar
first_class_binop, {40}
r#" }
fn foo_3() {
let a = (40+2)
}
fn foo_4() {
let a = bar(42)
(a + 14) * 42
}
"#
);
}
#[test]
fn tuple_type_alias() {
assert_parse!(
r#"
type RoyaltyToken = (PolicyId, AssetName)
"#
);
}
#[test]
fn int_parsing_hex_bytes() {
assert_parse!(
r#"
fn foo() {
#[ 0x01, 0xa2, 0x03 ]
}
"#
);
}
#[test]
fn test_parsing_numeric_underscore() {
assert_parse!(
r#"
fn foo() {
let i = 1_234_567
let j = 1_000_000
let k = -10_000
}
"#
);
}
#[test]
fn first_class_binop() {
assert_parse!(
r#"
fn foo() { fn foo() {
compare_with(a, >, b) compare_with(a, >, b)
compare_with(a, >=, b) compare_with(a, >=, b)
@ -391,7 +504,8 @@ assert_parse!(
compute_with(a, %, b) compute_with(a, %, b)
} }
"# "#
); );
}
#[test] #[test]
fn parse_unicode_offset_1() { fn parse_unicode_offset_1() {

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n pub fn such() -> Int {\n let add_one = fn (a: Int) -> Int { a + 1 }\n\n 2 |> add_one\n }\n " description: "Code:\n\npub fn such() -> Int {\n let add_one = fn (a: Int) -> Int { a + 1 }\n\n 2 |> add_one\n}\n"
info: anonymous_function
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n pub const my_policy_id = #\"00aaff\"\n\n pub fn foo() {\n my_policy_id == #\"00aaff\"\n }\n " description: "Code:\n\npub const my_policy_id = #\"00aaff\"\n\npub fn foo() {\n my_policy_id == #\"00aaff\"\n}\n"
info: base16_bytearray_literals
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n pub fn wow2(a: Int){\n let b = {\n let x = 4\n\n x + 5\n }\n\n b\n }\n " 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"
info: block
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn 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 " 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"
info: call
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n use aiken\n\n // some comment\n // more comments" description: "Code:\n\nuse aiken\n\n// some comment\n// more comments"
info: can_handle_comments_at_end_of_file
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn create() {\n some_module.Thing(1, a)\n }\n " description: "Code:\n\nfn create() {\n some_module.Thing(1, a)\n}\n"
info: cargo_create_unlabeled
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n type Option<a> {\n Some(a, Int)\n None\n Wow { name: Int, age: Int }\n }\n " description: "Code:\n\ntype Option<a> {\n Some(a, Int)\n None\n Wow { name: Int, age: Int }\n}\n"
info: custom_type
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n validator {\n fn foo(datum, rdmr, ctx) {\n True\n }\n\n fn bar(rdmr, ctx) {\n True\n }\n }\n " description: "Code:\n\nvalidator {\n fn foo(datum, rdmr, ctx) {\n True\n }\n\n fn bar(rdmr, ctx) {\n True\n }\n}\n"
info: double_validator
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n pub fn run() {}\n " description: "Code:\n\npub fn run() {}\n"
info: empty_function
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n pub fn run() {\n expect Some(x) = something.field\n x.other_field\n }\n " description: "Code:\n\npub fn run() {\n expect Some(x) = something.field\n x.other_field\n}\n"
info: expect
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n !test invalid_inputs() {\n expect True = False\n\n False\n }\n " description: "Code:\n\n!test invalid_inputs() {\n expect True = False\n\n False\n}\n"
info: test_fail
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn name(user: User) {\n user.name\n }\n " description: "Code:\n\nfn name(user: User) {\n user.name\n}\n"
info: field_access
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn foo() {\n compare_with(a, >, b)\n compare_with(a, >=, b)\n compare_with(a, <, b)\n compare_with(a, <=, b)\n compare_with(a, ==, b)\n compare_with(a, !=, b)\n combine_with(a, &&, b)\n combine_with(a, ||, b)\n compute_with(a, +, b)\n compute_with(a, -, b)\n compute_with(a, /, b)\n compute_with(a, *, b)\n compute_with(a, %, b)\n }\n " description: "Code:\n\nfn foo() {\n compare_with(a, >, b)\n compare_with(a, >=, b)\n compare_with(a, <, b)\n compare_with(a, <=, b)\n compare_with(a, ==, b)\n compare_with(a, !=, b)\n combine_with(a, &&, b)\n combine_with(a, ||, b)\n compute_with(a, +, b)\n compute_with(a, -, b)\n compute_with(a, /, b)\n compute_with(a, *, b)\n compute_with(a, %, b)\n}\n"
info: first_class_binop
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn foo_1() {\n let a = bar\n (40)\n }\n\n fn foo_2() {\n let a = bar\n {40}\n }\n\n fn foo_3() {\n let a = (40+2)\n }\n\n fn foo_4() {\n let a = bar(42)\n (a + 14) * 42\n }\n " description: "Code:\n\nfn foo_1() {\n let a = bar\n (40)\n}\n\nfn foo_2() {\n let a = bar\n {40}\n}\n\nfn foo_3() {\n let a = (40+2)\n}\n\nfn foo_4() {\n let a = bar(42)\n (a + 14) * 42\n}\n"
info: function_ambiguous_sequence
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn foo() {}\n " description: "Code:\n\nfn foo() {}\n"
info: function_def
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn foo() {\n let a = bar(42)\n }\n " description: "Code:\n\nfn foo() {\n let a = bar(42)\n}\n"
info: function_invoke
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn ifs() {\n if True {\n 1 + 1\n } else if a < 4 {\n 5\n } else if a || b {\n 6\n } else {\n 3\n }\n }\n " description: "Code:\n\nfn ifs() {\n if True {\n 1 + 1\n } else if a < 4 {\n 5\n } else if a || b {\n 6\n } else {\n 3\n }\n}\n"
info: if_expression
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n use std/list\n " description: "Code:\n\nuse std/list\n"
info: import
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n use std/tx as t\n " description: "Code:\n\nuse std/tx as t\n"
info: import_alias
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn foo() {\n #[ 0x01, 0xa2, 0x03 ]\n }\n " description: "Code:\n\nfn foo() {\n #[ 0x01, 0xa2, 0x03 ]\n}\n"
info: int_parsing_hex_bytes
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n pub fn wow(a: Int) {\n let x =\n a + 2\n |> add_one\n |> add_one\n\n let thing = [ 1, 2, a ]\n\n let idk = thing\n\n y\n }\n " description: "Code:\n\npub fn wow(a: Int) {\n let x =\n a + 2\n |> add_one\n |> add_one\n\n let thing = [ 1, 2, a ]\n\n let idk = thing\n\n y\n}\n"
info: let_bindings
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n pub opaque type User {\n name: _w\n }\n " description: "Code:\n\npub opaque type User {\n name: _w\n}\n"
info: opaque_type
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn foo() {\n let tuple = (1, 2, 3, 4)\n tuple.1st + tuple.2nd + tuple.3rd + tuple.4th\n }\n " description: "Code:\n\nfn foo() {\n let tuple = (1, 2, 3, 4)\n tuple.1st + tuple.2nd + tuple.3rd + tuple.4th\n}\n"
info: parse_tuple
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn foo() {\n let a = foo(14)\n (a, 42)\n }\n " description: "Code:\n\nfn foo() {\n let a = foo(14)\n (a, 42)\n}\n"
info: parse_tuple2
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn foo() {\n let i = 1_234_567\n let j = 1_000_000\n let k = -10_000\n }\n " description: "Code:\n\nfn foo() {\n let i = 1_234_567\n let j = 1_000_000\n let k = -10_000\n}\n"
info: test_parsing_numeric_underscore
--- ---
Module { Module {
name: "", name: "",
@ -12,47 +11,47 @@ Module {
Function { Function {
arguments: [], arguments: [],
body: Sequence { body: Sequence {
location: 17..76, location: 13..68,
expressions: [ expressions: [
Assignment { Assignment {
location: 17..34, location: 13..30,
value: Int { value: Int {
location: 25..34, location: 21..30,
value: "1234567", value: "1234567",
base: Decimal { base: Decimal {
numeric_underscore: true, numeric_underscore: true,
}, },
}, },
pattern: Var { pattern: Var {
location: 21..22, location: 17..18,
name: "i", name: "i",
}, },
kind: Let, kind: Let,
annotation: None, annotation: None,
}, },
Assignment { Assignment {
location: 39..56, location: 33..50,
value: Int { value: Int {
location: 47..56, location: 41..50,
value: "1000000", value: "1000000",
base: Decimal { base: Decimal {
numeric_underscore: true, numeric_underscore: true,
}, },
}, },
pattern: Var { pattern: Var {
location: 43..44, location: 37..38,
name: "j", name: "j",
}, },
kind: Let, kind: Let,
annotation: None, annotation: None,
}, },
Assignment { Assignment {
location: 61..76, location: 53..68,
value: UnOp { value: UnOp {
op: Negate, op: Negate,
location: 69..76, location: 61..68,
value: Int { value: Int {
location: 70..76, location: 62..68,
value: "10000", value: "10000",
base: Decimal { base: Decimal {
numeric_underscore: true, numeric_underscore: true,
@ -60,7 +59,7 @@ Module {
}, },
}, },
pattern: Var { pattern: Var {
location: 65..66, location: 57..58,
name: "k", name: "k",
}, },
kind: Let, kind: Let,
@ -69,12 +68,12 @@ Module {
], ],
}, },
doc: None, doc: None,
location: 2..10, location: 0..8,
name: "foo", name: "foo",
public: false, public: false,
return_annotation: None, return_annotation: None,
return_type: (), return_type: (),
end_position: 77, end_position: 69,
can_error: true, can_error: true,
}, },
), ),

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n pub fn thing(thing a: Int) {\n a + 2\n |> add_one\n |> add_one\n }\n " description: "Code:\n\npub fn thing(thing a: Int) {\n a + 2\n |> add_one\n |> add_one\n}\n"
info: pipeline
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n pub const my_policy_id = #[0, 170, 255]\n " description: "Code:\n\npub const my_policy_id = #[0, 170, 255]\n"
info: plain_bytearray_literals
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n pub fn add_one(a) -> Int {\n a + 1\n }\n " description: "Code:\n\npub fn add_one(a) -> Int {\n a + 1\n}\n"
info: plus_binop
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n pub type Me = Option<String>\n " description: "Code:\n\npub type Me = Option<String>\n"
info: pub_type_alias
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn create() {\n User { name: \"Aiken\", age, thing: 2 }\n }\n " description: "Code:\n\nfn create() {\n User { name: \"Aiken\", age, thing: 2 }\n}\n"
info: record_create_labeled
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn create() {\n some_module.User { name: \"Aiken\", age, thing: 2 }\n }\n " description: "Code:\n\nfn create() {\n some_module.User { name: \"Aiken\", age, thing: 2 }\n}\n"
info: record_create_labeled_with_field_access
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n fn update_name(user: User, name: ByteArray) -> User {\n User { ..user, name: \"Aiken\", age }\n }\n " description: "Code:\n\nfn update_name(user: User, name: ByteArray) -> User {\n User { ..user, name: \"Aiken\", age }\n}\n"
info: record_update
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n type RoyaltyToken = (PolicyId, AssetName)\n " description: "Code:\n\ntype RoyaltyToken = (PolicyId, AssetName)\n"
info: tuple_type_alias
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n type Thing = Option<Int>\n " description: "Code:\n\ntype Thing = Option<Int>\n"
info: type_alias
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n use aiken\n\n pub fn go() -> aiken.Option<Int> {\n False\n }\n " description: "Code:\n\nuse aiken\n\npub fn go() -> aiken.Option<Int> {\n False\n}\n"
info: type_annotation_with_module_prefix
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n use std/address.{Address as A, thing as w}\n " description: "Code:\n\nuse std/address.{Address as A, thing as w}\n"
info: unqualified_imports
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n validator {\n fn foo(datum, rdmr, ctx) {\n True\n }\n }\n " description: "Code:\n\nvalidator {\n fn foo(datum, rdmr, ctx) {\n True\n }\n}\n"
info: validator
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "\n pub 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 " 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"
info: when
--- ---
Module { Module {
name: "", name: "",

View File

@ -1,7 +1,6 @@
--- ---
source: crates/aiken-lang/src/tests/parser.rs source: crates/aiken-lang/src/tests/parser.rs
description: "use aiken/list\r\n" description: "Code:\n\nuse aiken/list\r\n"
info: windows_newline
--- ---
Module { Module {
name: "", name: "",