From 0aaf7026fd15fd61edbe2198387cf08ca16cf616 Mon Sep 17 00:00:00 2001 From: Paul Lancaster Date: Sat, 10 Oct 2020 14:19:19 +0100 Subject: [PATCH] Added some async function expr parsing tests --- .../mod.rs} | 4 ++ .../async_function_expression/tests.rs | 66 +++++++++++++++++++ 2 files changed, 70 insertions(+) rename boa/src/syntax/parser/expression/primary/{async_function_expression.rs => async_function_expression/mod.rs} (98%) create mode 100644 boa/src/syntax/parser/expression/primary/async_function_expression/tests.rs diff --git a/boa/src/syntax/parser/expression/primary/async_function_expression.rs b/boa/src/syntax/parser/expression/primary/async_function_expression/mod.rs similarity index 98% rename from boa/src/syntax/parser/expression/primary/async_function_expression.rs rename to boa/src/syntax/parser/expression/primary/async_function_expression/mod.rs index d030f848d6..b810246e9c 100644 --- a/boa/src/syntax/parser/expression/primary/async_function_expression.rs +++ b/boa/src/syntax/parser/expression/primary/async_function_expression/mod.rs @@ -6,6 +6,10 @@ //! //! [mdn]: //! [spec]: + +#[cfg(test)] +mod tests; + use crate::{ syntax::{ ast::{node::AsyncFunctionExpr, Keyword, Punctuator}, diff --git a/boa/src/syntax/parser/expression/primary/async_function_expression/tests.rs b/boa/src/syntax/parser/expression/primary/async_function_expression/tests.rs new file mode 100644 index 0000000000..55e8c43b08 --- /dev/null +++ b/boa/src/syntax/parser/expression/primary/async_function_expression/tests.rs @@ -0,0 +1,66 @@ +use crate::syntax::{ + ast::{ + node::{AsyncFunctionExpr, ConstDecl, ConstDeclList, Return, StatementList}, + Const, + }, + parser::tests::check_parser, +}; + +/// Checks async expression parsing. +#[test] +fn check_async_expression() { + check_parser( + "const add = async function() { + return 1; + }; + ", + vec![ConstDeclList::from(vec![ConstDecl::new( + "add", + Some( + AsyncFunctionExpr::new::>, _, StatementList>( + None, + [], + vec![Return::new::<_, _, Option>>(Const::from(1), None).into()].into(), + ), + ), + )]) + .into()], + ); +} + +/// Checks async expression parsing. +#[test] +fn check_nested_async_expression() { + check_parser( + "const a = async function() { + const b = async function() { + return 1; + }; + }; + ", + vec![ConstDeclList::from(vec![ConstDecl::new( + "a", + Some( + AsyncFunctionExpr::new::>, _, StatementList>( + None, + [], + vec![ConstDeclList::from(vec![ConstDecl::new( + "b", + Some( + AsyncFunctionExpr::new::>, _, StatementList>( + None, + [], + vec![Return::new::<_, _, Option>>(Const::from(1), None) + .into()] + .into(), + ), + ), + )]) + .into()] + .into(), + ), + ), + )]) + .into()], + ); +}