Filters for compiled objects and also FunctionExecution.

This commit is contained in:
Dave Halter
2016-10-02 15:36:24 +02:00
parent 249049b10c
commit c2873792eb
4 changed files with 97 additions and 5 deletions

View File

@@ -32,12 +32,12 @@ class ParserTreeFilter(AbstractFilter):
def _filter(self, names, until_position):
names = super(ParserTreeFilter, self)._filter(names, until_position)
names = [n for n in names if n.is_definition()]
names = [n for n in names if n.get_parent_scope() == self._parser_scope]
names = [n for n in names if n.parent.get_parent_scope() == self._parser_scope]
return names
def get(self, name, until_position=None):
try:
names = self._used_names[name]
names = self._used_names[str(name)]
except KeyError:
return []
@@ -45,3 +45,14 @@ class ParserTreeFilter(AbstractFilter):
def values(self, name, until_position=None):
return self._filter(self._used_names.values(), until_position)
class FunctionExecutionFilter(ParserTreeFilter):
def __init__(self, parser_scope, executed_function):
super(FunctionExecutionFilter, self).__init__(parser_scope)
self._executed_function = executed_function
def _filter(self, names, until_position):
result = super(FunctionExecutionFilter, self)._filter(names, until_position)
return [self._executed_function.name_for_position(name.start_pos) for name in result]