diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index 63772882..1d1a8bed 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -339,7 +339,7 @@ class Evaluator(object): for typ in self.eval_call(call): for param in typ.params: if unicode(param.get_name()) == unicode(named_param_name): - param_names.append(param.get_name()) + param_names.append(param.get_name().names[-1]) return param_names return [call_path[0]] diff --git a/jedi/evaluate/finder.py b/jedi/evaluate/finder.py index 3e2ea40c..82117584 100644 --- a/jedi/evaluate/finder.py +++ b/jedi/evaluate/finder.py @@ -102,14 +102,15 @@ class NameFinder(object): or isinstance(scope, compiled.CompiledObject) \ or isinstance(stmt, pr.ExprStmt) and stmt.is_global(): # Always reachable. - result.append(name) + result.append(name.names[-1]) + assert name == name.names[-1].parent else: check = flow_analysis.break_check(self._evaluator, name_list_scope, er.wrap(self._evaluator, scope), self.scope) if check is not flow_analysis.UNREACHABLE: - result.append(name) + result.append(name.names[-1]) if check is flow_analysis.REACHABLE: break diff --git a/jedi/evaluate/param.py b/jedi/evaluate/param.py index 64711a19..f5ef8f50 100644 --- a/jedi/evaluate/param.py +++ b/jedi/evaluate/param.py @@ -359,6 +359,8 @@ def _gen_param_name_copy(func, var_args, param, keys=(), values=(), array_type=N new_param.set_expression_list([arr]) name = copy.copy(param.get_name()) + name.names = [copy.copy(name.names[0])] + name.names[0].parent = name name.parent = new_param return name diff --git a/jedi/evaluate/representation.py b/jedi/evaluate/representation.py index 556e072d..c31827aa 100644 --- a/jedi/evaluate/representation.py +++ b/jedi/evaluate/representation.py @@ -291,6 +291,11 @@ class InstanceElement(use_metaclass(CachedMetaClass, pr.Base)): return [get_instance_el(self._evaluator, self.instance, command, self.is_class_var) for command in self.var.expression_list()] + @property + @underscore_memoization + def names(self): + return [pr.NamePart(unicode(n), self, n.start_pos) for n in self.var.names] + @property @underscore_memoization def name(self):