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  }