1
0
forked from VimPlug/jedi

Start implementing the bulk of the context/value separation

This commit is contained in:
Dave Halter
2019-08-16 16:12:12 +02:00
parent d19233a338
commit 165639c1dd
23 changed files with 322 additions and 251 deletions
+7 -6
View File
@@ -26,22 +26,23 @@ def _dictionarize(names):
)
def _find_names(module_value, tree_name):
value = module_value.create_value(tree_name)
name = TreeNameDefinition(value, tree_name)
def _find_names(module_context, tree_name):
context = module_context.create_context(tree_name)
name = TreeNameDefinition(context, tree_name)
found_names = set(name.goto())
found_names.add(name)
return _dictionarize(_resolve_names(found_names))
def usages(module_value, tree_name):
def usages(module_context, tree_name):
search_name = tree_name.value
found_names = _find_names(module_value, tree_name)
found_names = _find_names(module_context, tree_name)
modules = set(d.get_root_value() for d in found_names.values())
modules = set(m for m in modules if m.is_module() and not m.is_compiled())
non_matching_usage_maps = {}
for m in imports.get_modules_containing_name(module_value.inference_state, modules, search_name):
inf = module_context.inference_state
for m in imports.get_modules_containing_name(inf, modules, search_name):
for name_leaf in m.tree_node.get_used_names().get(search_name, []):
new = _find_names(m, name_leaf)
if any(tree_name in found_names for tree_name in new):