test(parser): finish moving tests to their correct modules
This commit is contained in:
parent
47567c5e6f
commit
5e8edcb340
|
@ -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
|
||||||
|
}
|
||||||
|
"#
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,3 +92,32 @@ fn labeled_constructor_type_args(
|
||||||
.allow_trailing()
|
.allow_trailing()
|
||||||
.delimited_by(just(Token::LeftBrace), just(Token::RightBrace))
|
.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<a> {
|
||||||
|
Some(a, Int)
|
||||||
|
None
|
||||||
|
Wow { name: Int, age: Int }
|
||||||
|
}
|
||||||
|
"#
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn opaque_type() {
|
||||||
|
assert_definition!(
|
||||||
|
r#"
|
||||||
|
pub opaque type User {
|
||||||
|
name: _w
|
||||||
|
}
|
||||||
|
"#
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,92 @@
|
||||||
|
---
|
||||||
|
source: crates/aiken-lang/src/parser/definition/data_type.rs
|
||||||
|
description: "Code:\n\ntype Option<a> {\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: [],
|
||||||
|
},
|
||||||
|
)
|
|
@ -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: [],
|
||||||
|
},
|
||||||
|
)
|
|
@ -50,6 +50,11 @@ mod tests {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn let_bindings() {
|
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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
"#
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -12,3 +12,23 @@ pub fn parser() -> impl Parser<Token, UntypedExpr, Error = ParseError> {
|
||||||
preferred_format,
|
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\"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -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 ])
|
||||||
|
"#
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
}
|
|
@ -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,
|
||||||
|
}
|
|
@ -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,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
}
|
|
@ -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,
|
||||||
|
}
|
|
@ -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,
|
||||||
|
}
|
|
@ -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",
|
||||||
|
},
|
||||||
|
}
|
|
@ -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,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
|
@ -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",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
|
@ -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,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
|
@ -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,
|
||||||
|
}
|
|
@ -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,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
source: crates/aiken-lang/src/parser/expr/string.rs
|
||||||
|
description: "Code:\n\n@\"aiken\""
|
||||||
|
---
|
||||||
|
String {
|
||||||
|
location: 0..8,
|
||||||
|
value: "aiken",
|
||||||
|
}
|
|
@ -31,3 +31,13 @@ pub fn flexible(expr: UntypedExpr) -> UntypedExpr {
|
||||||
_ => expr,
|
_ => expr,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use crate::assert_expr;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn string_basic() {
|
||||||
|
assert_expr!("@\"aiken\"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -21,3 +21,28 @@ pub fn parser(
|
||||||
elems,
|
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)
|
||||||
|
"#
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -28,3 +28,25 @@ pub fn parser(
|
||||||
clauses,
|
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
|
||||||
|
}
|
||||||
|
"#
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
|
@ -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"
|
description: "Code:\n\nfn foo() {\n let x = \"★\"\n x\n}\n"
|
||||||
---
|
---
|
||||||
Module {
|
Module {
|
|
@ -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"
|
description: "Code:\n\nfn foo() {\n let x = \"*\"\n x\n}\n"
|
||||||
---
|
---
|
||||||
Module {
|
Module {
|
|
@ -1,4 +1,3 @@
|
||||||
mod check;
|
mod check;
|
||||||
mod format;
|
mod format;
|
||||||
mod lexer;
|
mod lexer;
|
||||||
mod parser;
|
|
||||||
|
|
|
@ -1,204 +0,0 @@
|
||||||
use crate::assert_module;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn custom_type() {
|
|
||||||
assert_module!(
|
|
||||||
r#"
|
|
||||||
type Option<a> {
|
|
||||||
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
|
|
||||||
}
|
|
||||||
"#
|
|
||||||
);
|
|
||||||
}
|
|
|
@ -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,
|
|
||||||
}
|
|
|
@ -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,
|
|
||||||
}
|
|
|
@ -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,
|
|
||||||
}
|
|
|
@ -1,100 +0,0 @@
|
||||||
---
|
|
||||||
source: crates/aiken-lang/src/tests/parser.rs
|
|
||||||
description: "Code:\n\ntype Option<a> {\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,
|
|
||||||
}
|
|
|
@ -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,
|
|
||||||
}
|
|
|
@ -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,
|
|
||||||
}
|
|
|
@ -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,
|
|
||||||
}
|
|
|
@ -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,
|
|
||||||
}
|
|
|
@ -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,
|
|
||||||
}
|
|
|
@ -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,
|
|
||||||
}
|
|
|
@ -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,
|
|
||||||
}
|
|
|
@ -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,
|
|
||||||
}
|
|
|
@ -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,
|
|
||||||
}
|
|
|
@ -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,
|
|
||||||
}
|
|
Loading…
Reference in New Issue