1"""
2Identifiers gathers all identifiers used in a node
3"""
4
5from pythran.passmanager import NodeAnalysis
6
7
8class Identifiers(NodeAnalysis):
9    """Gather all identifiers used throughout a node."""
10    def __init__(self):
11        self.result = set()
12        super(Identifiers, self).__init__()
13
14    def visit_Name(self, node):
15        self.result.add(node.id)
16
17    def visit_FunctionDef(self, node):
18        self.result.add(node.name)
19        self.generic_visit(node)
20
21    def visit_ImportFrom(self, node):
22        self.generic_visit(node)
23        self.result.add(node.module)
24
25    def visit_alias(self, node):
26        self.result.add(node.name)
27        if node.asname:
28            self.result.add(node.asname)
29