1
0
forked from VimPlug/jedi

Just rebuilt reversed.

This commit is contained in:
Dave Halter
2014-11-20 11:56:54 +01:00
parent 53c2a1679c
commit f2e3a3d090
2 changed files with 13 additions and 15 deletions

View File

@@ -234,7 +234,7 @@ class Instance(use_metaclass(CachedMetaClass, Executed)):
if self.decorates is not None: if self.decorates is not None:
dec = " decorates " + repr(self.decorates) dec = " decorates " + repr(self.decorates)
return "<e%s of %s(%s)%s>" % (type(self).__name__, self.base, return "<e%s of %s(%s)%s>" % (type(self).__name__, self.base,
self.var_args.argument_node, dec) self.var_args, dec)
def get_instance_el(evaluator, instance, var, is_class_var=False): def get_instance_el(evaluator, instance, var, is_class_var=False):

View File

@@ -18,6 +18,7 @@ from jedi.parser import Parser
from jedi.parser import representation as pr from jedi.parser import representation as pr
from jedi import debug from jedi import debug
from jedi.evaluate import precedence from jedi.evaluate import precedence
from jedi.evaluate import param
class NotInStdLib(LookupError): class NotInStdLib(LookupError):
@@ -148,20 +149,17 @@ def builtins_super(evaluator, types, objects, scope):
return [] return []
def builtins_reversed(evaluator, obj, params): @argument_clinic('sequence, /', want_obj=True)
objects = tuple(_follow_param(evaluator, params, 0)) def builtins_reversed(evaluator, sequences, obj):
if objects: # Unpack the iterator values
# unpack the iterator values objects = tuple(iterable.get_iterator_types(sequences))
objects = tuple(iterable.get_iterator_types(objects)) rev = [iterable.AlreadyEvaluated([o]) for o in reversed(objects)]
if objects:
rev = reversed(objects)
# Repack iterator values and then run it the normal way. This is # Repack iterator values and then run it the normal way. This is
# necessary, because `reversed` is a function and autocompletion # necessary, because `reversed` is a function and autocompletion
# would fail in certain cases like `reversed(x).__iter__` if we # would fail in certain cases like `reversed(x).__iter__` if we
# just returned the result directly. # just returned the result directly.
stmts = [FakeStatement([r]) for r in rev] rev = iterable.FakeSequence(evaluator, rev, pr.Array.LIST)
objects = (iterable.Array(evaluator, FakeArray(stmts, objects[0].parent)),) return [er.Instance(evaluator, obj, param.Arguments(evaluator, [rev]))]
return [er.Instance(evaluator, obj, objects)]
@argument_clinic('obj, type, /') @argument_clinic('obj, type, /')