@@ -1282,6 +1282,43 @@ Syntax(Chunk)@0..27
12821282 ) ;
12831283 }
12841284
1285+ #[ test]
1286+ fn test_safe_method_colon ( ) {
1287+ let code = "local x = a?.field?.:method()\n " ;
1288+ let result = r#"
1289+ Syntax(Chunk)@0..30
1290+ Syntax(Block)@0..30
1291+ Syntax(LocalStat)@0..29
1292+ Token(TkLocal)@0..5 "local"
1293+ Token(TkWhitespace)@5..6 " "
1294+ Syntax(LocalName)@6..7
1295+ Token(TkName)@6..7 "x"
1296+ Token(TkWhitespace)@7..8 " "
1297+ Token(TkAssign)@8..9 "="
1298+ Token(TkWhitespace)@9..10 " "
1299+ Syntax(CallExpr)@10..29
1300+ Syntax(SafeIndexExpr)@10..27
1301+ Syntax(SafeIndexExpr)@10..18
1302+ Syntax(NameExpr)@10..11
1303+ Token(TkName)@10..11 "a"
1304+ Token(TkSafeNavigation)@11..13 "?."
1305+ Token(TkName)@13..18 "field"
1306+ Token(TkSafeNavigation)@18..20 "?."
1307+ Token(TkColon)@20..21 ":"
1308+ Token(TkName)@21..27 "method"
1309+ Syntax(CallArgList)@27..29
1310+ Token(TkLeftParen)@27..28 "("
1311+ Token(TkRightParen)@28..29 ")"
1312+ Token(TkEndOfLine)@29..30 "\n"
1313+ "# ;
1314+
1315+ assert_ast_eq ! (
1316+ code,
1317+ result,
1318+ ParserConfig :: with_level( LuaLanguageLevel :: LuaJITExt )
1319+ ) ;
1320+ }
1321+
12851322 #[ test]
12861323 fn test_safe_navigation_dot ( ) {
12871324 let code = "local x = obj?.field\n " ;
0 commit comments