1
0
forked from VimPlug/jedi

Fix an issue with complete_search

This commit is contained in:
Dave Halter
2021-01-10 16:08:17 +01:00
parent 4597c7ebe7
commit 6279791b24
3 changed files with 10 additions and 4 deletions

View File

@@ -328,7 +328,8 @@ class Project:
) )
# 2. Search for identifiers in the project. # 2. Search for identifiers in the project.
for module_context in search_in_file_ios(inference_state, file_ios, name): for module_context in search_in_file_ios(inference_state, file_ios,
name, complete=complete):
names = get_module_names(module_context.tree_node, all_scopes=all_scopes) names = get_module_names(module_context.tree_node, all_scopes=all_scopes)
names = [module_context.create_name(n) for n in names] names = [module_context.create_name(n) for n in names]
names = _remove_imports(names) names = _remove_imports(names)

View File

@@ -282,12 +282,13 @@ def get_module_contexts_containing_name(inference_state, module_contexts, name,
limit_reduction=limit_reduction) limit_reduction=limit_reduction)
def search_in_file_ios(inference_state, file_io_iterator, name, limit_reduction=1): def search_in_file_ios(inference_state, file_io_iterator, name,
limit_reduction=1, complete=False):
parse_limit = _PARSED_FILE_LIMIT / limit_reduction parse_limit = _PARSED_FILE_LIMIT / limit_reduction
open_limit = _OPENED_FILE_LIMIT / limit_reduction open_limit = _OPENED_FILE_LIMIT / limit_reduction
file_io_count = 0 file_io_count = 0
parsed_file_count = 0 parsed_file_count = 0
regex = re.compile(r'\b' + re.escape(name) + r'\b') regex = re.compile(r'\b' + re.escape(name) + (r'' if complete else r'\b'))
for file_io in file_io_iterator: for file_io in file_io_iterator:
file_io_count += 1 file_io_count += 1
m = _check_fs(inference_state, file_io, regex) m = _check_fs(inference_state, file_io, regex)

View File

@@ -68,6 +68,10 @@ def test_load_save_project(tmpdir):
dict(all_scopes=True)), dict(all_scopes=True)),
('some_search_test_var', ['test_api.test_project.test_search.some_search_test_var'], ('some_search_test_var', ['test_api.test_project.test_search.some_search_test_var'],
dict(complete=True, all_scopes=True)), dict(complete=True, all_scopes=True)),
# Make sure that the searched name is not part of the file, by
# splitting it up.
('some_search_test_v' + 'a', ['test_api.test_project.test_search.some_search_test_var'],
dict(complete=True, all_scopes=True)),
('sample_int', ['helpers.sample_int'], {}), ('sample_int', ['helpers.sample_int'], {}),
('sample_int', ['helpers.sample_int'], dict(all_scopes=True)), ('sample_int', ['helpers.sample_int'], dict(all_scopes=True)),
@@ -146,7 +150,7 @@ def test_search(string, full_names, kwargs):
defs = project.complete_search(string, **kwargs) defs = project.complete_search(string, **kwargs)
else: else:
defs = project.search(string, **kwargs) defs = project.search(string, **kwargs)
assert sorted([('stub:' if d.is_stub() else '') + d.full_name for d in defs]) == full_names assert sorted([('stub:' if d.is_stub() else '') + (d.full_name or d.name) for d in defs]) == full_names
@pytest.mark.parametrize( @pytest.mark.parametrize(