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

import "./x"

func f() {
	ok := new(x.T);
	var ok1 x.T;
	ok2 := &ok1;
	ok3 := &x.T{};
	ok4 := &x.T{Y:2};
	_ = x.T{};
	_ = x.T{Y:2};
	
	ok1.M();	// ERROR "assignment.*T"
	bad1 := *ok;	// ERROR "assignment.*T"
	bad2 := ok1;	// ERROR "assignment.*T"
	*ok4 = ok1;	// ERROR "assignment.*T"
	*ok4 = *ok2;	// ERROR "assignment.*T"
	ok1 = *ok4;	// ERROR "assignment.*T"
	_ = bad1;
	_ = bad2;
	_ = ok4;
	_ = ok3;
	_ = ok2;
	_ = ok1;
	_ = ok;
}
