aboutsummaryrefslogtreecommitdiff
path: root/src/ast_render.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-06-14 00:04:34 -0400
committerAndrew Kelley <superjoe30@gmail.com>2017-06-14 00:04:34 -0400
commit6a93dda3e1c0ff5f400da25a5d14c907fc9a6fdf (patch)
tree08260222b967ccf73f237ae97824c054c023c9b8 /src/ast_render.cpp
parent199bbb6292896330ced71dec2e5c58a49af5907e (diff)
downloadzig-6a93dda3e1c0ff5f400da25a5d14c907fc9a6fdf.tar.gz
zig-6a93dda3e1c0ff5f400da25a5d14c907fc9a6fdf.zip
progress toward windows hello world working
Diffstat (limited to 'src/ast_render.cpp')
-rw-r--r--src/ast_render.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/ast_render.cpp b/src/ast_render.cpp
index a1b443986f..3def04801b 100644
--- a/src/ast_render.cpp
+++ b/src/ast_render.cpp
@@ -118,6 +118,17 @@ static const char *extern_string(bool is_extern) {
return is_extern ? "extern " : "";
}
+static const char *calling_convention_string(CallingConvention cc) {
+ switch (cc) {
+ case CallingConventionUnspecified: return "";
+ case CallingConventionC: return "extern ";
+ case CallingConventionCold: return "coldcc ";
+ case CallingConventionNaked: return "nakedcc ";
+ case CallingConventionStdcall: return "stdcallcc ";
+ }
+ zig_unreachable();
+}
+
static const char *inline_string(bool is_inline) {
return is_inline ? "inline " : "";
}
@@ -951,10 +962,8 @@ static void ast_render_tld_fn(AstRender *ar, Buf *name, TldFn *tld_fn) {
FnTableEntry *fn_entry = tld_fn->fn_entry;
FnTypeId *fn_type_id = &fn_entry->type_entry->data.fn.fn_type_id;
const char *visib_mod_str = visib_mod_string(tld_fn->base.visib_mod);
- const char *extern_str = extern_string(fn_type_id->is_extern);
- const char *coldcc_str = fn_type_id->is_cold ? "coldcc " : "";
- const char *nakedcc_str = fn_type_id->is_naked ? "nakedcc " : "";
- fprintf(ar->f, "%s%s%s%sfn %s(", visib_mod_str, extern_str, coldcc_str, nakedcc_str, buf_ptr(&fn_entry->symbol_name));
+ const char *cc_str = calling_convention_string(fn_type_id->cc);
+ fprintf(ar->f, "%s%sfn %s(", visib_mod_str, cc_str, buf_ptr(&fn_entry->symbol_name));
for (size_t i = 0; i < fn_type_id->param_count; i += 1) {
FnTypeParamInfo *param_info = &fn_type_id->param_info[i];
if (i != 0) {