Home | History | Annotate | Download | only in fixedbugs
      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 }
     55