From 7c45d84721bdb4ea6147b1f623c3cf375850fe92 Mon Sep 17 00:00:00 2001 From: David Halter Date: Sat, 22 Sep 2012 18:19:47 +0200 Subject: [PATCH] dict assignment renaming -> fixes #20 --- jedi/dynamic.py | 20 ++++++++++++++++++-- test/completion/renaming.py | 11 +++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/jedi/dynamic.py b/jedi/dynamic.py index 1a4441b4..2703f74b 100644 --- a/jedi/dynamic.py +++ b/jedi/dynamic.py @@ -361,6 +361,19 @@ def related_names(definitions, search_name, mods): if not definitions: return set() + def is_definition(arr): + try: + for a in arr: + assert len(a) == 1 + a = a[0] + if a.isinstance(parsing.Array): + assert is_definition(a) + elif a.isinstance(parsing.Call): + assert a.execution is None + return True + except AssertionError: + return False + mods |= set([d.get_parent_until() for d in definitions]) names = [] for m in get_directory_modules_for_name(mods, search_name): @@ -388,8 +401,11 @@ def related_names(definitions, search_name, mods): if set(f) & set(definitions): names.append(RelatedName(name_part, stmt)) else: - ass = stmt.get_assignment_calls() - for call in _scan_array(ass, search_name): + calls = _scan_array(stmt.get_assignment_calls(), search_name) + for d in stmt.assignment_details: + if not is_definition(d[1]): + calls += _scan_array(d[1], search_name) + for call in calls: names += check_call(call) return names diff --git a/test/completion/renaming.py b/test/completion/renaming.py index 2e0f0a4c..92e14a2f 100644 --- a/test/completion/renaming.py +++ b/test/completion/renaming.py @@ -86,3 +86,14 @@ from import_tree.rename1 import abc #< (88, 32), from import_tree.rename1 import not_existing + + + + + + +response = HttpResponse(mimetype='application/pdf') +response['Content-Disposition'] = 'attachment; filename=%s.pdf' % id +response.write(pdf) +#< (95, 0), (96, 0), (97, 0), (99, 0) +response