| // run | 
 |  | 
 | // Copyright 2012 The Go Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style | 
 | // license that can be found in the LICENSE file. | 
 |  | 
 | // Issue 4156: out of fixed registers when chaining method calls. | 
 | // Used to happen with 6g. | 
 |  | 
 | package main | 
 |  | 
 | type test_i interface { | 
 | 	Test() test_i | 
 | 	Result() bool | 
 | } | 
 |  | 
 | type test_t struct { | 
 | } | 
 |  | 
 | func newTest() *test_t { | 
 | 	return &test_t{} | 
 | } | 
 |  | 
 | type testFn func(string) testFn | 
 |  | 
 | func main() { | 
 | 	test := newTest() | 
 |  | 
 | 	switch { | 
 | 	case test. | 
 | 		Test(). | 
 | 		Test(). | 
 | 		Test(). | 
 | 		Test(). | 
 | 		Test(). | 
 | 		Test(). | 
 | 		Test(). | 
 | 		Test(). | 
 | 		Test(). | 
 | 		Test(). | 
 | 		Result(): | 
 | 		// case worked | 
 | 	default: | 
 | 		panic("Result returned false unexpectedly") | 
 | 	} | 
 | } | 
 |  | 
 | func (t *test_t) Test() test_i { | 
 | 	return t | 
 | } | 
 |  | 
 | func (t *test_t) Result() bool { | 
 | 	return true | 
 | } |