fl |= flagStickyRO
}
}
- if fl&flagIndir == 0 && typ.Size() == 0 {
- // Special case for picking a field out of a direct struct.
- // A direct struct must have a pointer field and possibly a
- // bunch of zero-sized fields. We must return the zero-sized
- // fields indirectly, as only ptr-shaped things can be direct.
- // See issue 74935.
- // We use nil instead of v.ptr as it doesn't matter and
- // we can avoid pinning a possibly now-unused object.
- return Value{typ, nil, fl | flagIndir}
- }
-
// Either flagIndir is set and v.ptr points at struct,
// or flagIndir is not set and v.ptr is the actual struct data.
// In the former case, we want v.ptr + offset.
+++ /dev/null
-// run
-
-// Copyright 2025 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import "reflect"
-
-type W struct {
- E struct{}
- X *byte
-}
-
-func main() {
- w := reflect.ValueOf(W{})
- _ = w.Field(0).Interface()
-}