github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/test/fixedbugs/bug459.go (about)

     1  // errorcheck
     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 3890: missing detection of init loop involving
     8  // method calls in function bodies.
     9  
    10  package flag
    11  
    12  var commandLine = NewFlagSet() // ERROR "loop"
    13  
    14  type FlagSet struct {
    15  }
    16  
    17  func (f *FlagSet) failf(format string, a ...interface{}) {
    18  	f.usage()
    19  }
    20  
    21  func (f *FlagSet) usage() {
    22  	if f == commandLine {
    23  		panic(3)
    24  	}
    25  }
    26  
    27  func NewFlagSet() *FlagSet {
    28  	f := &FlagSet{}
    29  	f.setErrorHandling(true)
    30  	return f
    31  }
    32  
    33  func (f *FlagSet) setErrorHandling(b bool) {
    34  	f.failf("DIE")
    35  }