Make separate methods for goto_import and infer_import

This commit is contained in:
Dave Halter
2019-08-21 23:58:26 +02:00
parent 2fb04db0ab
commit bf4d42798b
2 changed files with 11 additions and 2 deletions

View File

@@ -308,7 +308,7 @@ class InferenceState(object):
elif type_ == 'param': elif type_ == 'param':
return [ParamName(context, name)] return [ParamName(context, name)]
elif type_ in ('import_from', 'import_name'): elif type_ in ('import_from', 'import_name'):
module_names = imports.infer_import(context, name, is_goto=True) module_names = imports.goto_import(context, name)
return module_names return module_names
else: else:
return [TreeNameDefinition(context, name)] return [TreeNameDefinition(context, name)]

View File

@@ -57,7 +57,16 @@ class ModuleCache(object):
# This memoization is needed, because otherwise we will infinitely loop on # This memoization is needed, because otherwise we will infinitely loop on
# certain imports. # certain imports.
@inference_state_method_cache(default=NO_VALUES) @inference_state_method_cache(default=NO_VALUES)
def infer_import(context, tree_name, is_goto=False): def infer_import(context, tree_name):
return _infer_import(context, tree_name, is_goto=False)
@inference_state_method_cache(default=[])
def goto_import(context, tree_name):
return _infer_import(context, tree_name, is_goto=True)
def _infer_import(context, tree_name, is_goto=False):
module_context = context.get_root_context() module_context = context.get_root_context()
import_node = search_ancestor(tree_name, 'import_name', 'import_from') import_node = search_ancestor(tree_name, 'import_name', 'import_from')
import_path = import_node.get_path_for_name(tree_name) import_path = import_node.get_path_for_name(tree_name)