From d84d338a42552634dc7a95228dbfa002176a6f0a Mon Sep 17 00:00:00 2001 From: Alan Donovan Date: Tue, 5 Nov 2013 13:03:14 -0500 Subject: [PATCH] go.tools/ssa/interp: improve print() on interfaces, and log message for panic. R=gri CC=golang-dev https://golang.org/cl/21960043 --- ssa/interp/interp.go | 2 +- ssa/interp/ops.go | 4 ++++ ssa/interp/value.go | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ssa/interp/interp.go b/ssa/interp/interp.go index 7b67f4ca91..b9adf6b1fa 100644 --- a/ssa/interp/interp.go +++ b/ssa/interp/interp.go @@ -547,7 +547,7 @@ func runFrame(fr *frame) { fr.panicking = true fr.panic = recover() if fr.i.mode&EnableTracing != 0 { - fmt.Fprintf(os.Stderr, "Panicking: %s.\n", fr.panic) + fmt.Fprintf(os.Stderr, "Panicking: %T %v.\n", fr.panic, fr.panic) } fr.runDefers() fr.block = fr.fn.Recover // recovered panic diff --git a/ssa/interp/ops.go b/ssa/interp/ops.go index 50bfd33fb2..524ca17389 100644 --- a/ssa/interp/ops.go +++ b/ssa/interp/ops.go @@ -23,6 +23,10 @@ type targetPanic struct { v value } +func (p targetPanic) String() string { + return toString(p.v) +} + // If the target program calls exit, the interpreter panics with this type. type exitPanic int diff --git a/ssa/interp/value.go b/ssa/interp/value.go index 67f05c7348..8ec95a50ae 100644 --- a/ssa/interp/value.go +++ b/ssa/interp/value.go @@ -395,7 +395,9 @@ func toWriter(w io.Writer, v value) { } case iface: + fmt.Fprintf(w, "(%s, ", v.t) toWriter(w, v.v) + io.WriteString(w, ")") case structure: io.WriteString(w, "{")