Merge pull request #3 from aryszka/bugfix/map-node-length
fix bug with node length of conflicting map entries
This commit is contained in:
commit
ba7be0c5f2
24
bugfix_test.go
Normal file
24
bugfix_test.go
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package notation
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func TestMapWrapping(t *testing.T) {
|
||||||
|
const expect = `map[*interface{}]interface{}{
|
||||||
|
*interface{}(string("foo")): interface{}(bool(true)),
|
||||||
|
*interface{}(string("foo")): interface{}(bool(true)),
|
||||||
|
}`
|
||||||
|
|
||||||
|
ifpointer := func(v interface{}) *interface{} {
|
||||||
|
return &v
|
||||||
|
}
|
||||||
|
|
||||||
|
m := map[*interface{}]interface{}{
|
||||||
|
ifpointer("foo"): true,
|
||||||
|
ifpointer("foo"): true,
|
||||||
|
}
|
||||||
|
|
||||||
|
s := Sprintwv(m)
|
||||||
|
if s != expect {
|
||||||
|
t.Fatalf("expected: %s, got: %s", expect, s)
|
||||||
|
}
|
||||||
|
}
|
@ -24,6 +24,7 @@ const (
|
|||||||
skipTypes
|
skipTypes
|
||||||
allTypes
|
allTypes
|
||||||
randomMaps
|
randomMaps
|
||||||
|
pointerValues
|
||||||
)
|
)
|
||||||
|
|
||||||
type wrapLen struct {
|
type wrapLen struct {
|
||||||
|
@ -144,9 +144,10 @@ func reflectMap(o opts, p *pending, r reflect.Value) node {
|
|||||||
sn := make(map[string]node)
|
sn := make(map[string]node)
|
||||||
for _, key := range r.MapKeys() {
|
for _, key := range r.MapKeys() {
|
||||||
kn := reflectValue(itemOpts, p, key)
|
kn := reflectValue(itemOpts, p, key)
|
||||||
|
knExt := reflectValue(allTypes|pointerValues, p, key)
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
wr := writer{w: &b}
|
wr := writer{w: &b}
|
||||||
fprint(&wr, 0, kn)
|
fprint(&wr, 0, knExt)
|
||||||
skey := b.String()
|
skey := b.String()
|
||||||
skeys = append(skeys, skey)
|
skeys = append(skeys, skey)
|
||||||
sv[skey] = key
|
sv[skey] = key
|
||||||
@ -183,7 +184,11 @@ func reflectPointer(o opts, p *pending, r reflect.Value) node {
|
|||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if o&pointerValues == 0 {
|
||||||
return nodeOf("*", e)
|
return nodeOf("*", e)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nodeOf("*(", r.Pointer(), ")", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
func reflectList(o opts, p *pending, r reflect.Value) node {
|
func reflectList(o opts, p *pending, r reflect.Value) node {
|
||||||
|
Loading…
Reference in New Issue
Block a user