1 // Copyright 2022 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package p 6 7 import "unsafe" 8 9 type T[P any] struct { 10 T /* ERROR "invalid recursive type" */ [P] 11 } 12 13 func _[P any]() { 14 _ = unsafe.Sizeof(T[int]{}) 15 _ = unsafe.Sizeof(struct{ T[int] }{}) 16 17 _ = unsafe.Sizeof(T[P]{}) 18 _ = unsafe.Sizeof(struct{ T[P] }{}) 19 } 20 21 // TODO(gri) This is a follow-on error due to T[int] being invalid. 22 // We should try to avoid it. 23 const _ = unsafe /* ERROR "not constant" */ .Sizeof(T[int]{}) 24