aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2020-11-17 15:54:22 +0000
committergingerBill <bill@gingerbill.org>2020-11-17 15:54:22 +0000
commitaa5cb7f6a965305fc000735a4bc2a7e5b9a993d5 (patch)
tree68b0cdf25ce3fa82560548a547c53f9223b6345a /src/check_expr.cpp
parentd730c5b334afa28666eb3101baef14b36cc726cb (diff)
Fix proc type printing
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp19
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;