Example #1
0
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]++
	}
}