File tree 2 files changed +15
-4
lines changed
2 files changed +15
-4
lines changed Original file line number Diff line number Diff line change @@ -15129,10 +15129,16 @@ impl<'a> Parser<'a> {
15129
15129
}
15130
15130
/// Parse [Statement::Return]
15131
15131
fn parse_return(&mut self) -> Result<Statement, ParserError> {
15132
- let expr = self.parse_expr()?;
15133
- Ok(Statement::Return(ReturnStatement {
15134
- value: Some(ReturnStatementValue::Expr(expr)),
15135
- }))
15132
+ let current_index = self.index;
15133
+ match self.parse_expr() {
15134
+ Ok(expr) => Ok(Statement::Return(ReturnStatement {
15135
+ value: Some(ReturnStatementValue::Expr(expr)),
15136
+ })),
15137
+ Err(_) => {
15138
+ self.index = current_index;
15139
+ Ok(Statement::Return(ReturnStatement { value: None }))
15140
+ }
15141
+ }
15136
15142
}
15137
15143
15138
15144
/// Consume the parser and return its underlying token buffer
Original file line number Diff line number Diff line change @@ -15029,3 +15029,8 @@ fn parse_set_time_zone_alias() {
15029
15029
_ => unreachable ! ( ) ,
15030
15030
}
15031
15031
}
15032
+
15033
+ #[ test]
15034
+ fn parse_return ( ) {
15035
+ all_dialects ( ) . verified_stmt ( "RETURN" ) ;
15036
+ }
You can’t perform that action at this time.
0 commit comments