Functions
            
            
               
                  String 
                  method
                  
                  #
               
               
               String pretty-prints a typePath.
               
               func (path typePath) String() string
            
            
            
               
                  checkCopyLocksAssign 
                  function
                  
                  #
               
               
               checkCopyLocksAssign checks whether an assignment
copies a lock.
               
               func checkCopyLocksAssign(pass *analysis.Pass, assign *ast.AssignStmt, goversion string, parent ast.Node)
            
            
            
               
                  checkCopyLocksCallExpr 
                  function
                  
                  #
               
               
               checkCopyLocksCallExpr detects lock copy in the arguments to a function call
               
               func checkCopyLocksCallExpr(pass *analysis.Pass, ce *ast.CallExpr)
            
            
            
               
                  checkCopyLocksCompositeLit 
                  function
                  
                  #
               
               
               checkCopyLocksCompositeLit detects lock copy inside a composite literal
               
               func checkCopyLocksCompositeLit(pass *analysis.Pass, cl *ast.CompositeLit)
            
            
            
               
                  checkCopyLocksFunc 
                  function
                  
                  #
               
               
               checkCopyLocksFunc checks whether a function might
inadvertently copy a lock, by checking whether
its receiver, parameters, or return values
are locks.
               
               func checkCopyLocksFunc(pass *analysis.Pass, name string, recv *ast.FieldList, typ *ast.FuncType)
            
            
            
               
                  checkCopyLocksGenDecl 
                  function
                  
                  #
               
               
               checkCopyLocksGenDecl checks whether lock is copied
in variable declaration.
               
               func checkCopyLocksGenDecl(pass *analysis.Pass, gd *ast.GenDecl)
            
            
            
               
                  checkCopyLocksRange 
                  function
                  
                  #
               
               
               checkCopyLocksRange checks whether a range statement
might inadvertently copy a lock by checking whether
any of the range variables are locks.
               
               func checkCopyLocksRange(pass *analysis.Pass, r *ast.RangeStmt)
            
            
            
               
                  checkCopyLocksRangeVar 
                  function
                  
                  #
               
               
               func checkCopyLocksRangeVar(pass *analysis.Pass, rtok token.Token, e ast.Expr)
            
            
            
               
                  checkCopyLocksReturnStmt 
                  function
                  
                  #
               
               
               checkCopyLocksReturnStmt detects lock copy in return statement
               
               func checkCopyLocksReturnStmt(pass *analysis.Pass, rs *ast.ReturnStmt)
            
            
            
               
                  init 
                  function
                  
                  #
               
               
               Construct a sync.Locker interface type.
               
               func init()
            
            
            
               
                  lockPath 
                  function
                  
                  #
               
               
               lockPath returns a typePath describing the location of a lock value
contained in typ. If there is no contained lock, it returns nil.
The seen map is used to short-circuit infinite recursion due to type cycles.
               
               func lockPath(tpkg *types.Package, typ types.Type, seen map[types.Type]bool) typePath
            
            
            
               
                  lockPathRhs 
                  function
                  
                  #
               
               
               func lockPathRhs(pass *analysis.Pass, x ast.Expr) typePath
            
            
            
               
                  parent 
                  function
                  
                  #
               
               
               parent returns the second from the last node on stack if it exists.
               
               func parent(stack []ast.Node) ast.Node
            
            
            
               
                  run 
                  function
                  
                  #
               
               
               func run(pass *analysis.Pass) (interface{}, error)