diff options
| author | Ginger Bill <bill@gingerbill.org> | 2017-06-18 23:16:57 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2017-06-18 23:16:57 +0100 |
| commit | 126f7aa8923b6517c1c7a650ee6c0a374fa293da (patch) | |
| tree | 74e93bf5bd1d6aa7c772df42b7797e08cf5144c7 /src/check_expr.cpp | |
| parent | 2957f007e34ed7e2704a40c9e7af9148aebcdf23 (diff) | |
Begin work on documentation generation
Diffstat (limited to 'src/check_expr.cpp')
| -rw-r--r-- | src/check_expr.cpp | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 53cc615ad..b7c813bac 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -6637,11 +6637,47 @@ gbString write_expr_to_string(gbString str, AstNode *node) { case_end; case_ast_node(f, FieldList, node); + bool has_name = false; + for_array(i, f->list) { + ast_node(field, Field, f->list[i]); + if (field->names.count > 1) { + has_name = true; + break; + } + + if (field->names.count == 0) { + continue; + } + AstNode *name = field->names[0]; + ast_node(n, Ident, name); + if (n->string != "_") { + has_name = true; + break; + } + } + + for_array(i, f->list) { if (i > 0) { str = gb_string_appendc(str, ", "); } - str = write_expr_to_string(str, f->list[i]); + if (has_name) { + str = write_expr_to_string(str, f->list[i]); + } else { + ast_node(field, Field, f->list[i]); + + if (field->flags&FieldFlag_using) { + str = gb_string_appendc(str, "using "); + } + if (field->flags&FieldFlag_no_alias) { + str = gb_string_appendc(str, "#no_alias "); + } + if (field->flags&FieldFlag_c_vararg) { + str = gb_string_appendc(str, "#c_vararg "); + } + + str = write_expr_to_string(str, field->type); + } } case_end; @@ -6670,6 +6706,11 @@ gbString write_expr_to_string(gbString str, AstNode *node) { str = gb_string_appendc(str, "proc("); str = write_expr_to_string(str, pt->params); str = gb_string_appendc(str, ")"); + if (pt->results != NULL) { + str = gb_string_appendc(str, " -> "); + str = write_expr_to_string(str, pt->results); + } + case_end; case_ast_node(st, StructType, node); |