Remove _gen_param_name_copy, because it's not useful anymore.

This commit is contained in:
Dave Halter
2014-12-19 12:51:56 +01:00
parent e22aed9ef4
commit bfaef9815c

View File

@@ -1,4 +1,3 @@
import copy
from collections import defaultdict from collections import defaultdict
from itertools import chain from itertools import chain
@@ -9,6 +8,8 @@ from jedi.parser import tree as pr
from jedi.evaluate import iterable from jedi.evaluate import iterable
from jedi.evaluate import analysis from jedi.evaluate import analysis
from jedi.evaluate import precedence from jedi.evaluate import precedence
from jedi.evaluate.helpers import FakeName
from jedi.cache import underscore_memoization
class Arguments(pr.Base): class Arguments(pr.Base):
@@ -160,6 +161,11 @@ class ExecutedParam(pr.Param):
# Need to use the original logic here, because it uses the parent. # Need to use the original logic here, because it uses the parent.
return self._original_param.position_nr return self._original_param.position_nr
@property
@underscore_memoization
def name(self):
return FakeName(str(self._original_param.name), self, self.start_pos)
def __getattr__(self, name): def __getattr__(self, name):
return getattr(self._original_param, name) return getattr(self._original_param, name)
@@ -190,7 +196,7 @@ def _get_calling_var_args(evaluator, var_args):
def get_params(evaluator, func, var_args): def get_params(evaluator, func, var_args):
result = [] param_names = []
param_dict = {} param_dict = {}
for param in func.params: for param in func.params:
param_dict[str(param.get_name())] = param param_dict[str(param.get_name())] = param
@@ -220,8 +226,7 @@ def get_params(evaluator, func, var_args):
except KeyError: except KeyError:
non_matching_keys[key] += va_values non_matching_keys[key] += va_values
else: else:
result.append(_gen_param_name_copy(evaluator, key_param, var_args, param_names.append(ExecutedParam(key_param, var_args, va_values).name)
va_values))
if k in keys_used: if k in keys_used:
had_multiple_value_error = True had_multiple_value_error = True
@@ -233,7 +238,7 @@ def get_params(evaluator, func, var_args):
calling_va, message=m) calling_va, message=m)
else: else:
try: try:
keys_used[k] = result[-1] keys_used[k] = param_names[-1]
except IndexError: except IndexError:
# TODO this is wrong stupid and whatever. # TODO this is wrong stupid and whatever.
pass pass
@@ -273,9 +278,8 @@ def get_params(evaluator, func, var_args):
# Now add to result if it's not one of the previously covered cases. # Now add to result if it's not one of the previously covered cases.
if (not keys_only or param.stars == 2): if (not keys_only or param.stars == 2):
result.append(_gen_param_name_copy(evaluator, param, var_args, param_names.append(ExecutedParam(param, var_args, values).name)
values)) keys_used[unicode(param.get_name())] = param_names[-1]
keys_used[unicode(param.get_name())] = result[-1]
if keys_only: if keys_only:
# All arguments should be handed over to the next function. It's not # All arguments should be handed over to the next function. It's not
@@ -284,7 +288,7 @@ def get_params(evaluator, func, var_args):
for k in set(param_dict) - set(keys_used): for k in set(param_dict) - set(keys_used):
param = param_dict[k] param = param_dict[k]
values = [] if param.default is None else [param.default] values = [] if param.default is None else [param.default]
result.append(_gen_param_name_copy(evaluator, param, var_args, values)) param_names.append(ExecutedParam(param, var_args, values).name)
if not (non_matching_keys or had_multiple_value_error if not (non_matching_keys or had_multiple_value_error
or param.stars or param.default): or param.stars or param.default):
@@ -325,7 +329,7 @@ def get_params(evaluator, func, var_args):
continue continue
analysis.add(evaluator, 'type-error-too-many-arguments', analysis.add(evaluator, 'type-error-too-many-arguments',
v, message=m) v, message=m)
return result return param_names
def _iterate_star_args(evaluator, array, input_node, func=None): def _iterate_star_args(evaluator, array, input_node, func=None):
@@ -370,16 +374,6 @@ def _star_star_dict(evaluator, array, input_node, func):
return dict(dct) return dict(dct)
def _gen_param_name_copy(evaluator, param, var_args, values):
"""
Create a param with the original scope (of varargs) as parent.
"""
new_param = ExecutedParam(param, var_args, values)
name = copy.copy(param.get_name())
name.parent = new_param
return name
def _error_argument_count(func, actual_count): def _error_argument_count(func, actual_count):
default_arguments = sum(1 for p in func.params if p.default or p.stars) default_arguments = sum(1 for p in func.params if p.default or p.stars)