]> Cypherpunks repositories - gostls13.git/commitdiff
go/types: use error_.errorf for reporting related error information
authorRobert Findley <rfindley@google.com>
Mon, 18 Apr 2022 22:14:51 +0000 (18:14 -0400)
committerRobert Findley <rfindley@google.com>
Fri, 22 Apr 2022 15:46:57 +0000 (15:46 +0000)
Use error_.errorf for reporting related error information rather than
inlining the "\n\t". This aligns go/types with types2 in cases where the
related information has no position information. In other cases,
go/types needs to report a "continuation error" (starting with '\t') so
that users can access multiple error positions.

Change-Id: Ica98466596c374e0c1e502e7227c8d8c803b4c22
Reviewed-on: https://go-review.googlesource.com/c/go/+/400825
Run-TryBot: Robert Findley <rfindley@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@google.com>
src/go/types/assignments.go
src/go/types/call.go
src/go/types/conversions.go

index 101e868d82fa69bf244df1a453cb1b7426672461..98d75630efe2eeadfd5c2d7396ded1b72624fe33 100644 (file)
@@ -9,6 +9,7 @@ package types
 import (
        "fmt"
        "go/ast"
+       "go/token"
        "strings"
 )
 
@@ -339,11 +340,10 @@ func (check *Checker) initVars(lhs []*Var, origRHS []ast.Expr, returnStmt ast.St
                        } else if len(rhs) > 0 {
                                at = rhs[len(rhs)-1].expr // report at last value
                        }
-                       check.errorf(at, _WrongResultCount, "%s return values\n\thave %s\n\twant %s",
-                               qualifier,
-                               check.typesSummary(operandTypes(rhs), false),
-                               check.typesSummary(varTypes(lhs), false),
-                       )
+                       err := newErrorf(at, _WrongResultCount, "%s return values", qualifier)
+                       err.errorf(token.NoPos, "have %s", check.typesSummary(operandTypes(rhs), false))
+                       err.errorf(token.NoPos, "want %s", check.typesSummary(varTypes(lhs), false))
+                       check.report(err)
                        return
                }
                if compilerErrorMessages {
index 51603170a6041e127e56b22a8cdf3224a0d5551d..3c7c3226f622e3e0afdac08908d3d321a26c6c80 100644 (file)
@@ -368,11 +368,10 @@ func (check *Checker) arguments(call *ast.CallExpr, sig *Signature, targs []Type
                if sig.params != nil {
                        params = sig.params.vars
                }
-               check.errorf(at, _WrongArgCount, "%s arguments in call to %s\n\thave %s\n\twant %s",
-                       qualifier, call.Fun,
-                       check.typesSummary(operandTypes(args), false),
-                       check.typesSummary(varTypes(params), sig.variadic),
-               )
+               err := newErrorf(at, _WrongArgCount, "%s arguments in call to %s", qualifier, call.Fun)
+               err.errorf(token.NoPos, "have %s", check.typesSummary(operandTypes(args), false))
+               err.errorf(token.NoPos, "want %s", check.typesSummary(varTypes(params), sig.variadic))
+               check.report(err)
                return
        }
 
index 65691cf4550acc061b995ddfa722091701f65a4c..362c8fdbac95f3f17a73f27e54f48eedfa107819 100644 (file)
@@ -8,6 +8,7 @@ package types
 
 import (
        "go/constant"
+       "go/token"
        "unicode"
 )
 
@@ -74,7 +75,9 @@ func (check *Checker) conversion(x *operand, T Type) {
                if compilerErrorMessages {
                        if cause != "" {
                                // Add colon at end of line if we have a following cause.
-                               check.errorf(x, _InvalidConversion, "cannot convert %s to type %s:\n\t%s", x, T, cause)
+                               err := newErrorf(x, _InvalidConversion, "cannot convert %s to type %s:", x, T)
+                               err.errorf(token.NoPos, cause)
+                               check.report(err)
                        } else {
                                check.errorf(x, _InvalidConversion, "cannot convert %s to type %s", x, T)
                        }