forked from VimPlug/jedi
er.wrap -> Evaluator.wrap
This commit is contained in:
@@ -91,7 +91,18 @@ class Evaluator(object):
|
||||
self.analysis = []
|
||||
|
||||
def wrap(self, element):
|
||||
return er.wrap(self, element)
|
||||
if isinstance(element, pr.Class):
|
||||
return er.Class(self, element)
|
||||
elif isinstance(element, pr.Function):
|
||||
if isinstance(element, pr.Lambda):
|
||||
return er.LambdaWrapper(self, element)
|
||||
else:
|
||||
return er.Function(self, element)
|
||||
elif isinstance(element, (pr.Module)) \
|
||||
and not isinstance(element, er.ModuleWrapper):
|
||||
return er.ModuleWrapper(self, element)
|
||||
else:
|
||||
return element
|
||||
|
||||
def find_types(self, scope, name_str, position=None, search_global=False,
|
||||
is_goto=False):
|
||||
@@ -133,7 +144,7 @@ class Evaluator(object):
|
||||
operator = copy.copy(first_operation)
|
||||
operator.value = operator.value[:-1]
|
||||
name = str(stmt.get_defined_names()[0])
|
||||
parent = er.wrap(self, stmt.get_parent_scope())
|
||||
parent = self.wrap(stmt.get_parent_scope())
|
||||
left = self.find_types(parent, name, stmt.start_pos, search_global=True)
|
||||
if isinstance(stmt.get_parent_until(pr.ForStmt), pr.ForStmt):
|
||||
# Iterate through result and add the values, that's possible
|
||||
|
||||
@@ -112,7 +112,7 @@ def search_function_call(evaluator, func):
|
||||
else:
|
||||
undec.append(escope)
|
||||
|
||||
if er.wrap(evaluator, compare) in undec:
|
||||
if evaluator.wrap(compare) in undec:
|
||||
# Only if we have the correct function we execute
|
||||
# it, otherwise just ignore it.
|
||||
evaluator.eval_trailer(types, trailer)
|
||||
|
||||
@@ -76,7 +76,7 @@ class NameFinder(object):
|
||||
def __init__(self, evaluator, scope, name_str, position=None):
|
||||
self._evaluator = evaluator
|
||||
# Make sure that it's not just a syntax tree node.
|
||||
self.scope = er.wrap(evaluator, scope)
|
||||
self.scope = evaluator.wrap(scope)
|
||||
self.name_str = name_str
|
||||
self.position = position
|
||||
|
||||
@@ -129,7 +129,7 @@ class NameFinder(object):
|
||||
last_names = []
|
||||
for name in reversed(sorted(names, key=lambda name: name.start_pos)):
|
||||
stmt = name.get_definition()
|
||||
name_scope = er.wrap(self._evaluator, stmt.get_parent_scope())
|
||||
name_scope = self._evaluator.wrap(stmt.get_parent_scope())
|
||||
|
||||
if isinstance(self.scope, er.Instance) and not isinstance(name_scope, er.Instance):
|
||||
# Instances should not be checked for positioning, because we
|
||||
@@ -191,7 +191,7 @@ class NameFinder(object):
|
||||
for n in names:
|
||||
definition = n.parent
|
||||
if isinstance(definition, (pr.Function, pr.Class, pr.Module)):
|
||||
yield er.wrap(self._evaluator, definition).name
|
||||
yield self._evaluator.wrap(definition).name
|
||||
else:
|
||||
yield n
|
||||
|
||||
@@ -344,7 +344,7 @@ def _eval_param(evaluator, param, scope):
|
||||
if isinstance(scope, er.InstanceElement):
|
||||
res_new.append(scope.instance)
|
||||
else:
|
||||
inst = er.Instance(evaluator, er.wrap(evaluator, cls),
|
||||
inst = er.Instance(evaluator, evaluator.wrap(cls),
|
||||
Arguments(evaluator, ()), is_generated=True)
|
||||
res_new.append(inst)
|
||||
return res_new
|
||||
@@ -464,7 +464,7 @@ def global_names_dict_generator(evaluator, scope, position):
|
||||
|
||||
>>> from jedi.evaluate import Evaluator
|
||||
>>> evaluator = Evaluator(load_grammar())
|
||||
>>> scope = er.wrap(evaluator, scope)
|
||||
>>> scope = evaluator.wrap(scope)
|
||||
>>> pairs = list(global_names_dict_generator(evaluator, scope, (4, 0)))
|
||||
>>> no_unicode_pprint(pairs[0])
|
||||
({'func': [], 'y': [<Name: y@4,4>]}, (4, 0))
|
||||
@@ -503,7 +503,7 @@ def global_names_dict_generator(evaluator, scope, position):
|
||||
# The position should be reset if the current scope is a function.
|
||||
in_func = True
|
||||
position = None
|
||||
scope = er.wrap(evaluator, scope.get_parent_scope())
|
||||
scope = evaluator.wrap(scope.get_parent_scope())
|
||||
|
||||
# Add builtins to the global scope.
|
||||
for names_dict in compiled.builtin.names_dicts(True):
|
||||
|
||||
@@ -33,8 +33,7 @@ UNSURE = Status(None, 'unsure')
|
||||
|
||||
|
||||
def break_check(evaluator, base_scope, stmt, origin_scope=None):
|
||||
from jedi.evaluate.representation import wrap
|
||||
element_scope = wrap(evaluator, stmt.get_parent_scope(include_flows=True))
|
||||
element_scope = evaluator.wrap(stmt.get_parent_scope(include_flows=True))
|
||||
# Direct parents get resolved, we filter scopes that are separate branches.
|
||||
# This makes sense for autocompletion and static analysis. For actual
|
||||
# Python it doesn't matter, because we're talking about potentially
|
||||
@@ -50,9 +49,8 @@ def break_check(evaluator, base_scope, stmt, origin_scope=None):
|
||||
|
||||
|
||||
def _break_check(evaluator, stmt, base_scope, element_scope):
|
||||
from jedi.evaluate.representation import wrap
|
||||
element_scope = wrap(evaluator, element_scope)
|
||||
base_scope = wrap(evaluator, base_scope)
|
||||
element_scope = evaluator.wrap(element_scope)
|
||||
base_scope = evaluator.wrap(base_scope)
|
||||
|
||||
reachable = REACHABLE
|
||||
if isinstance(element_scope, pr.IfStmt):
|
||||
|
||||
@@ -50,21 +50,6 @@ from jedi.evaluate import flow_analysis
|
||||
from jedi.evaluate import imports
|
||||
|
||||
|
||||
def wrap(evaluator, element):
|
||||
if isinstance(element, pr.Class):
|
||||
return Class(evaluator, element)
|
||||
elif isinstance(element, pr.Function):
|
||||
if isinstance(element, pr.Lambda):
|
||||
return LambdaWrapper(evaluator, element)
|
||||
else:
|
||||
return Function(evaluator, element)
|
||||
elif isinstance(element, (pr.Module)) \
|
||||
and not isinstance(element, ModuleWrapper):
|
||||
return ModuleWrapper(evaluator, element)
|
||||
else:
|
||||
return element
|
||||
|
||||
|
||||
class Executed(pr.Base):
|
||||
"""
|
||||
An instance is also an executable - because __init__ is called
|
||||
@@ -290,7 +275,7 @@ def get_instance_el(evaluator, instance, var, is_class_var=False):
|
||||
pr.Module, FunctionExecution)):
|
||||
return var
|
||||
|
||||
var = wrap(evaluator, var)
|
||||
var = evaluator.wrap(var)
|
||||
return InstanceElement(evaluator, instance, var, is_class_var)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user