mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-08 06:44:46 +08:00
Fix an issue with interpreter completion, see also #1628
This commit is contained in:
@@ -3,6 +3,7 @@ TODO Some parts of this module are still not well documented.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from jedi.inference import compiled
|
from jedi.inference import compiled
|
||||||
|
from jedi.inference.filters import ParserTreeFilter, MergedFilter
|
||||||
from jedi.inference.compiled import mixed
|
from jedi.inference.compiled import mixed
|
||||||
from jedi.inference.compiled.access import create_access_path
|
from jedi.inference.compiled.access import create_access_path
|
||||||
from jedi.inference.context import ModuleContext
|
from jedi.inference.context import ModuleContext
|
||||||
@@ -30,12 +31,18 @@ class MixedModuleContext(ModuleContext):
|
|||||||
tree_value=self._value
|
tree_value=self._value
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_filters(self, *args, **kwargs):
|
def get_filters(self, until_position=None, origin_scope=None):
|
||||||
for filter in self._value.as_context().get_filters(*args, **kwargs):
|
yield MergedFilter(
|
||||||
yield filter
|
ParserTreeFilter(
|
||||||
|
parent_context=self,
|
||||||
|
until_position=until_position,
|
||||||
|
origin_scope=origin_scope
|
||||||
|
),
|
||||||
|
self.get_global_filter(),
|
||||||
|
)
|
||||||
|
|
||||||
for namespace_obj in self._namespace_objects:
|
for namespace_obj in self._namespace_objects:
|
||||||
compiled_value = _create(self.inference_state, namespace_obj)
|
compiled_value = _create(self.inference_state, namespace_obj)
|
||||||
mixed_object = self._get_mixed_object(compiled_value)
|
mixed_object = self._get_mixed_object(compiled_value)
|
||||||
for filter in mixed_object.get_filters(*args, **kwargs):
|
for filter in mixed_object.get_filters(until_position, origin_scope):
|
||||||
yield filter
|
yield filter
|
||||||
|
|||||||
@@ -681,3 +681,9 @@ def test_string_annotation(annotations, result, code):
|
|||||||
x.__annotations__ = annotations
|
x.__annotations__ = annotations
|
||||||
defs = jedi.Interpreter(code or 'x()', [locals()]).infer()
|
defs = jedi.Interpreter(code or 'x()', [locals()]).infer()
|
||||||
assert [d.name for d in defs] == result
|
assert [d.name for d in defs] == result
|
||||||
|
|
||||||
|
|
||||||
|
def test_variable_reuse():
|
||||||
|
x = 1
|
||||||
|
d, = jedi.Interpreter('y = x\ny', [locals()]).infer()
|
||||||
|
assert d.name == 'int'
|
||||||
|
|||||||
Reference in New Issue
Block a user