1
0
forked from VimPlug/jedi

Merge pull request #232 from tkf/unicode-has-no-generate_call_path

Fix: 'unicode' object has no attribute 'generate_call_path'
This commit is contained in:
David Halter
2013-05-23 22:33:02 -07:00
3 changed files with 15 additions and 2 deletions

View File

@@ -391,7 +391,9 @@ class Script(object):
defs, search_name = evaluate.goto(stmt)
definitions = follow_inexistent_imports(defs)
if isinstance(user_stmt, pr.Statement):
if user_stmt.get_commands()[0].start_pos > self.pos:
call = user_stmt.get_commands()[0]
if not isinstance(call, (str, unicode)) and \
call.start_pos > self.pos:
# The cursor must be after the start, otherwise the
# statement is just an assignee.
definitions = [user_stmt]

View File

@@ -794,6 +794,9 @@ def goto(stmt, call_path=None):
commands = stmt.get_commands()
assert len(commands) == 1
call = commands[0]
if isinstance(call, (str, unicode)):
call_path = [call]
else:
call_path = list(call.generate_call_path())
scope = stmt.get_parent_until(pr.IsScope)

View File

@@ -329,6 +329,14 @@ class TestRegression(TestBase):
defs = self.goto_definitions("assert")
assert len(defs) == 1
def test_goto_assignments_keyword(self):
"""
Bug: goto assignments on ``in`` used to raise AttributeError::
'unicode' object has no attribute 'generate_call_path'
"""
self.goto_assignments('in')
def test_goto_following_on_imports(self):
s = "import multiprocessing.dummy; multiprocessing.dummy"
g = self.goto_assignments(s)