NameFinder.filter_name is simpler now.

This commit is contained in:
Dave Halter
2014-04-14 13:45:31 +02:00
parent 6a40c9b671
commit b81eb9f8b3
2 changed files with 24 additions and 16 deletions

View File

@@ -69,24 +69,29 @@ class NameFinder(object):
# reference. # reference.
name_list = sorted(name_list, key=lambda n: n.start_pos, reverse=True) name_list = sorted(name_list, key=lambda n: n.start_pos, reverse=True)
for name in name_list: for name in name_list:
if self.name_str != name.get_code():
continue
parpar = name.parent.parent parpar = name.parent.parent
if self.name_str == name.get_code() and parpar not in break_scopes: if name.parent.parent in break_scopes:
if not self._name_is_array_assignment(name): continue
result.append(name) # `arr[1] =` is not the definition
# for comparison we need the raw class if not self._name_is_array_assignment(name):
# this means that a definition was found and is not e.g. result.append(name) # `arr[1] =` is not the definition
# in if/else. # for comparison we need the raw class
if result and self._name_is_break_scope(name): # this means that a definition was found and is not e.g.
#print result, name.parent, parpar, s # in if/else.
if isinstance(parpar, pr.Flow) \ if result and self._name_is_break_scope(name):
or isinstance(parpar, pr.KeywordStatement) \ #print result, name.parent, parpar, s
and parpar.name == 'global': if isinstance(parpar, pr.Flow) \
s = nscope.base if isinstance(nscope, er.Class) else nscope or isinstance(parpar, pr.KeywordStatement) \
if parpar == s: and parpar.name == 'global':
break s = nscope.base if isinstance(nscope, er.Class) else nscope
else: if parpar == s:
break break
break_scopes.append(parpar) else:
break
break_scopes.append(parpar)
if result: if result:
break break

View File

@@ -1387,6 +1387,9 @@ class NamePart(object):
def __eq__(self, other): def __eq__(self, other):
return self.string == other return self.string == other
def __ne__(self, other):
return not self.__eq__(other)
def __hash__(self): def __hash__(self):
return hash(self.string) return hash(self.string)