Home | History | Annotate | Download | only in static_analysis

Lines Matching refs:node

40   def visit_ClassDef(self, node):
41 self.generic_visit(node)
42 anno.setanno(node, 'live_val', self.context.namespace[node.name])
43 return node
45 def visit_Name(self, node):
46 self.generic_visit(node)
47 if isinstance(node.ctx, gast.Load):
48 assert anno.hasanno(node, NodeAnno.IS_LOCAL), node
49 symbol_is_local = anno.getanno(node, NodeAnno.IS_LOCAL)
50 assert anno.hasanno(node, NodeAnno.IS_MODIFIED_SINCE_ENTRY), node
51 symbol_is_modified = anno.getanno(node, NodeAnno.IS_MODIFIED_SINCE_ENTRY)
52 assert anno.hasanno(node, NodeAnno.IS_PARAM), node
53 symbol_is_param = anno.getanno(node, NodeAnno.IS_PARAM)
56 if node.id in self.literals:
57 anno.setanno(node, 'live_val', self.literals[node.id])
59 elif node.id in self.context.namespace:
60 obj = self.context.namespace[node.id]
61 anno.setanno(node, 'live_val', obj)
62 anno.setanno(node, 'fqn', (obj.__name__,))
75 if node.id in self.context.arg_values:
76 obj = self.context.arg_values[node.id]
77 anno.setanno(node, 'live_val', obj)
78 anno.setanno(node, 'fqn', (obj.__class__.__name__,))
79 return node
81 def visit_Attribute(self, node):
82 self.generic_visit(node)
83 if anno.hasanno(node.value, 'live_val'):
84 assert anno.hasanno(node.value, 'fqn')
85 parent_object = anno.getanno(node.value, 'live_val')
86 if not hasattr(parent_object, node.attr):
88 node.attr))
89 anno.setanno(node, 'live_val', getattr(parent_object, node.attr))
90 anno.setanno(node, 'fqn', anno.getanno(node.value, 'fqn') + (node.attr,))
92 elif anno.hasanno(node.value, 'type'):
93 parent_type = anno.getanno(node.value, 'type')
94 if hasattr(parent_type, node.attr):
97 # For the dynamic case, we simply leave the node without an annotation,
99 anno.setanno(node, 'live_val', getattr(parent_type, node.attr))
100 anno.setanno(node, 'fqn',
101 anno.getanno(node.value, 'type_fqn') + (node.attr,))
102 elif isinstance(node.value, gast.Name):
103 stem_name = node.value
108 return node
111 def resolve(node, context, literals):
112 return LiveValueResolver(context, literals).visit(node)