Can call non-closure no parameter lambdas
This commit is contained in:
@@ -96,9 +96,11 @@ fun function_value_lower(name_ast_map: *map<string, pair<*tree<symbol>,*ast_node
|
||||
|
||||
var lambda_call_type = type_ptr(vector(lambda_struct_type) + t.parameter_types, t.return_type, 0, false, false, true)
|
||||
// create parameters
|
||||
var lambda_call_parameters = vector<*ast_node>()
|
||||
var lambda_call_func_param = ast_identifier_ptr("func_struct", lambda_struct_type, null<ast_node>())
|
||||
var lambda_call_parameters = vector(lambda_call_func_param)
|
||||
var lambda_call_function = ast_function_ptr(string("lambda_call"), lambda_call_type, lambda_call_parameters, false)
|
||||
lambda_call_function->function.body_statement = ast_code_block_ptr()
|
||||
lambda_call_function->function.body_statement->code_block.children.add(ast_return_statement_ptr(ast_function_call_ptr(access_expression(lambda_call_func_param, "func"), vector<*ast_node>())))
|
||||
// create call body with if, etc
|
||||
lambda_type_to_struct_type_and_call_func[t] = make_pair(lambda_struct_type, lambda_call_function)
|
||||
|
||||
@@ -131,6 +133,7 @@ fun function_value_lower(name_ast_map: *map<string, pair<*tree<symbol>,*ast_node
|
||||
body->code_block.children.add(ast_declaration_statement_ptr(ident, null<ast_node>()))
|
||||
body->code_block.children.add(ast_assignment_statement_ptr(access_expression(ident, "func"), l))
|
||||
body->code_block.children.add(ast_assignment_statement_ptr(access_expression(ident, "data"), ast_value_ptr(string("0"), type_ptr(base_type::void_return(), 1))))
|
||||
body->code_block.children.add(ast_return_statement_ptr(ident))
|
||||
lambda_creation_funcs[l]->function.body_statement = body
|
||||
name_ast_map->values.first().second->translation_unit.children.add(lambda_creation_funcs[l])
|
||||
// after we use it's type to look up the new one...
|
||||
|
||||
Reference in New Issue
Block a user