Starting to try to move some functions away from Evaluator.

This time eval_trailer.
This commit is contained in:
Dave Halter
2017-09-27 16:21:02 +02:00
parent 313e1b3875
commit 5415a6164f
6 changed files with 35 additions and 30 deletions
+27
View File
@@ -0,0 +1,27 @@
"""
Functions evaluating the syntax tree.
"""
from jedi import debug
def eval_trailer(context, base_contexts, trailer):
trailer_op, node = trailer.children[:2]
if node == ')': # `arglist` is optional.
node = ()
if trailer_op == '[':
from jedi.evaluate import iterable
return iterable.py__getitem__(context.evaluator, context, base_contexts, trailer)
else:
debug.dbg('eval_trailer: %s in %s', trailer, base_contexts)
if trailer_op == '.':
return base_contexts.py__getattribute__(
name_context=context,
name_or_str=node
)
else:
assert trailer_op == '('
from jedi.evaluate import param
arguments = param.TreeArguments(context.evaluator, context, node, trailer)
return base_contexts.execute(arguments)