diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2016-01-04 17:14:53 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2016-01-04 17:14:53 -0700 |
| commit | 22c52f1eb67a46e60be876fda332ad7d2f338ee7 (patch) | |
| tree | 8aad02e3a9116d450dfc0350e5c1bb3feb8a1d6e /src/analyze.cpp | |
| parent | 4514661cfef1cd0090ba9888b69037af3ef9805a (diff) | |
| download | zig-22c52f1eb67a46e60be876fda332ad7d2f338ee7.tar.gz zig-22c52f1eb67a46e60be876fda332ad7d2f338ee7.zip | |
member functions get a namespaced symbol
Diffstat (limited to 'src/analyze.cpp')
| -rw-r--r-- | src/analyze.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp index acf921f35a..cdc0914fae 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -506,6 +506,16 @@ static void preview_fn_def(CodeGen *g, ImportTableEntry *import, AstNode *node, fn_table_entry->internal_linkage = is_internal; fn_table_entry->calling_convention = is_internal ? LLVMFastCallConv : LLVMCCallConv; fn_table_entry->label_table.init(8); + fn_table_entry->member_of_struct = struct_type; + + if (struct_type) { + buf_resize(&fn_table_entry->symbol_name, 0); + buf_appendf(&fn_table_entry->symbol_name, "%s_%s", + buf_ptr(&struct_type->name), + buf_ptr(proto_name)); + } else { + buf_init_from_buf(&fn_table_entry->symbol_name, proto_name); + } g->fn_protos.append(fn_table_entry); g->fn_defs.append(fn_table_entry); @@ -556,6 +566,8 @@ static void preview_function_declarations(CodeGen *g, ImportTableEntry *import, fn_table_entry->import_entry = import; fn_table_entry->label_table.init(8); + buf_init_from_buf(&fn_table_entry->symbol_name, &fn_proto->data.fn_proto.name); + resolve_function_proto(g, fn_proto, fn_table_entry, import); Buf *name = &fn_proto->data.fn_proto.name; |
