diff options
| author | gingerBill <bill@gingerbill.org> | 2020-11-17 15:54:22 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2020-11-17 15:54:22 +0000 |
| commit | aa5cb7f6a965305fc000735a4bc2a7e5b9a993d5 (patch) | |
| tree | 68b0cdf25ce3fa82560548a547c53f9223b6345a /src/check_expr.cpp | |
| parent | d730c5b334afa28666eb3101baef14b36cc726cb (diff) | |
Fix proc type printing
Diffstat (limited to 'src/check_expr.cpp')
| -rw-r--r-- | src/check_expr.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp index f6530df51..aa3d67dae 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -10633,7 +10633,26 @@ gbString write_expr_to_string(gbString str, Ast *node, bool shorthand) { str = gb_string_appendc(str, ")"); if (pt->results != nullptr) { str = gb_string_appendc(str, " -> "); + + bool parens_needed = false; + if (pt->results && pt->results->kind == Ast_FieldList) { + for_array(i, pt->results->FieldList.list) { + Ast *field = pt->results->FieldList.list[i]; + ast_node(f, Field, field); + if (f->names.count != 0) { + parens_needed = true; + break; + } + } + } + + if (parens_needed) { + str = gb_string_append_rune(str, '('); + } str = write_expr_to_string(str, pt->results, shorthand); + if (parens_needed) { + str = gb_string_append_rune(str, ')'); + } } case_end; |