aboutsummaryrefslogtreecommitdiff
path: root/src/go/types/errors.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/go/types/errors.go')
-rw-r--r--src/go/types/errors.go18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/go/types/errors.go b/src/go/types/errors.go
index 2263106417..933de93d85 100644
--- a/src/go/types/errors.go
+++ b/src/go/types/errors.go
@@ -63,22 +63,28 @@ func (check *Checker) markImports(pkg *Package) {
}
func (check *Checker) sprintf(format string, args ...interface{}) string {
+ return sprintf(check.fset, check.qualifier, format, args...)
+}
+
+func sprintf(fset *token.FileSet, qf Qualifier, format string, args ...interface{}) string {
for i, arg := range args {
switch a := arg.(type) {
case nil:
arg = "<nil>"
case operand:
- panic("internal error: should always pass *operand")
+ panic("got operand instead of *operand")
case *operand:
- arg = operandString(a, check.qualifier)
+ arg = operandString(a, qf)
case token.Pos:
- arg = check.fset.Position(a).String()
+ if fset != nil {
+ arg = fset.Position(a).String()
+ }
case ast.Expr:
arg = ExprString(a)
case Object:
- arg = ObjectString(a, check.qualifier)
+ arg = ObjectString(a, qf)
case Type:
- arg = TypeString(a, check.qualifier)
+ arg = TypeString(a, qf)
}
args[i] = arg
}
@@ -236,7 +242,7 @@ func (s atPos) Pos() token.Pos {
func spanOf(at positioner) posSpan {
switch x := at.(type) {
case nil:
- panic("internal error: nil")
+ panic("nil positioner")
case posSpan:
return x
case ast.Node: