// 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") | |
} |