luau-syntax 0.732.0

Luau lexer, parser, AST, CST, and source utilities
Documentation
use super::*;

// Parser.test.cpp: multiline_strings_newlines
#[test]
fn multiline_strings_newlines() {
    let strings = return_strings("return [=[\nfoo\r\nbar\n\nbaz\n]=]");

    assert_eq!(strings[0], b"foo\nbar\n\nbaz\n");
}

// Parser.test.cpp: string_literals_escape
#[test]
fn string_literals_escape() {
    let strings = return_strings(
        r#"
return
"foo\n\r",
"foo\0324",
"foo\x204",
"foo\u{20}",
"foo\u{0451}"
"#,
    );

    assert_eq!(strings.len(), 5);
    assert_eq!(strings[0], b"foo\n\r");
    assert_eq!(strings[1], b"foo 4");
    assert_eq!(strings[2], b"foo 4");
    assert_eq!(strings[3], b"foo ");
    assert_eq!(strings[4], "foo\u{0451}".as_bytes());
}

// Parser.test.cpp: string_literals_escape_newline
#[test]
fn string_literals_escape_newline() {
    let strings = return_strings(
        r#"return "foo\z
   bar", "foo\
    bar", "foo\
bar""#,
    );

    assert_eq!(strings.len(), 3);
    assert_eq!(strings[0], b"foobar");
    assert_eq!(strings[1], b"foo\n    bar");
    assert_eq!(strings[2], b"foo\nbar");
}

// Parser.test.cpp: string_literals_escapes
#[test]
fn string_literals_escapes() {
    let strings = return_strings(
        r#"
return
"\xAB",
"\u{2024}",
"\121",
"\1x",
"\t",
"\n"
"#,
    );

    assert_eq!(strings.len(), 6);
    assert_eq!(strings[0], b"\xAB");
    assert_eq!(strings[1], "\u{2024}".as_bytes());
    assert_eq!(strings[2], b"\x79");
    assert_eq!(strings[3], b"\x01x");
    assert_eq!(strings[4], b"\t");
    assert_eq!(strings[5], b"\n");
}