// 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 ( "context" "database/sql" ) type I interface { m(int, int, *int, int) } type T struct{} func (_ *T) m(a, b, c, d int) {} var _ I = new /* ERROR "have m(int, int, int, int)\n\t\twant m(int, int, *int, int)" */ (T) // (slightly modified) test case from issue type Result struct { Value string } type Executor interface { Execute(context.Context, sql.Stmt, int, []sql.NamedArg, int) (Result, error) } type myExecutor struct{} func (_ *myExecutor) Execute(ctx context.Context, stmt sql.Stmt, maxrows int, args []sql.NamedArg, urgency int) (*Result, error) { return &Result{}, nil } var ex Executor = new /* ERROR "have Execute(context.Context, sql.Stmt, int, []sql.NamedArg, int) (*Result, error)\n\t\twant Execute(context.Context, sql.Stmt, int, []sql.NamedArg, int) (Result, error)" */ (myExecutor)