aboutsummaryrefslogtreecommitdiff
path: root/src/parseh.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/parseh.cpp')
-rw-r--r--src/parseh.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/parseh.cpp b/src/parseh.cpp
index dcd34d342d..ff2f9c129a 100644
--- a/src/parseh.cpp
+++ b/src/parseh.cpp
@@ -618,6 +618,20 @@ static void visit_fn_decl(Context *c, const FunctionDecl *fn_decl) {
assert(!fn_type->data.fn.fn_type_id.is_naked);
+ size_t arg_count = fn_type->data.fn.fn_type_id.param_count;
+ fn_entry->param_names = allocate<Buf *>(arg_count);
+ Buf *name_buf;
+ for (size_t i = 0; i < arg_count; i += 1) {
+ const ParmVarDecl *param = fn_decl->getParamDecl(i);
+ const char *name = decl_name(param);
+ if (strlen(name) == 0) {
+ name_buf = buf_sprintf("arg%zu", i);
+ } else {
+ name_buf = buf_create_from_str(name);
+ }
+ fn_entry->param_names[i] = name_buf;
+ }
+
TldFn *tld_fn = allocate<TldFn>(1);
parseh_init_tld(c, &tld_fn->base, TldIdFn, fn_name);
tld_fn->fn_entry = fn_entry;