// errorcheck

// Copyright 2009 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

type S struct {
	a int
}
type PS *S

func (p *S) get() int {
	return p.a
}

func fn(p PS) int {
	// p has type PS, and PS has no methods.
	// (a compiler might see that p is a pointer
	// and go looking in S without noticing PS.)
	return p.get() // ERROR "undefined"
}
func main() {
	s := S{1}
	if s.get() != 1 {
		panic("fail")
	}
}
