1
0
forked from VimPlug/jedi

Trying to get the NameFinder to use only NameParts.

This commit is contained in:
Dave Halter
2014-09-10 16:20:30 +02:00
parent 43cf1d451f
commit 657a2c7d4f
4 changed files with 11 additions and 3 deletions

View File

@@ -339,7 +339,7 @@ class Evaluator(object):
for typ in self.eval_call(call): for typ in self.eval_call(call):
for param in typ.params: for param in typ.params:
if unicode(param.get_name()) == unicode(named_param_name): 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 param_names
return [call_path[0]] return [call_path[0]]

View File

@@ -102,14 +102,15 @@ class NameFinder(object):
or isinstance(scope, compiled.CompiledObject) \ or isinstance(scope, compiled.CompiledObject) \
or isinstance(stmt, pr.ExprStmt) and stmt.is_global(): or isinstance(stmt, pr.ExprStmt) and stmt.is_global():
# Always reachable. # Always reachable.
result.append(name) result.append(name.names[-1])
assert name == name.names[-1].parent
else: else:
check = flow_analysis.break_check(self._evaluator, check = flow_analysis.break_check(self._evaluator,
name_list_scope, name_list_scope,
er.wrap(self._evaluator, scope), er.wrap(self._evaluator, scope),
self.scope) self.scope)
if check is not flow_analysis.UNREACHABLE: if check is not flow_analysis.UNREACHABLE:
result.append(name) result.append(name.names[-1])
if check is flow_analysis.REACHABLE: if check is flow_analysis.REACHABLE:
break break

View File

@@ -359,6 +359,8 @@ def _gen_param_name_copy(func, var_args, param, keys=(), values=(), array_type=N
new_param.set_expression_list([arr]) new_param.set_expression_list([arr])
name = copy.copy(param.get_name()) name = copy.copy(param.get_name())
name.names = [copy.copy(name.names[0])]
name.names[0].parent = name
name.parent = new_param name.parent = new_param
return name return name

View File

@@ -291,6 +291,11 @@ class InstanceElement(use_metaclass(CachedMetaClass, pr.Base)):
return [get_instance_el(self._evaluator, self.instance, command, self.is_class_var) return [get_instance_el(self._evaluator, self.instance, command, self.is_class_var)
for command in self.var.expression_list()] 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 @property
@underscore_memoization @underscore_memoization
def name(self): def name(self):