diff --git a/crates/aiken-lang/src/parser.rs b/crates/aiken-lang/src/parser.rs index 408f6068..f73b950c 100644 --- a/crates/aiken-lang/src/parser.rs +++ b/crates/aiken-lang/src/parser.rs @@ -38,3 +38,24 @@ pub fn module( Ok((module, extra)) } + +#[cfg(test)] +mod tests { + use crate::assert_module; + + #[test] + fn windows_newline() { + assert_module!("use aiken/list\r\n"); + } + + #[test] + fn can_handle_comments_at_end_of_file() { + assert_module!( + r#" + use aiken + + // some comment + // more comments"# + ); + } +} diff --git a/crates/aiken-lang/src/parser/definition/import.rs b/crates/aiken-lang/src/parser/definition/import.rs index 6ac7186c..2b1d959d 100644 --- a/crates/aiken-lang/src/parser/definition/import.rs +++ b/crates/aiken-lang/src/parser/definition/import.rs @@ -58,8 +58,6 @@ pub fn parser() -> impl Parser impl Parser( #[cfg(test)] mod tests { - use chumsky::Parser; - use crate::assert_expr; #[test] diff --git a/crates/aiken-lang/src/parser/expr/int.rs b/crates/aiken-lang/src/parser/expr/int.rs index e81db141..6e4f628c 100644 --- a/crates/aiken-lang/src/parser/expr/int.rs +++ b/crates/aiken-lang/src/parser/expr/int.rs @@ -17,8 +17,6 @@ pub fn parser() -> impl Parser { #[cfg(test)] mod tests { - use chumsky::Parser; - use crate::assert_expr; #[test] diff --git a/crates/aiken-lang/src/parser/expr/list.rs b/crates/aiken-lang/src/parser/expr/list.rs index c6a3b2d5..d11af859 100644 --- a/crates/aiken-lang/src/parser/expr/list.rs +++ b/crates/aiken-lang/src/parser/expr/list.rs @@ -30,8 +30,6 @@ pub fn parser( #[cfg(test)] mod tests { - use chumsky::Parser; - use crate::assert_expr; #[test] diff --git a/crates/aiken-lang/src/parser/utils.rs b/crates/aiken-lang/src/parser/utils.rs index 521e7004..a4150279 100644 --- a/crates/aiken-lang/src/parser/utils.rs +++ b/crates/aiken-lang/src/parser/utils.rs @@ -97,6 +97,8 @@ pub fn type_name_with_args() -> impl Parser>) #[macro_export] macro_rules! assert_expr { ($code:expr) => { + use chumsky::Parser; + let $crate::parser::lexer::LexInfo { tokens, .. } = $crate::parser::lexer::run(indoc::indoc! { $code }).unwrap(); let stream = chumsky::Stream::from_iter($crate::ast::Span::create(tokens.len()), tokens.into_iter()); @@ -117,7 +119,7 @@ macro_rules! assert_expr { macro_rules! assert_module { ($code:expr) => { let (module, _) = - parser::module(indoc::indoc!{ $code }, ast::ModuleKind::Validator).expect("Failed to parse code"); + $crate::parser::module(indoc::indoc!{ $code }, $crate::ast::ModuleKind::Validator).expect("Failed to parse code"); insta::with_settings!({ description => concat!("Code:\n\n", indoc::indoc! { $code }), @@ -132,6 +134,8 @@ macro_rules! assert_module { #[macro_export] macro_rules! assert_definition { ($code:expr) => { + use chumsky::Parser; + let $crate::parser::lexer::LexInfo { tokens, .. } = $crate::parser::lexer::run(indoc::indoc! { $code }).unwrap(); let stream = chumsky::Stream::from_iter($crate::ast::Span::create(tokens.len()), tokens.into_iter()); diff --git a/crates/aiken-lang/src/tests/snapshots/can_handle_comments_at_end_of_file.snap b/crates/aiken-lang/src/snapshots/can_handle_comments_at_end_of_file.snap similarity index 90% rename from crates/aiken-lang/src/tests/snapshots/can_handle_comments_at_end_of_file.snap rename to crates/aiken-lang/src/snapshots/can_handle_comments_at_end_of_file.snap index c25d4eff..c4b7b173 100644 --- a/crates/aiken-lang/src/tests/snapshots/can_handle_comments_at_end_of_file.snap +++ b/crates/aiken-lang/src/snapshots/can_handle_comments_at_end_of_file.snap @@ -1,5 +1,5 @@ --- -source: crates/aiken-lang/src/tests/parser.rs +source: crates/aiken-lang/src/parser.rs description: "Code:\n\nuse aiken\n\n// some comment\n// more comments" --- Module { diff --git a/crates/aiken-lang/src/tests/snapshots/windows_newline.snap b/crates/aiken-lang/src/snapshots/windows_newline.snap similarity index 90% rename from crates/aiken-lang/src/tests/snapshots/windows_newline.snap rename to crates/aiken-lang/src/snapshots/windows_newline.snap index 0e6ab80d..70e7d0e6 100644 --- a/crates/aiken-lang/src/tests/snapshots/windows_newline.snap +++ b/crates/aiken-lang/src/snapshots/windows_newline.snap @@ -1,5 +1,5 @@ --- -source: crates/aiken-lang/src/tests/parser.rs +source: crates/aiken-lang/src/parser.rs description: "Code:\n\nuse aiken/list\r\n" --- Module { diff --git a/crates/aiken-lang/src/tests/parser.rs b/crates/aiken-lang/src/tests/parser.rs index c10705c9..8b9e6d59 100644 --- a/crates/aiken-lang/src/tests/parser.rs +++ b/crates/aiken-lang/src/tests/parser.rs @@ -1,20 +1,4 @@ -use crate::{assert_module, ast, parser}; - -#[test] -fn windows_newline() { - assert_module!("use aiken/list\r\n"); -} - -#[test] -fn can_handle_comments_at_end_of_file() { - assert_module!( - r#" - use aiken - - // some comment - // more comments"# - ); -} +use crate::assert_module; #[test] fn type_annotation_with_module_prefix() { @@ -42,45 +26,6 @@ fn test_fail() { ); } -#[test] -fn validator() { - assert_module!( - r#" - validator { - fn foo(datum, rdmr, ctx) { - True - } - } - "# - ); -} - -#[test] -fn double_validator() { - assert_module!( - r#" - validator { - fn foo(datum, rdmr, ctx) { - True - } - - fn bar(rdmr, ctx) { - True - } - } - "# - ); -} - -#[test] -fn import_alias() { - assert_module!( - r#" - use std/tx as t - "# - ); -} - #[test] fn custom_type() { assert_module!( diff --git a/crates/aiken-lang/src/tests/snapshots/double_validator.snap b/crates/aiken-lang/src/tests/snapshots/double_validator.snap deleted file mode 100644 index 3886e7e4..00000000 --- a/crates/aiken-lang/src/tests/snapshots/double_validator.snap +++ /dev/null @@ -1,109 +0,0 @@ ---- -source: crates/aiken-lang/src/tests/parser.rs -description: "Code:\n\nvalidator {\n fn foo(datum, rdmr, ctx) {\n True\n }\n\n fn bar(rdmr, ctx) {\n True\n }\n}\n" ---- -Module { - name: "", - docs: [], - type_info: (), - definitions: [ - Validator( - Validator { - doc: None, - end_position: 90, - fun: Function { - arguments: [ - Arg { - arg_name: Named { - name: "datum", - label: "datum", - location: 21..26, - is_validator_param: false, - }, - location: 21..26, - annotation: None, - tipo: (), - }, - Arg { - arg_name: Named { - name: "rdmr", - label: "rdmr", - location: 28..32, - is_validator_param: false, - }, - location: 28..32, - annotation: None, - tipo: (), - }, - Arg { - arg_name: Named { - name: "ctx", - label: "ctx", - location: 34..37, - is_validator_param: false, - }, - location: 34..37, - annotation: None, - tipo: (), - }, - ], - body: Var { - location: 45..49, - name: "True", - }, - doc: None, - location: 14..38, - name: "foo", - public: false, - return_annotation: None, - return_type: (), - end_position: 52, - can_error: true, - }, - other_fun: Some( - Function { - arguments: [ - Arg { - arg_name: Named { - name: "rdmr", - label: "rdmr", - location: 64..68, - is_validator_param: false, - }, - location: 64..68, - annotation: None, - tipo: (), - }, - Arg { - arg_name: Named { - name: "ctx", - label: "ctx", - location: 70..73, - is_validator_param: false, - }, - location: 70..73, - annotation: None, - tipo: (), - }, - ], - body: Var { - location: 81..85, - name: "True", - }, - doc: None, - location: 57..74, - name: "bar", - public: false, - return_annotation: None, - return_type: (), - end_position: 88, - can_error: true, - }, - ), - location: 0..9, - params: [], - }, - ), - ], - kind: Validator, -} diff --git a/crates/aiken-lang/src/tests/snapshots/import_alias.snap b/crates/aiken-lang/src/tests/snapshots/import_alias.snap deleted file mode 100644 index 71ba94d4..00000000 --- a/crates/aiken-lang/src/tests/snapshots/import_alias.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/aiken-lang/src/tests/parser.rs -description: "Code:\n\nuse std/tx as t\n" ---- -Module { - name: "", - docs: [], - type_info: (), - definitions: [ - Use( - Use { - as_name: Some( - "t", - ), - location: 0..15, - module: [ - "std", - "tx", - ], - package: (), - unqualified: [], - }, - ), - ], - kind: Validator, -} diff --git a/crates/aiken-lang/src/tests/snapshots/validator.snap b/crates/aiken-lang/src/tests/snapshots/validator.snap deleted file mode 100644 index 96070233..00000000 --- a/crates/aiken-lang/src/tests/snapshots/validator.snap +++ /dev/null @@ -1,70 +0,0 @@ ---- -source: crates/aiken-lang/src/tests/parser.rs -description: "Code:\n\nvalidator {\n fn foo(datum, rdmr, ctx) {\n True\n }\n}\n" ---- -Module { - name: "", - docs: [], - type_info: (), - definitions: [ - Validator( - Validator { - doc: None, - end_position: 54, - fun: Function { - arguments: [ - Arg { - arg_name: Named { - name: "datum", - label: "datum", - location: 21..26, - is_validator_param: false, - }, - location: 21..26, - annotation: None, - tipo: (), - }, - Arg { - arg_name: Named { - name: "rdmr", - label: "rdmr", - location: 28..32, - is_validator_param: false, - }, - location: 28..32, - annotation: None, - tipo: (), - }, - Arg { - arg_name: Named { - name: "ctx", - label: "ctx", - location: 34..37, - is_validator_param: false, - }, - location: 34..37, - annotation: None, - tipo: (), - }, - ], - body: Var { - location: 45..49, - name: "True", - }, - doc: None, - location: 14..38, - name: "foo", - public: false, - return_annotation: None, - return_type: (), - end_position: 52, - can_error: true, - }, - other_fun: None, - location: 0..9, - params: [], - }, - ), - ], - kind: Validator, -}