func (v *UnusedCheck) Visit(s *SemanticAnalyzer, n ast.Node) { switch n := n.(type) { case *ast.VariableDecl: if !n.IsPublic() { v.encountered = append(v.encountered, n.Variable) v.encounteredDecl = append(v.encounteredDecl, n) } case *ast.DestructVarDecl: if !n.IsPublic() { for idx, vari := range n.Variables { if !n.ShouldDiscard[idx] { v.encountered = append(v.encountered, vari) v.encounteredDecl = append(v.encounteredDecl, n) } } } case *ast.FunctionDecl: if !n.IsPublic() { v.encountered = append(v.encountered, n.Function) v.encounteredDecl = append(v.encounteredDecl, n) } } switch n := n.(type) { case *ast.FunctionAccessExpr: v.uses[n.Function]++ case *ast.VariableAccessExpr: v.uses[n.Variable]++ } }