assignReflectValue assigns src into dst, unwrapping a pointer when dst expects the pointee type. This tolerates the pointer-wrapping performed by [typeFromValue] for addressable fields.
(dst reflect.Value, src any)
| 365 | // |
| 366 | // This tolerates the pointer-wrapping performed by [typeFromValue] for addressable fields. |
| 367 | func assignReflectValue(dst reflect.Value, src any) { |
| 368 | nv := reflect.ValueOf(src) |
| 369 | if !nv.IsValid() { |
| 370 | return |
| 371 | } |
| 372 | if nv.Type().AssignableTo(dst.Type()) { |
| 373 | dst.Set(nv) |
| 374 | return |
| 375 | } |
| 376 | if nv.Kind() == reflect.Pointer && nv.Elem().Type().AssignableTo(dst.Type()) { |
| 377 | dst.Set(nv.Elem()) |
| 378 | } |
| 379 | } |
| 380 | |
| 381 | func (p *Pointer) resolveNodeForToken(node any, decodedToken string, nameProvider NameProvider) (next any, err error) { |
| 382 | // check for nil during traversal |
searching dependent graphs…