]> Cypherpunks repositories - gostls13.git/commitdiff
fmt: add a few more reflect.Value tests
authorRuss Cox <rsc@golang.org>
Wed, 15 Apr 2015 17:49:32 +0000 (13:49 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 16 Apr 2015 16:29:58 +0000 (16:29 +0000)
Change-Id: I86530a4fd240f3e056e3277355d2965f6863b852
Reviewed-on: https://go-review.googlesource.com/8951
Reviewed-by: Rob Pike <r@golang.org>
src/fmt/fmt_test.go
src/fmt/print.go

index 96505b82716abc926aaf72641ad3ca7e56735aa4..948df3579cbd968c99957011d931e3397a1bc9c6 100644 (file)
@@ -686,6 +686,14 @@ var fmtTests = []struct {
        // Issue 8965.
        {"%v", reflect.ValueOf(A{}).Field(0).String(), "<int Value>"}, // 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{}, "<nil>"},
 }
 
 // zeroFill generates zero-filled strings of the specified width. The length
index c8038f09a8818b7ed0457a6387d1f3531aeabb7d..8e35a890ec9f2c95740232081aae4fc9bdc1d2ee 100644 (file)
@@ -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("<invalid reflect.Value>")
        case reflect.Bool:
                p.fmtBool(f.Bool(), verb)
        case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: