1.1 --- a/inspector.py Thu Mar 09 21:48:19 2017 +0100
1.2 +++ b/inspector.py Thu Mar 09 21:48:59 2017 +0100
1.3 @@ -863,34 +863,48 @@
1.4
1.5 ref = self.find_name(n.name)
1.6 if ref:
1.7 + self.record_name_access(n.name, True)
1.8 return ResolvedNameRef(n.name, ref, is_global=True)
1.9
1.10 # Explicitly-declared global names.
1.11
1.12 elif self.in_function and n.name in self.scope_globals[path]:
1.13 + self.record_name_access(n.name, True)
1.14 return NameRef(n.name, is_global=True)
1.15
1.16 # Examine other names.
1.17
1.18 else:
1.19 - tracker = self.trackers[-1]
1.20
1.21 # Check local names.
1.22
1.23 - branches = tracker.tracking_name(n.name)
1.24 + access_number = self.record_name_access(n.name)
1.25
1.26 # Local name.
1.27
1.28 - if branches:
1.29 - self.record_branches_for_access(branches, n.name, None)
1.30 - access_number = self.record_access_details(n.name, None, None, None)
1.31 + if access_number is not None:
1.32 return LocalNameRef(n.name, access_number)
1.33
1.34 # Possible global or built-in name.
1.35
1.36 else:
1.37 + self.record_name_access(n.name, True)
1.38 return NameRef(n.name, is_global=True)
1.39
1.40 + def record_name_access(self, name, is_global=False):
1.41 +
1.42 + """
1.43 + Record an access involving 'name' if the name is being tracked, using
1.44 + 'is_global' to indicate whether the name is global.
1.45 + """
1.46 +
1.47 + name = self.get_name_for_tracking(name, is_global=is_global)
1.48 + branches = self.trackers[-1].tracking_name(name)
1.49 + if branches:
1.50 + self.record_branches_for_access(branches, name, None)
1.51 + return self.record_access_details(name, None, None, None)
1.52 + return None
1.53 +
1.54 def process_operator_chain(self, nodes, fn):
1.55
1.56 """