]> Cypherpunks.ru repositories - gostls13.git/commitdiff
reflect: fix stale Value.kind documentation
authorJoe Tsai <joetsai@digital-static.net>
Wed, 24 Aug 2022 02:27:49 +0000 (19:27 -0700)
committerJoseph Tsai <joetsai@digital-static.net>
Wed, 7 Sep 2022 16:41:47 +0000 (16:41 +0000)
The lowests fives bits are the kind, and the next five bits are attributes,
not the other way around.

Change-Id: I5e1d13b195b766e99f66bb1227cc7f84e85dc49d
Reviewed-on: https://go-review.googlesource.com/c/go/+/425185
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Reviewed-by: Keith Randall <khr@golang.org>
Auto-Submit: Keith Randall <khr@golang.org>

src/reflect/value.go

index 5276af6fd67ebba88d2ff7b2e9008838ca0285dc..6830057d6118822d07921d8331195f243d7a906a 100644 (file)
@@ -45,17 +45,19 @@ type Value struct {
        ptr unsafe.Pointer
 
        // flag holds metadata about the value.
-       // The lowest bits are flag bits:
+       //
+       // The lowest five bits give the Kind of the value, mirroring typ.Kind().
+       //
+       // The next set of bits are flag bits:
        //      - flagStickyRO: obtained via unexported not embedded field, so read-only
        //      - flagEmbedRO: obtained via unexported embedded field, so read-only
        //      - flagIndir: val holds a pointer to the data
-       //      - flagAddr: v.CanAddr is true (implies flagIndir)
+       //      - flagAddr: v.CanAddr is true (implies flagIndir and ptr is non-nil)
        //      - flagMethod: v is a method value.
-       // The next five bits give the Kind of the value.
-       // This repeats typ.Kind() except for method values.
-       // The remaining 23+ bits give a method number for method values.
-       // If flag.kind() != Func, code can assume that flagMethod is unset.
        // If ifaceIndir(typ), code can assume that flagIndir is set.
+       //
+       // The remaining 22+ bits give a method number for method values.
+       // If flag.kind() != Func, code can assume that flagMethod is unset.
        flag
 
        // A method value represents a curried method invocation