// errorcheck
// Copyright 2014 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.
// Issue 9017: Method selector shouldn't automatically dereference a named pointer type.
package main
type T struct{ x int }
func (T) mT() {}
type S struct {
	T
}
func (S) mS() {}
type P *S
type I interface {
	mT()
}
func main() {
	var s S
	s.T.mT()
	s.mT() // == s.T.mT()
	var i I
	_ = i
	i = s.T
	i = s
	var ps = &s
	ps.mS()
	ps.T.mT()
	ps.mT() // == ps.T.mT()
	i = ps.T
	i = ps
	var p P = ps
	(*p).mS()
	p.mS() // ERROR "undefined"
	i = *p
	i = p // ERROR "cannot use|incompatible types"
	p.T.mT()
	p.mT() // ERROR "undefined"
	i = p.T
	i = p // ERROR "cannot use|incompatible types"
}