| // errorcheck | |
| // 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 3890: missing detection of init loop involving | |
| // method calls in function bodies. | |
| package flag | |
| var commandLine = NewFlagSet() // ERROR "loop|depends upon itself" | |
| type FlagSet struct { | |
| } | |
| func (f *FlagSet) failf(format string, a ...interface{}) { | |
| f.usage() | |
| } | |
| func (f *FlagSet) usage() { | |
| if f == commandLine { | |
| panic(3) | |
| } | |
| } | |
| func NewFlagSet() *FlagSet { | |
| f := &FlagSet{} | |
| f.setErrorHandling(true) | |
| return f | |
| } | |
| func (f *FlagSet) setErrorHandling(b bool) { | |
| f.failf("DIE") | |
| } |