aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/runtime/error.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/runtime/error.go')
-rw-r--r--libgo/go/runtime/error.go51
1 files changed, 45 insertions, 6 deletions
diff --git a/libgo/go/runtime/error.go b/libgo/go/runtime/error.go
index 6cc46bf..d91e2db 100644
--- a/libgo/go/runtime/error.go
+++ b/libgo/go/runtime/error.go
@@ -226,11 +226,6 @@ type stringer interface {
String() string
}
-func typestring(x interface{}) string {
- e := efaceOf(&x)
- return e._type.string()
-}
-
// printany prints an argument passed to panic.
// If panic is called with a value that has a String or Error method,
// it has already been converted into a string by preprintpanics.
@@ -273,6 +268,50 @@ func printany(i interface{}) {
case string:
print(v)
default:
- print("(", typestring(i), ") ", i)
+ printanycustomtype(i)
+ }
+}
+
+func printanycustomtype(i interface{}) {
+ eface := efaceOf(&i)
+ typestring := eface._type.string()
+
+ switch eface._type.kind & ((1 << 5) - 1) {
+ case kindString:
+ print(typestring, `("`, *(*string)(eface.data), `")`)
+ case kindBool:
+ print(typestring, "(", *(*bool)(eface.data), ")")
+ case kindInt:
+ print(typestring, "(", *(*int)(eface.data), ")")
+ case kindInt8:
+ print(typestring, "(", *(*int8)(eface.data), ")")
+ case kindInt16:
+ print(typestring, "(", *(*int16)(eface.data), ")")
+ case kindInt32:
+ print(typestring, "(", *(*int32)(eface.data), ")")
+ case kindInt64:
+ print(typestring, "(", *(*int64)(eface.data), ")")
+ case kindUint:
+ print(typestring, "(", *(*uint)(eface.data), ")")
+ case kindUint8:
+ print(typestring, "(", *(*uint8)(eface.data), ")")
+ case kindUint16:
+ print(typestring, "(", *(*uint16)(eface.data), ")")
+ case kindUint32:
+ print(typestring, "(", *(*uint32)(eface.data), ")")
+ case kindUint64:
+ print(typestring, "(", *(*uint64)(eface.data), ")")
+ case kindUintptr:
+ print(typestring, "(", *(*uintptr)(eface.data), ")")
+ case kindFloat32:
+ print(typestring, "(", *(*float32)(eface.data), ")")
+ case kindFloat64:
+ print(typestring, "(", *(*float64)(eface.data), ")")
+ case kindComplex64:
+ print(typestring, *(*complex64)(eface.data))
+ case kindComplex128:
+ print(typestring, *(*complex128)(eface.data))
+ default:
+ print("(", typestring, ") ", eface.data)
}
}