blob: 43408fef94a81e8653f9b12e40ce449db5722769 [file] [log] [blame]
Russ Cox2e1bb4a2008-10-04 02:51:03 -07001// $G $D/$F.go && $L $F.$A && ./$A.out
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
7package main
8
Russ Cox839a6842009-01-20 14:40:40 -08009type S string
10type S1 string
11type I int
12type I1 int
13type T struct { x int }
14type T1 T
Russ Cox2e1bb4a2008-10-04 02:51:03 -070015
16func (s S) val() int { return 1 }
17func (s *S1) val() int { return 2 }
18func (i I) val() int { return 3 }
19func (i *I1) val() int { return 4 }
Russ Cox2e1bb4a2008-10-04 02:51:03 -070020//func (t T) val() int { return 7 }
21func (t *T1) val() int { return 8 }
22
Russ Cox839a6842009-01-20 14:40:40 -080023type Val interface {
Russ Cox2e1bb4a2008-10-04 02:51:03 -070024 val() int
25}
26
27func val(v Val) int {
28 return v.val()
29}
30
31func main() {
32 var s S;
33 var ps *S1;
34 var i I;
35 var pi *I1;
Russ Cox983f06b2008-10-07 12:31:31 -070036 var pt *T1;
Russ Cox2e1bb4a2008-10-04 02:51:03 -070037
38 if s.val() != 1 { panicln("s.val:", s.val()) }
39 if ps.val() != 2 { panicln("ps.val:", ps.val()) }
40 if i.val() != 3 { panicln("i.val:", i.val()) }
41 if pi.val() != 4 { panicln("pi.val:", pi.val()) }
Russ Cox2e1bb4a2008-10-04 02:51:03 -070042// if t.val() != 7 { panicln("t.val:", t.val()) }
43 if pt.val() != 8 { panicln("pt.val:", pt.val()) }
44
45 if val(s) != 1 { panicln("s.val:", val(s)) }
46 if val(ps) != 2 { panicln("ps.val:", val(ps)) }
47 if val(i) != 3 { panicln("i.val:", val(i)) }
48 if val(pi) != 4 { panicln("pi.val:", val(pi)) }
Russ Cox2e1bb4a2008-10-04 02:51:03 -070049// if val(t) != 7 { panicln("t.val:", val(t)) }
50 if val(pt) != 8 { panicln("pt.val:", val(pt)) }
51
52}