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 10package main 11 12type test_i interface { 13 Test() test_i 14 Result() bool 15} 16 17type test_t struct { 18} 19 20func newTest() *test_t { 21 return &test_t{} 22} 23 24type testFn func(string) testFn 25 26func 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 48func (t *test_t) Test() test_i { 49 return t 50} 51 52func (t *test_t) Result() bool { 53 return true 54} 55