forked from VimPlug/jedi
Finally get rid of NameFinder
This commit is contained in:
@@ -6,7 +6,7 @@ from parso.python.tree import Name
|
||||
|
||||
from jedi.inference.filters import ParserTreeFilter, MergedFilter, \
|
||||
GlobalNameFilter
|
||||
from jedi.inference.base_value import NO_VALUES
|
||||
from jedi.inference.base_value import NO_VALUES, ValueSet
|
||||
from jedi.parser_utils import get_parent_scope
|
||||
from jedi import debug
|
||||
from jedi import parser_utils
|
||||
@@ -24,17 +24,13 @@ class AbstractContext(object):
|
||||
raise NotImplementedError
|
||||
|
||||
def goto(self, name_or_str, position):
|
||||
return self._goto(name_or_str, position)[0]
|
||||
|
||||
def _goto(self, name_or_str, position):
|
||||
from jedi.inference import finder
|
||||
f = finder.NameFinder(self, self, name_or_str, position)
|
||||
filters = _get_global_filters_for_name(
|
||||
self, name_or_str if isinstance(name_or_str, Name) else None, position,
|
||||
)
|
||||
names = f.filter_name(filters)
|
||||
names = finder.filter_name(filters, name_or_str)
|
||||
debug.dbg('Context.goto %s in (%s): %s', name_or_str, self, names)
|
||||
return names, f
|
||||
return names
|
||||
|
||||
def py__getattribute__(self, name_or_str, name_context=None, position=None,
|
||||
analysis_errors=True):
|
||||
@@ -43,7 +39,7 @@ class AbstractContext(object):
|
||||
"""
|
||||
if name_context is None:
|
||||
name_context = self
|
||||
names, f = self._goto(name_or_str, position)
|
||||
names = self.goto(name_or_str, position)
|
||||
|
||||
string_name = name_or_str.value if isinstance(name_or_str, Name) else name_or_str
|
||||
|
||||
@@ -75,12 +71,15 @@ class AbstractContext(object):
|
||||
else:
|
||||
values = found_predefined_types
|
||||
else:
|
||||
values = f.find(names, attribute_lookup=False)
|
||||
values = ValueSet.from_sets(name.infer() for name in names)
|
||||
|
||||
if not names and not values and analysis_errors:
|
||||
if isinstance(name_or_str, Name):
|
||||
from jedi.inference import analysis
|
||||
message = ("NameError: name '%s' is not defined." % string_name)
|
||||
analysis.add(name_context, 'name-error', name_or_str, message)
|
||||
|
||||
debug.dbg('context.names_to_types: %s -> %s', names, values)
|
||||
if values:
|
||||
return values
|
||||
return self._check_for_additional_knowledge(name_or_str, name_context, position)
|
||||
|
||||
Reference in New Issue
Block a user