// Copyright 2021 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 | |
type Fooer interface { | |
Foo() | |
} | |
type Fooable[F /* ERROR instantiation cycle */ Fooer] struct { | |
ptr F | |
} | |
func (f *Fooable[F]) Adapter() *Fooable[*FooerImpl[F]] { | |
return &Fooable[*FooerImpl[F]]{&FooerImpl[F]{}} | |
} | |
type FooerImpl[F Fooer] struct { | |
} | |
func (fi *FooerImpl[F]) Foo() {} |