ref: add type/classname result for each gen_* function
This commit is contained in:
@@ -1,23 +1,24 @@
|
||||
#include <common/fzl_extern.h>
|
||||
#include <common/fzl_types.h>
|
||||
#include <compiler/fzl_token.h>
|
||||
#include <compiler/internals/gen.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
|
||||
// Type reference (convert T => T*)
|
||||
bool gen_reference(fzl_gen_t *gen, fzl_node_t *node)
|
||||
gen_res_t gen_reference(fzl_gen_t *gen, fzl_node_t *node)
|
||||
{
|
||||
if (!gen || !node)
|
||||
return false;
|
||||
return (gen_res_t){.error = true};
|
||||
|
||||
char *refname = (char *)node->token->value;
|
||||
ssize_t slot = gen_resolve_extern_type(gen, refname);
|
||||
if (slot == -1)
|
||||
return false;
|
||||
return (gen_res_t){.error = true};
|
||||
|
||||
type_buf.kind = FZL_EXTERN_KIND_REF;
|
||||
type_buf.ref_target =
|
||||
(fzl_extern_type_ref_t){.is_primitive = false, .type_slot = slot};
|
||||
|
||||
return true;
|
||||
return (gen_res_t){.error = false, .type = FZL_TYPE_NULL, .classname = NULL};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user