Implement return keyword

This commit is contained in:
Sam Mohr 2024-10-20 04:50:12 -07:00
parent 20a539a96d
commit b3e60f9d3a
No known key found for this signature in database
GPG key ID: EA41D161A3C1BC99
39 changed files with 594 additions and 80 deletions

View file

@ -147,6 +147,7 @@ fn wrap_in_decode_custom_decode_with(
function_type: fn_var,
closure_type: fn_clos_var,
return_type: decode_with_result_var,
early_returns: vec![],
name: fn_name,
captured_symbols: sorted_inner_decoder_captures,
recursive: Recursive::NotRecursive,

View file

@ -350,6 +350,7 @@ pub(super) fn step_field(
function_type,
closure_type,
return_type: keep_or_skip_var,
early_returns: vec![],
name: step_field_closure,
captured_symbols: Vec::new(),
recursive: Recursive::NotRecursive,
@ -586,6 +587,7 @@ fn custom_decoder_lambda(env: &mut Env<'_>, args: DecodingFieldArgs) -> (Variabl
function_type: this_custom_callback_var,
closure_type: custom_callback_lambda_set_var,
return_type: custom_callback_ret_var,
early_returns: vec![],
name: custom_closure_symbol,
captured_symbols: vec![(state_arg_symbol, state_record_var)],
recursive: Recursive::NotRecursive,
@ -993,6 +995,7 @@ pub(super) fn finalizer(
function_type: function_var,
closure_type,
return_type: return_type_var,
early_returns: vec![],
name: function_symbol,
captured_symbols: Vec::new(),
recursive: Recursive::NotRecursive,

View file

@ -556,6 +556,7 @@ fn step_elem(
function_type: this_custom_callback_var,
closure_type: custom_callback_lambda_set_var,
return_type: custom_callback_ret_var,
early_returns: vec![],
name: custom_closure_symbol,
captured_symbols: vec![(state_arg_symbol, state_record_var)],
recursive: Recursive::NotRecursive,
@ -710,6 +711,7 @@ fn step_elem(
function_type,
closure_type,
return_type: keep_or_skip_var,
early_returns: vec![],
name: step_elem_closure,
captured_symbols: Vec::new(),
recursive: Recursive::NotRecursive,
@ -896,6 +898,7 @@ fn finalizer(
function_type: function_var,
closure_type,
return_type: return_type_var,
early_returns: vec![],
name: function_symbol,
captured_symbols: Vec::new(),
recursive: Recursive::NotRecursive,

View file

@ -188,6 +188,7 @@ fn to_encoder_list(env: &mut Env<'_>, fn_name: Symbol) -> (Expr, Variable) {
function_type: to_elem_encoder_fn_var,
closure_type: to_elem_encoder_lset,
return_type: elem_encoder_var,
early_returns: vec![],
name: to_elem_encoder_sym,
captured_symbols: vec![],
recursive: Recursive::NotRecursive,
@ -281,6 +282,7 @@ fn to_encoder_list(env: &mut Env<'_>, fn_name: Symbol) -> (Expr, Variable) {
function_type: fn_var,
closure_type: fn_clos_var,
return_type: this_encoder_var,
early_returns: vec![],
name: fn_name,
captured_symbols: vec![],
recursive: Recursive::NotRecursive,
@ -490,6 +492,7 @@ fn to_encoder_record(
function_type: fn_var,
closure_type: fn_clos_var,
return_type: this_encoder_var,
early_returns: vec![],
name: fn_name,
captured_symbols: vec![],
recursive: Recursive::NotRecursive,
@ -672,6 +675,7 @@ fn to_encoder_tuple(
function_type: fn_var,
closure_type: fn_clos_var,
return_type: this_encoder_var,
early_returns: vec![],
name: fn_name,
captured_symbols: vec![],
recursive: Recursive::NotRecursive,
@ -914,6 +918,7 @@ fn to_encoder_tag_union(
function_type: fn_var,
closure_type: fn_clos_var,
return_type: this_encoder_var,
early_returns: vec![],
name: fn_name,
captured_symbols: vec![],
recursive: Recursive::NotRecursive,
@ -1025,6 +1030,7 @@ fn wrap_in_encode_custom(
function_type: fn_var,
closure_type: fn_clos_var,
return_type: Variable::LIST_U8,
early_returns: vec![],
name: fn_name,
captured_symbols: vec![(captured_symbol, captured_var)],
recursive: Recursive::NotRecursive,

View file

@ -542,6 +542,7 @@ fn build_outer_derived_closure(
function_type: fn_var,
closure_type: fn_clos_var,
return_type: body_var,
early_returns: vec![],
name: fn_name,
captured_symbols: vec![],
recursive: Recursive::NotRecursive,

View file

@ -194,6 +194,7 @@ fn to_inspector_list(env: &mut Env<'_>, fn_name: Symbol) -> (Expr, Variable) {
function_type: to_elem_inspector_fn_var,
closure_type: to_elem_inspector_lset,
return_type: elem_inspector_var,
early_returns: vec![],
name: to_elem_inspector_sym,
captured_symbols: vec![],
recursive: Recursive::NotRecursive,
@ -292,6 +293,7 @@ fn to_inspector_list(env: &mut Env<'_>, fn_name: Symbol) -> (Expr, Variable) {
function_type: fn_var,
closure_type: fn_clos_var,
return_type: this_inspector_var,
early_returns: vec![],
name: fn_name,
captured_symbols: vec![],
recursive: Recursive::NotRecursive,
@ -502,6 +504,7 @@ fn to_inspector_record(
function_type: fn_var,
closure_type: fn_clos_var,
return_type: this_inspector_var,
early_returns: vec![],
name: fn_name,
captured_symbols: vec![],
recursive: Recursive::NotRecursive,
@ -685,6 +688,7 @@ fn to_inspector_tuple(
function_type: fn_var,
closure_type: fn_clos_var,
return_type: this_inspector_var,
early_returns: vec![],
name: fn_name,
captured_symbols: vec![],
recursive: Recursive::NotRecursive,
@ -931,6 +935,7 @@ fn to_inspector_tag_union(
function_type: fn_var,
closure_type: fn_clos_var,
return_type: this_inspector_var,
early_returns: vec![],
name: fn_name,
captured_symbols: vec![],
recursive: Recursive::NotRecursive,
@ -1029,6 +1034,7 @@ fn wrap_in_inspect_custom(
function_type: fn_var,
closure_type: fn_clos_var,
return_type: fmt_var,
early_returns: vec![],
name: fn_name,
captured_symbols: vec![(captured_symbol, captured_var)],
recursive: Recursive::NotRecursive,