From 1624f6945e7201546c511710abfe66fbdb1e1336 Mon Sep 17 00:00:00 2001 From: Andy Lee Date: Wed, 22 Mar 2017 10:51:45 -0700 Subject: [PATCH] Fix `api.usages` so it finds cross-module usages --- jedi/api/usages.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/jedi/api/usages.py b/jedi/api/usages.py index 9bca83d5..868334e7 100644 --- a/jedi/api/usages.py +++ b/jedi/api/usages.py @@ -5,6 +5,10 @@ from jedi.evaluate.filters import TreeNameDefinition from jedi.evaluate.representation import ModuleContext +def compare_contexts(c1, c2): + return c1 == c2 or (c1[1] == c2[1] and c1[0].tree_node == c2[0].tree_node) + + def usages(evaluator, definition_names, mods): """ :param definitions: list of Name @@ -40,7 +44,9 @@ def usages(evaluator, definition_names, mods): for name_node in m.tree_node.used_names.get(search_name, []): context = evaluator.create_context(m, name_node) result = evaluator.goto(context, name_node) - if [c for c in compare_array(result) if c in compare_definitions]: + if any(compare_contexts(c1, c2) + for c1 in compare_array(result) + for c2 in compare_definitions): name = TreeNameDefinition(context, name_node) definition_names.add(name) # Previous definitions might be imports, so include them