]> Cypherpunks.ru repositories - gostls13.git/blob - test/interface/returntype.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / interface / returntype.go
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 interface methods with different return types are distinct.
8
9 package main
10
11 type S struct { a int }
12 type T struct { b string }
13
14 func (s *S) Name() int8 { return 1 }
15 func (t *T) Name() int64 { return 64 }
16
17 type I1 interface { Name() int8 }
18 type I2 interface { Name() int64 }
19
20 func main() {
21         shouldPanic(p1)
22 }
23
24 func p1() {
25         var i1 I1
26         var s *S
27         i1 = s
28         print(i1.(I2).Name())
29 }
30
31 func shouldPanic(f func()) {
32         defer func() {
33                 if recover() == nil {
34                         panic("function should panic")
35                 }
36         }()
37         f()
38 }