diff --git a/jedi/api/completion.py b/jedi/api/completion.py index 332cab0f..f5f81df0 100644 --- a/jedi/api/completion.py +++ b/jedi/api/completion.py @@ -457,6 +457,8 @@ def _extract_string_while_in_string(leaf, position): if leaf.line == position[0]: kwargs['endpos'] = position[1] - leaf.column match = _string_start.match(leaf.value, **kwargs) + if not match: + return None, None, None start = match.group(0) if leaf.line == position[0] and position[1] < leaf.column + match.end(): return None, None, None diff --git a/test/test_api/test_completion.py b/test/test_api/test_completion.py index fed496ab..cc10db72 100644 --- a/test/test_api/test_completion.py +++ b/test/test_api/test_completion.py @@ -299,6 +299,9 @@ current_dirname = os.path.basename(dirname(dirname(dirname(__file__)))) (f2, os_path + 'join(["tes"]', 10, ['t' + s]), (f2, os_path + 'join(["tes"])', 10, ['t' + s]), (f2, os_path + 'join("test", "test_cac" + x,', 22, ['he.py']), + + # GH #1528 + (f2, "'a' 'b'", 4, Ellipsis), ] ) def test_file_path_completions(Script, file, code, column, expected): @@ -306,7 +309,7 @@ def test_file_path_completions(Script, file, code, column, expected): if isinstance(column, tuple): line, column = column comps = Script(code, path=file).complete(line=line, column=column) - if expected == "A LOT": + if expected is Ellipsis: assert len(comps) > 100 # This is basically global completions. else: assert [c.complete for c in comps] == expected