diff --git a/jedi/api/__init__.py b/jedi/api/__init__.py index c35323ac..7b9dc768 100644 --- a/jedi/api/__init__.py +++ b/jedi/api/__init__.py @@ -138,7 +138,10 @@ class Script(object): for call_def in self.call_signatures(): if not isinstance(call_def.module, compiled.CompiledObject): for p in call_def.params: - completions.append((p.get_name(), p)) + # Allow access on _definition here, because it's a + # public API and we don't want to make the internal + # Name object public. + completions.append((p._definition.get_name(), p)) if not path and not isinstance(user_stmt, pr.Import): # add keywords diff --git a/jedi/api/classes.py b/jedi/api/classes.py index a65fa6d6..399755b4 100644 --- a/jedi/api/classes.py +++ b/jedi/api/classes.py @@ -451,11 +451,12 @@ class Definition(BaseDefinition): return None elif isinstance(d, pr.Statement): try: - name = d.assignment_details[0][1].values[0][0].name.names[-1] + expression_list = d.assignment_details[0][0] + name = expression_list[0].name.names[-1] except IndexError: if isinstance(d, pr.Param): try: - name = d.expression_list()[0].name.names[-1] + return unicode(d.expression_list()[0].name) except IndexError: pass return None diff --git a/jedi/evaluate/compiled/__init__.py b/jedi/evaluate/compiled/__init__.py index f1a0b942..13e2f7c1 100644 --- a/jedi/evaluate/compiled/__init__.py +++ b/jedi/evaluate/compiled/__init__.py @@ -8,11 +8,9 @@ import os from jedi._compatibility import builtins as _builtins from jedi import debug -from jedi.parser.representation import Base, IsScope from jedi.cache import underscore_memoization from jedi.evaluate.sys_path import get_sys_path -from jedi.parser.representation import Param -from jedi.parser.representation import SubModule +from jedi.parser.representation import Param, SubModule, Base, IsScope, Operator from jedi.evaluate.helpers import FakeName from . import fake @@ -38,7 +36,10 @@ class CompiledObject(Base): # object start_pos, end_pos = (0, 0), (0, 0) for p in tokens: - params.append(Param(module, [FakeName(p.strip())], start_pos, + parts = [FakeName(part) for part in p.strip().split('=')] + if len(parts) >= 2: + parts.insert(1, Operator('=', (0, 0))) + params.append(Param(module, parts, start_pos, end_pos, builtin)) return params