@@ -3724,4 +3724,37 @@ Syntax(Chunk)@0..47
37243724 assert ! ( errors[ 0 ] . range. is_empty( ) ) ;
37253725 assert_eq ! ( u32 :: from( errors[ 0 ] . range. start( ) ) as usize , code. len( ) ) ;
37263726 }
3727+
3728+ #[ test]
3729+ fn test_statement_after_return ( ) {
3730+ let code = "return 1, 2 x = 1" ;
3731+ let tree = LuaParser :: parse ( code, ParserConfig :: default ( ) ) ;
3732+ let errors = tree. get_errors ( ) ;
3733+
3734+ assert_eq ! ( errors. len( ) , 1 ) ;
3735+ assert_eq ! ( errors[ 0 ] . kind, LuaParseErrorKind :: SyntaxError ) ;
3736+ assert_eq ! ( errors[ 0 ] . message, "expected end of block after return" ) ;
3737+ assert_eq ! ( u32 :: from( errors[ 0 ] . range. start( ) ) as usize , 12 ) ;
3738+ }
3739+
3740+ #[ test]
3741+ fn test_statement_after_blank_return ( ) {
3742+ let code = "return; x = 1" ;
3743+ let tree = LuaParser :: parse ( code, ParserConfig :: default ( ) ) ;
3744+ let errors = tree. get_errors ( ) ;
3745+
3746+ assert_eq ! ( errors. len( ) , 1 ) ;
3747+ assert_eq ! ( errors[ 0 ] . kind, LuaParseErrorKind :: SyntaxError ) ;
3748+ assert_eq ! ( errors[ 0 ] . message, "expected end of block after return" ) ;
3749+ assert_eq ! ( u32 :: from( errors[ 0 ] . range. start( ) ) as usize , 8 ) ;
3750+ }
3751+
3752+ #[ test]
3753+ fn test_do_return_end ( ) {
3754+ let code = "do return end" ;
3755+ let tree = LuaParser :: parse ( code, ParserConfig :: default ( ) ) ;
3756+ let errors = tree. get_errors ( ) ;
3757+
3758+ assert ! ( errors. is_empty( ) ) ;
3759+ }
37273760}
0 commit comments