]> Cypherpunks repositories - gostls13.git/commitdiff
go/types, types2: fix tracing output for type and expr lists
authorRobert Griesemer <gri@golang.org>
Wed, 12 Jan 2022 06:19:56 +0000 (22:19 -0800)
committerRobert Griesemer <gri@golang.org>
Wed, 12 Jan 2022 19:03:12 +0000 (19:03 +0000)
- support printing of expression and type lists in sprintf
- simplified some code in go/types/exprstring.go
- fixed a typo in syntax package

Change-Id: Ic4bc154200aad95958d5bc2904a9ea17cf518388
Reviewed-on: https://go-review.googlesource.com/c/go/+/377974
Trust: Robert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
src/cmd/compile/internal/syntax/printer.go
src/cmd/compile/internal/types2/errors.go
src/go/types/errors.go
src/go/types/exprstring.go

index 11190ab2879b6da7e4e262e33f11aa5e3f7ffa1d..0385227c7c804868abf8f4b971613565b9a9ed7f 100644 (file)
@@ -44,7 +44,7 @@ func Fprint(w io.Writer, x Node, form Form) (n int, err error) {
        return
 }
 
-// String is a convenience functions that prints n in ShortForm
+// String is a convenience function that prints n in ShortForm
 // and returns the printed string.
 func String(n Node) string {
        var buf bytes.Buffer
index c39652fe5e4378bc254151060afedee4feec8cd9..2318b95f3d566b4074be6913d816263c21354ac7 100644 (file)
@@ -98,10 +98,32 @@ func sprintf(qf Qualifier, debug bool, format string, args ...interface{}) strin
                        arg = a.String()
                case syntax.Expr:
                        arg = syntax.String(a)
+               case []syntax.Expr:
+                       var buf bytes.Buffer
+                       buf.WriteByte('[')
+                       for i, x := range a {
+                               if i > 0 {
+                                       buf.WriteString(", ")
+                               }
+                               buf.WriteString(syntax.String(x))
+                       }
+                       buf.WriteByte(']')
+                       arg = buf.String()
                case Object:
                        arg = ObjectString(a, qf)
                case Type:
                        arg = typeString(a, qf, debug)
+               case []Type:
+                       var buf bytes.Buffer
+                       buf.WriteByte('[')
+                       for i, x := range a {
+                               if i > 0 {
+                                       buf.WriteString(", ")
+                               }
+                               buf.WriteString(typeString(x, qf, debug))
+                       }
+                       buf.WriteByte(']')
+                       arg = buf.String()
                }
                args[i] = arg
        }
index 81c62a82f0e4412ccf42ef2a56d49eb33247c895..ce62a8cbddd972da2b1da365e27cbc8c4cfb2bd3 100644 (file)
@@ -7,6 +7,7 @@
 package types
 
 import (
+       "bytes"
        "errors"
        "fmt"
        "go/ast"
@@ -81,10 +82,27 @@ func sprintf(fset *token.FileSet, qf Qualifier, debug bool, format string, args
                        }
                case ast.Expr:
                        arg = ExprString(a)
+               case []ast.Expr:
+                       var buf bytes.Buffer
+                       buf.WriteByte('[')
+                       writeExprList(&buf, a)
+                       buf.WriteByte(']')
+                       arg = buf.String()
                case Object:
                        arg = ObjectString(a, qf)
                case Type:
                        arg = typeString(a, qf, debug)
+               case []Type:
+                       var buf bytes.Buffer
+                       buf.WriteByte('[')
+                       for i, x := range a {
+                               if i > 0 {
+                                       buf.WriteString(", ")
+                               }
+                               buf.WriteString(typeString(x, qf, debug))
+                       }
+                       buf.WriteByte(']')
+                       arg = buf.String()
                }
                args[i] = arg
        }
index aa4f403c1f1e8019ea444d14498469ced4746ce5..544cd84d6120ed27406388b785c45ec9f8b7ddd5 100644 (file)
@@ -71,12 +71,7 @@ func WriteExpr(buf *bytes.Buffer, x ast.Expr) {
                ix := typeparams.UnpackIndexExpr(x)
                WriteExpr(buf, ix.X)
                buf.WriteByte('[')
-               for i, e := range ix.Indices {
-                       if i > 0 {
-                               buf.WriteString(", ")
-                       }
-                       WriteExpr(buf, e)
-               }
+               writeExprList(buf, ix.Indices)
                buf.WriteByte(']')
 
        case *ast.SliceExpr: