From 1213b51c66b96675115bdd1cb9015c28432092b8 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Sun, 2 Jun 2019 17:54:00 +0200 Subject: [PATCH] Imports completions after a semicolon work now --- jedi/api/completion.py | 7 ++++++- test/test_evaluate/test_imports.py | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/jedi/api/completion.py b/jedi/api/completion.py index 481af874..6f632b8e 100644 --- a/jedi/api/completion.py +++ b/jedi/api/completion.py @@ -179,7 +179,12 @@ class Completion: nonterminals = [stack_node.nonterminal for stack_node in stack] - nodes = [node for stack_node in stack for node in stack_node.nodes] + nodes = [] + for stack_node in stack: + if stack_node.dfa.from_rule == 'small_stmt': + nodes = [] + else: + nodes += stack_node.nodes if nodes and nodes[-1] in ('as', 'def', 'class'): # No completions for ``with x as foo`` and ``import x as foo``. diff --git a/test/test_evaluate/test_imports.py b/test/test_evaluate/test_imports.py index 48bb5995..521edcca 100644 --- a/test/test_evaluate/test_imports.py +++ b/test/test_evaluate/test_imports.py @@ -456,3 +456,9 @@ def test_import_needed_modules_by_jedi(Script, environment, tmpdir, name): module, = script.goto_definitions() assert module._evaluator.builtins_module.py__file__() != module_path assert module._evaluator.typing_module.py__file__() != module_path + + +def test_import_with_semicolon(Script): + names = [c.name for c in Script('xzy; from abc import ').completions()] + assert 'ABCMeta' in names + assert 'abc' not in names