From 3b2367a47a2d91478e46ad86bda8be84ff743247 Mon Sep 17 00:00:00 2001 From: David Halter Date: Tue, 20 Nov 2012 16:38:52 +0100 Subject: [PATCH] parts of code were executed even though they weren't required, related to #47 --- jedi/evaluate.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/jedi/evaluate.py b/jedi/evaluate.py index 970f2c06..c1c9c582 100644 --- a/jedi/evaluate.py +++ b/jedi/evaluate.py @@ -1010,18 +1010,21 @@ def get_scopes_for_name(scope, name_str, position=None, search_global=False, add = get_scopes_for_name(r.parent(), str(token_name)) else: - # generated objects are used within executions, where + # generated objects are used within executions, but these + # objects are in functions, and we have to dynamically + # execute first. if isinstance(r, parsing.Param): func = r.parent() - # Instances are typically faked, if the instance is not - # called from outside. Here we check it for __init__ - # functions and return. - if isinstance(func, InstanceElement) \ + if not r.is_generated: + # Instances are typically faked, if the instance is + # not called from outside. Here we check it for + # __init__ functions and return. + if isinstance(func, InstanceElement) \ and func.instance.is_generated \ and str(func.name) == '__init__' \ and r.position_nr > 0: # 0 would be self - r = func.var.params[r.position_nr] - if not r.is_generated: + r = func.var.params[r.position_nr] + res_new += dynamic.search_params(r) if not r.assignment_details: # this means that there are no default params,