~john-koepi/ubuntu/trusty/golang/default

« back to all changes in this revision

Viewing changes to test/fixedbugs/bug294.go

  • Committer: Bazaar Package Importer
  • Author(s): Ondřej Surý
  • Date: 2011-04-20 17:36:48 UTC
  • Revision ID: james.westby@ubuntu.com-20110420173648-ifergoxyrm832trd
Tags: upstream-2011.03.07.1
Import upstream version 2011.03.07.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// $G $D/$F.go && $L $F.$A && ./$A.out
 
2
 
 
3
// Copyright 2010 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
// http://code.google.com/p/go/issues/detail?id=800
 
8
 
 
9
package main
 
10
 
 
11
var log string
 
12
 
 
13
type T int
 
14
 
 
15
func (t T) a(s string) T {
 
16
        log += "a(" + s + ")"
 
17
        return t
 
18
}
 
19
 
 
20
func (T) b(s string) string {
 
21
        log += "b"
 
22
        return s
 
23
}
 
24
 
 
25
type F func(s string) F
 
26
 
 
27
func a(s string) F {
 
28
        log += "a(" + s + ")"
 
29
        return F(a)
 
30
}
 
31
 
 
32
func b(s string) string {
 
33
        log += "b"
 
34
        return s
 
35
}
 
36
 
 
37
type I interface {
 
38
        a(s string) I
 
39
        b(s string) string
 
40
}
 
41
 
 
42
type T1 int
 
43
 
 
44
func (t T1) a(s string) I {
 
45
        log += "a(" + s + ")"
 
46
        return t
 
47
}
 
48
 
 
49
func (T1) b(s string) string {
 
50
        log += "b"
 
51
        return s
 
52
}
 
53
 
 
54
var ok = true
 
55
 
 
56
func bad() {
 
57
        if !ok {
 
58
                println("BUG")
 
59
                ok = false
 
60
        }
 
61
        println(log)
 
62
}
 
63
 
 
64
func main() {
 
65
        var t T
 
66
        if t.a("1").a(t.b("2")); log != "a(1)ba(2)" {
 
67
                bad()
 
68
        }
 
69
        log = ""
 
70
        if a("3")(b("4"))(b("5")); log != "a(3)ba(4)ba(5)" {
 
71
                bad()
 
72
        }
 
73
        log = ""
 
74
        var i I = T1(0)
 
75
        if i.a("6").a(i.b("7")).a(i.b("8")).a(i.b("9")); log != "a(6)ba(7)ba(8)ba(9)" {
 
76
                bad()
 
77
        }
 
78
}
 
79