boa_engine 0.16.0

Boa is a Javascript lexer, parser and Just-in-Time compiler written in Rust. Currently, it has support for some of the language.
Documentation
use crate::syntax::{
    ast::node::{field::GetConstField, Call, Identifier},
    parser::tests::check_parser,
};
use boa_interner::Interner;

#[track_caller]
fn check_call_property_identifier(property_name: &'static str) {
    let mut interner = Interner::default();
    check_parser(
        format!("a().{}", property_name).as_str(),
        vec![GetConstField::new(
            Call::new(Identifier::new(interner.get_or_intern_static("a")), vec![]),
            interner.get_or_intern_static(property_name),
        )
        .into()],
        interner,
    );
}

#[test]
fn check_call_properties() {
    check_call_property_identifier("prop");
    check_call_property_identifier("true");
    check_call_property_identifier("false");
    check_call_property_identifier("null");
    check_call_property_identifier("let");
}

#[track_caller]
fn check_member_property_identifier(property_name: &'static str) {
    let mut interner = Interner::default();
    check_parser(
        format!("a.{}", property_name).as_str(),
        vec![GetConstField::new(
            Identifier::new(interner.get_or_intern_static("a")),
            interner.get_or_intern_static(property_name),
        )
        .into()],
        interner,
    );
}

#[test]
fn check_member_properties() {
    check_member_property_identifier("prop");
    check_member_property_identifier("true");
    check_member_property_identifier("false");
    check_member_property_identifier("null");
    check_member_property_identifier("let");
}