github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/test/fixedbugs/bug294.go (about) 1 // run 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