diff --git a/jedi/evaluate/finder.py b/jedi/evaluate/finder.py index f19dfa65..504b7afd 100644 --- a/jedi/evaluate/finder.py +++ b/jedi/evaluate/finder.py @@ -73,6 +73,7 @@ class NameFinder(object): names = scope.names_dict[str(self.name_str)] except KeyError: return [] + names = [name for name in names if name.is_definition()] names = pr.filter_after_position(names, position) diff --git a/jedi/parser/__init__.py b/jedi/parser/__init__.py index 4fcdad3a..283af772 100644 --- a/jedi/parser/__init__.py +++ b/jedi/parser/__init__.py @@ -103,30 +103,19 @@ class Parser(object): allows using different grammars (even non-Python). However, error recovery is purely written for Python. """ - if value == '\n': # Statement is not finished. - # Now remove the whole statement. - for i, (dfa, state, node) in reversed(list(enumerate(stack))): - symbol, _, _, _ = node + # For now just discard everything that is not a suite or + # file_input, if we detect an error. + for i, (dfa, state, node) in reversed(list(enumerate(stack))): + symbol, _, _, _ = node - # `suite` can sometimes be only simple_stmt, not stmt. - if symbol in (grammar.symbol2number['simple_stmt'], - grammar.symbol2number['stmt']): - index = i - self._stack_removal(stack, index) - else: - # For now just discard everything that is not a suite or - # file_input, if we detect an error. - for i, (dfa, state, node) in reversed(list(enumerate(stack))): - symbol, _, _, _ = node - - # `suite` can sometimes be only simple_stmt, not stmt. - if symbol in (grammar.symbol2number['file_input'], - grammar.symbol2number['suite']): - index = i - break - self._stack_removal(stack, index + 1) - # No success finding a transition - #raise ParseError("bad input", type, value, context) + # `suite` can sometimes be only simple_stmt, not stmt. + if symbol in (grammar.symbol2number['file_input'], + grammar.symbol2number['suite']): + index = i + break + self._stack_removal(stack, index + 1) + # No success finding a transition + #raise ParseError("bad input", type, value, context) def _stack_removal(self, stack, start_index): def clear_names(children):