1
0
forked from VimPlug/jedi

better support for get_in_function_call

This commit is contained in:
David Halter
2012-10-07 21:43:27 +02:00
parent 8c6f809a86
commit db315f44f4
3 changed files with 12 additions and 3 deletions

View File

@@ -408,12 +408,16 @@ class Script(object):
# call should return without execution and
# next
reset = c or s
if reset.execution.type not in \
[parsing.Array.TUPLE,
parsing.Array.NOARRAY]:
return start_s, index, False
reset.execution = None
reset.next = None
return c or start_s, index, True
#else:
#return call, index, stop
s = s.next
# The third return is just necessary for recursion inside, because
# it needs to know when to stop iterating.
return call, index, stop

View File

@@ -976,8 +976,10 @@ class Array(Call):
Only used for dictionaries, automatically adds the tokens added by now
from the values to keys, because the parser works this way.
"""
self.type = Array.DICT
if self.type in (Array.LIST, Array.TUPLE):
return # these are basically code errors, just ignore
self.keys.append(self.values.pop())
self.type = Array.DICT
self.values.append([])
def get_only_subelement(self):

View File

@@ -126,6 +126,7 @@ class TestRegression(unittest.TestCase):
s5 = "abs(1,\nif 2:\n def a():"
s6 = "str().center("
s7 = "str().upper().center("
s8 = "str(int[zip("
assert check(self.get_in_function_call(s, (1, 4)), 'abs', 0)
assert check(self.get_in_function_call(s, (1, 6)), 'abs', 1)
@@ -153,6 +154,8 @@ class TestRegression(unittest.TestCase):
assert check(self.get_in_function_call(s6, (1, 4)), 'str', 0)
assert check(self.get_in_function_call(s7), 'center', 0)
assert check(self.get_in_function_call(s8), 'zip', 0)
assert check(self.get_in_function_call(s8, (1, 8)), 'str', 0)
def test_add_dynamic_mods(self):
api.settings.additional_dynamic_modules = ['dynamic.py']