errdefer and try/defer fix
This commit is contained in:
@@ -95,3 +95,62 @@ sum func(a, b i32) i32 ! Status {
|
||||
(expression
|
||||
(enum_literal
|
||||
(identifier))))))))))))
|
||||
|
||||
==================
|
||||
Errdefer
|
||||
==================
|
||||
|
||||
Failure :: enum { bad }
|
||||
|
||||
work func() i32 ! Failure {
|
||||
errdefer cleanup()
|
||||
errdefer |err| {
|
||||
_ = err
|
||||
}
|
||||
return 1
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(source_file
|
||||
(type_declaration
|
||||
(identifier)
|
||||
(enum_type
|
||||
(enum_body
|
||||
(enum_member
|
||||
(identifier)))))
|
||||
(function_declaration
|
||||
(identifier)
|
||||
(parameter_list)
|
||||
(type
|
||||
(builtin_type))
|
||||
(type
|
||||
(named_type
|
||||
(qualified_identifier
|
||||
(identifier))))
|
||||
(block
|
||||
(statement
|
||||
(defer_statement
|
||||
(statement
|
||||
(expression_statement
|
||||
(expression
|
||||
(call_expression
|
||||
(expression
|
||||
(identifier))
|
||||
(argument_list)))))))
|
||||
(statement
|
||||
(defer_statement
|
||||
(error_capture
|
||||
(identifier))
|
||||
(statement
|
||||
(block
|
||||
(statement
|
||||
(assignment_statement
|
||||
(expression
|
||||
(sink))
|
||||
(expression
|
||||
(identifier))))))))
|
||||
(statement
|
||||
(return_statement
|
||||
(expression
|
||||
(integer)))))))
|
||||
|
||||
Reference in New Issue
Block a user