11#[ cfg( test) ]
22mod tests {
3- use crate :: { parser:: ParserConfig , LuaParser } ;
3+ use crate :: { parser:: ParserConfig , LuaLanguageLevel , LuaParser } ;
44
55 macro_rules! assert_ast_eq {
66 ( $lua_code: expr, $expected: expr) => {
@@ -9,6 +9,12 @@ mod tests {
99 let expected = $expected. trim( ) . to_string( ) ;
1010 assert_eq!( result, expected) ;
1111 } ;
12+ ( $lua_code: expr, $expected: expr, $config: expr) => {
13+ let tree = LuaParser :: parse( $lua_code, $config) ;
14+ let result = format!( "{:#?}" , tree. get_red_root( ) ) . trim( ) . to_string( ) ;
15+ let expected = $expected. trim( ) . to_string( ) ;
16+ assert_eq!( result, expected) ;
17+ } ;
1218 }
1319
1420 #[ allow( unused) ]
@@ -17,6 +23,12 @@ mod tests {
1723 println ! ( "{:#?}" , tree. get_red_root( ) ) ;
1824 }
1925
26+ #[ allow( unused) ]
27+ fn print_ast_config ( lua_code : & str , config : ParserConfig ) {
28+ let tree = LuaParser :: parse ( lua_code, config) ;
29+ println ! ( "{:#?}" , tree. get_red_root( ) ) ;
30+ }
31+
2032 #[ test]
2133 fn test_full_lua_syntax ( ) {
2234 let code = r#"
@@ -1115,4 +1127,27 @@ Syntax(Chunk)@0..4
11151127
11161128 assert_ast_eq ! ( code, result) ;
11171129 }
1130+
1131+ #[ test]
1132+ fn test_lua55_global_grammar ( ) {
1133+ let code = "global a, b;" ;
1134+ let result = r#"
1135+ Syntax(Chunk)@0..12
1136+ Syntax(Block)@0..12
1137+ Syntax(GlobalStat)@0..12
1138+ Token(TkGlobal)@0..6 "global"
1139+ Token(TkWhitespace)@6..7 " "
1140+ Token(TkName)@7..8 "a"
1141+ Token(TkComma)@8..9 ","
1142+ Token(TkWhitespace)@9..10 " "
1143+ Token(TkName)@10..11 "b"
1144+ Token(TkSemicolon)@11..12 ";"
1145+ "# ;
1146+
1147+ assert_ast_eq ! (
1148+ code,
1149+ result,
1150+ ParserConfig :: with_level( LuaLanguageLevel :: Lua55 )
1151+ ) ;
1152+ }
11181153}
0 commit comments