// Copyright 2023 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. // Package shadow defines an Analyzer that checks for shadowed variables. // // # Analyzer shadow // // shadow: check for possible unintended shadowing of variables // // This analyzer check for shadowed variables. // A shadowed variable is a variable declared in an inner scope // with the same name and type as a variable in an outer scope, // and where the outer variable is mentioned after the inner one // is declared. // // (This definition can be refined; the module generates too many // false positives and is not yet enabled by default.) // // For example: // // func BadRead(f *os.File, buf []byte) error { // var err error // for { // n, err := f.Read(buf) // shadows the function variable 'err' // if err != nil { // break // causes return of wrong value // } // foo(buf) // } // return err // } package shadow