// run -gcflags=-G=3

// 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 main

func main() {}

// Field accesses through type parameters are disabled
// until we have a more thorough understanding of the
// implications on the spec. See issue #51576.

/*
import "fmt"

type MyStruct struct {
	b1, b2 string
	E
}

type E struct {
	val int
}

type C interface {
	~struct {
		b1, b2 string
		E
	}
}

func f[T C]() T {
	var x T = T{
		b1: "a",
		b2: "b",
	}

	if got, want := x.b2, "b"; got != want {
		panic(fmt.Sprintf("got %d, want %d", got, want))
	}
	x.b1 = "y"
	x.val = 5

	return x
}

func main() {
	x := f[MyStruct]()
	if got, want := x.b1, "y"; got != want {
		panic(fmt.Sprintf("got %d, want %d", got, want))
	}
	if got, want := x.val, 5; got != want {
		panic(fmt.Sprintf("got %d, want %d", got, want))
	}
}
*/
