diff --git a/jedi/evaluate/dynamic.py b/jedi/evaluate/dynamic.py index 7c1887d9..28544539 100644 --- a/jedi/evaluate/dynamic.py +++ b/jedi/evaluate/dynamic.py @@ -71,6 +71,7 @@ def search_params(evaluator, parent_context, funcdef): if not settings.dynamic_params: return set() + raise NotImplementedError evaluator.dynamic_params_depth += 1 try: debug.dbg('Dynamic param search in %s.', funcdef.name.value, color='MAGENTA') diff --git a/jedi/evaluate/filters.py b/jedi/evaluate/filters.py index 536457be..27da9379 100644 --- a/jedi/evaluate/filters.py +++ b/jedi/evaluate/filters.py @@ -80,7 +80,7 @@ class AnonymousInstanceParamName(ParamName): if self.tree_name.parent.position_nr == 0: # This is a speed optimization, to return the self param (because # it's known). This only affects anonymous instances. - return set([self.parent_context]) + return set([self.parent_context.instance]) else: return self._get_param().infer() @@ -137,7 +137,7 @@ class ParserTreeFilter(AbstractUsedNamesFilter): def _filter(self, names): names = super(ParserTreeFilter, self)._filter(names) - names = [n for n in names if n.is_definition()] + names = [n for n in names if n.is_definition() and n.parent.type != 'trailer'] names = [n for n in names if n.parent.get_parent_scope() == self._parser_scope] return list(self._check_flows(names)) diff --git a/jedi/evaluate/instance.py b/jedi/evaluate/instance.py index 6e12c8b0..2464c6e6 100644 --- a/jedi/evaluate/instance.py +++ b/jedi/evaluate/instance.py @@ -172,8 +172,8 @@ class TreeInstance(AbstractInstanceContext): self.var_args ) else: - return er.AnonymousFunctionExecution( - self.evaluator, + return AnonymousInstanceFunctionExecution( + self, class_context.parent_context, scope, ) diff --git a/jedi/evaluate/param.py b/jedi/evaluate/param.py index 170f1c71..69cc3eee 100644 --- a/jedi/evaluate/param.py +++ b/jedi/evaluate/param.py @@ -118,7 +118,7 @@ class TreeArguments(AbstractArguments): for values in list(zip_longest(*iterators)): # TODO zip_longest yields None, that means this would raise # an exception? - yield None, context.get_merged_lazycontext(values) + yield None, context.get_merged_lazy_context(values) elif stars == 2: arrays = self._evaluator.eval_element(self.context, el) for dct in arrays: diff --git a/test/completion/classes.py b/test/completion/classes.py index 6bbd9d6a..3ea9b2d1 100644 --- a/test/completion/classes.py +++ b/test/completion/classes.py @@ -50,6 +50,8 @@ class TestClass(object): self.var_local = 3 #? ['var_class', 'var_func', 'var_inst', 'var_local'] self.var_ + #? + var_local def ret(self, a1): # should not know any class functions!