From 3e6b7f35de96414a3a393f0ad25326f411101776 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 15 Apr 2015 13:49:32 -0400 Subject: [PATCH] fmt: add a few more reflect.Value tests Change-Id: I86530a4fd240f3e056e3277355d2965f6863b852 Reviewed-on: https://go-review.googlesource.com/8951 Reviewed-by: Rob Pike --- src/fmt/fmt_test.go | 8 ++++++++ src/fmt/print.go | 2 ++ 2 files changed, 10 insertions(+) diff --git a/src/fmt/fmt_test.go b/src/fmt/fmt_test.go index 96505b8271..948df3579c 100644 --- a/src/fmt/fmt_test.go +++ b/src/fmt/fmt_test.go @@ -686,6 +686,14 @@ var fmtTests = []struct { // Issue 8965. {"%v", reflect.ValueOf(A{}).Field(0).String(), ""}, // Equivalent to the old way. {"%v", reflect.ValueOf(A{}).Field(0), "0"}, // Sees inside the field. + + // verbs apply to the extracted value too. + {"%s", reflect.ValueOf("hello"), "hello"}, + {"%q", reflect.ValueOf("hello"), `"hello"`}, + {"%#04x", reflect.ValueOf(256), "0x0100"}, + + // invalid reflect.Value doesn't crash. + {"%v", reflect.Value{}, ""}, } // zeroFill generates zero-filled strings of the specified width. The length diff --git a/src/fmt/print.go b/src/fmt/print.go index c8038f09a8..8e35a890ec 100644 --- a/src/fmt/print.go +++ b/src/fmt/print.go @@ -847,6 +847,8 @@ func (p *pp) printReflectValue(value reflect.Value, verb rune, depth int) (wasSt p.value = value BigSwitch: switch f := value; f.Kind() { + case reflect.Invalid: + p.buf.WriteString("") case reflect.Bool: p.fmtBool(f.Bool(), verb) case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: -- 2.48.1