From 32c39fa1b7dd8601addc0e7e80ce6004703834c6 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 23 Mar 2010 16:56:48 -0700 Subject: [PATCH] go/printer: avoid reflect in print R=gri CC=golang-dev https://golang.org/cl/704041 --- src/pkg/go/printer/printer.go | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/pkg/go/printer/printer.go b/src/pkg/go/printer/printer.go index 4c530d2490..17d9100f4b 100644 --- a/src/pkg/go/printer/printer.go +++ b/src/pkg/go/printer/printer.go @@ -739,16 +739,13 @@ func (p *printer) writeWhitespace(n int) { // space for best comment placement. Then, any leftover whitespace is // printed, followed by the actual token. // -func (p *printer) print(args ...) { - v := reflect.NewValue(args).(*reflect.StructValue) - for i := 0; i < v.NumField(); i++ { - f := v.Field(i) - +func (p *printer) print(args ...interface{}) { + for _, f := range args { next := p.pos // estimated position of next item var data []byte var tag HTMLTag isKeyword := false - switch x := f.Interface().(type) { + switch x := f.(type) { case whiteSpace: if x == ignore { // don't add ignore's to the buffer; they @@ -795,7 +792,8 @@ func (p *printer) print(args ...) { next = x // accurate position of next item } default: - panicln("print: unsupported argument type", f.Type().String()) + fmt.Fprintf(os.Stderr, "print: unsupported argument type %T\n", f) + panic() } p.pos = next -- 2.50.0