1// run
2
3// Copyright 2009 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7// Test method invocation with pointer receivers and function-valued fields.
8
9package main
10
11type C struct {
12	a	int;
13	x	func(p *C)int;
14}
15
16func (this *C) f()int {
17	return this.a;
18}
19
20func
21main() {
22	var v int;
23	var c *C;
24
25	c = new(C);
26	c.a = 6;
27	c.x = g;
28
29	v = g(c);
30	if v != 6 { panic(v); }
31
32	v = c.x(c);
33	if v != 6 { panic(v); }
34
35	v = c.f();
36	if v != 6 { panic(v); }
37}
38
39func g(p *C)int {
40	var v int;
41
42	v = p.a;
43	if v != 6 { panic(v); }
44	return p.a;
45}
46