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