// run

// Copyright 2026 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.

// Verify that generic methods work with pointer receivers.

package main

import "fmt"

type T struct {}

func (t *T) m[P any]() {
	var x P
	if got := fmt.Sprintf("%T", x); got != "int" {
		panic(fmt.Sprintf("got %s, want int", got))
	}
}

type G[P any] struct {}

func (g *G[P]) m[Q any]() {
	var p P
	var q Q
	if got := fmt.Sprintf("%T %T", p, q); got != "int bool" {
		panic(fmt.Sprintf("got %s, want int bool", got))
	}
}

func main() {
	(&T{}).m[int]()
	(&G[int]{}).m[bool]()
}
