github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/test/fixedbugs/bug455.go (about) 1 // run 2 3 // Copyright 2012 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 // Issue 4156: out of fixed registers when chaining method calls. 8 // Used to happen with 6g. 9 10 package main 11 12 type test_i interface { 13 Test() test_i 14 Result() bool 15 } 16 17 type test_t struct { 18 } 19 20 func newTest() *test_t { 21 return &test_t{} 22 } 23 24 type testFn func(string) testFn 25 26 func main() { 27 test := newTest() 28 29 switch { 30 case test. 31 Test(). 32 Test(). 33 Test(). 34 Test(). 35 Test(). 36 Test(). 37 Test(). 38 Test(). 39 Test(). 40 Test(). 41 Result(): 42 // case worked 43 default: 44 panic("Result returned false unexpectedly") 45 } 46 } 47 48 func (t *test_t) Test() test_i { 49 return t 50 } 51 52 func (t *test_t) Result() bool { 53 return true 54 }