aboutsummaryrefslogtreecommitdiff
path: root/src/ast_render.cpp
diff options
context:
space:
mode:
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 4689f723ee..1c82ef972e 100644
--- a/src/ast_render.cpp
+++ b/src/ast_render.cpp
@@ -104,6 +104,15 @@ static const char *defer_string(ReturnKind kind) {
zig_unreachable();
}
+static const char *layout_string(ContainerLayout layout) {
+ switch (layout) {
+ case ContainerLayoutAuto: return "";
+ case ContainerLayoutExtern: return "extern ";
+ case ContainerLayoutPacked: return "packed ";
+ }
+ zig_unreachable();
+}
+
static const char *extern_string(bool is_extern) {
return is_extern ? "extern " : "";
}
@@ -970,8 +979,8 @@ static void ast_render_tld_var(AstRender *ar, Buf *name, TldVar *tld_var) {
{
TypeTableEntry *type_entry = var->value.data.x_type;
if (type_entry->id == TypeTableEntryIdStruct) {
- const char *extern_str = extern_string(type_entry->data.structure.is_extern);
- fprintf(ar->f, "%sstruct {\n", extern_str);
+ const char *layout_str = layout_string(type_entry->data.structure.layout);
+ fprintf(ar->f, "%sstruct {\n", layout_str);
if (type_entry->data.structure.complete) {
for (size_t i = 0; i < type_entry->data.structure.src_field_count; i += 1) {
TypeStructField *field = &type_entry->data.structure.fields[i];
@@ -982,8 +991,8 @@ static void ast_render_tld_var(AstRender *ar, Buf *name, TldVar *tld_var) {
}
fprintf(ar->f, "}");
} else if (type_entry->id == TypeTableEntryIdEnum) {
- const char *extern_str = extern_string(type_entry->data.enumeration.is_extern);
- fprintf(ar->f, "%senum {\n", extern_str);
+ const char *layout_str = layout_string(type_entry->data.enumeration.layout);
+ fprintf(ar->f, "%senum {\n", layout_str);
if (type_entry->data.enumeration.complete) {
for (size_t i = 0; i < type_entry->data.enumeration.src_field_count; i += 1) {
TypeEnumField *field = &type_entry->data.enumeration.fields[i];