@@ -281,7 +281,7 @@ func (ns *Namespace) In(l any, v any) (bool, error) {
281
281
lv := reflect .ValueOf (l )
282
282
vv := reflect .ValueOf (v )
283
283
284
- vvk := normalize (vv )
284
+ vvk := normalizeMapKey (vv )
285
285
286
286
switch lv .Kind () {
287
287
case reflect .Array , reflect .Slice :
@@ -291,7 +291,7 @@ func (ns *Namespace) In(l any, v any) (bool, error) {
291
291
continue
292
292
}
293
293
294
- lvvk := normalize (lvv )
294
+ lvvk := normalizeMapKey (lvv )
295
295
296
296
if lvvk == vvk {
297
297
return true , nil
@@ -617,10 +617,10 @@ type intersector struct {
617
617
}
618
618
619
619
func (i * intersector ) appendIfNotSeen (v reflect.Value ) {
620
- vi := v . Interface ( )
621
- if ! i .seen [vi ] {
620
+ k := normalizeMapKey ( v )
621
+ if ! i .seen [k ] {
622
622
i .r = reflect .Append (i .r , v )
623
- i .seen [vi ] = true
623
+ i .seen [k ] = true
624
624
}
625
625
}
626
626
@@ -638,7 +638,7 @@ func (i *intersector) handleValuePair(l1vv, l2vv reflect.Value) {
638
638
i .appendIfNotSeen (l1vv )
639
639
}
640
640
case kind == reflect .Ptr , kind == reflect .Struct :
641
- if l1vv .Interface () == l2vv .Interface () {
641
+ if types . Unwrapv ( l1vv .Interface ()) == types . Unwrapv ( l2vv .Interface () ) {
642
642
i .appendIfNotSeen (l1vv )
643
643
}
644
644
case kind == reflect .Interface :
@@ -755,7 +755,7 @@ func (ns *Namespace) Uniq(l any) (any, error) {
755
755
for i := 0 ; i < v .Len (); i ++ {
756
756
ev , _ := indirectInterface (v .Index (i ))
757
757
758
- key := normalize (ev )
758
+ key := normalizeMapKey (ev )
759
759
760
760
if _ , found := seen [key ]; ! found {
761
761
slice = reflect .Append (slice , ev )
0 commit comments