| // Copyright 2022 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 p |
| |
| import "unsafe" |
| |
| type T[P any] struct { |
| T /* ERROR "invalid recursive type" */ [P] |
| } |
| |
| func _[P any]() { |
| _ = unsafe.Sizeof(T[int]{}) |
| _ = unsafe.Sizeof(struct{ T[int] }{}) |
| |
| _ = unsafe.Sizeof(T[P]{}) |
| _ = unsafe.Sizeof(struct{ T[P] }{}) |
| } |
| |
| // TODO(gri) This is a follow-on error due to T[int] being invalid. |
| // We should try to avoid it. |
| const _ = unsafe /* ERROR "not constant" */ .Sizeof(T[int]{}) |