forked from VimPlug/jedi
Further improvements to the interpreter refactoring.
This commit is contained in:
@@ -18,13 +18,17 @@ from jedi.evaluate import iterable
|
|||||||
from jedi.evaluate.compiled import mixed
|
from jedi.evaluate.compiled import mixed
|
||||||
|
|
||||||
|
|
||||||
def add_namespaces_to_parser(evaluator, namespaces, parser_module):
|
def add_namespaces_to_parser(evaluator, namespace_dicts, parser_module):
|
||||||
for namespace in namespaces:
|
for dct in namespace_dicts:
|
||||||
for key, value in namespace.items():
|
namespace = compiled.CompiledObject(evaluator, type('namespace', (), dct))
|
||||||
|
|
||||||
|
for key, value in dct.items():
|
||||||
# Name lookups in an ast tree work by checking names_dict.
|
# Name lookups in an ast tree work by checking names_dict.
|
||||||
# Therefore we just add fake names to that and we're done.
|
# Therefore we just add fake names to that and we're done.
|
||||||
arr = parser_module.names_dict.setdefault(key, [])
|
arr = parser_module.names_dict.setdefault(key, [])
|
||||||
arr.append(LazyName(evaluator, parser_module, key, value))
|
name = mixed.MixedName(evaluator, namespace, key)
|
||||||
|
arr.append(name)
|
||||||
|
#arr.append(LazyName(evaluator, parser_module, key, value))
|
||||||
|
|
||||||
|
|
||||||
class LazyName(helpers.FakeName):
|
class LazyName(helpers.FakeName):
|
||||||
|
|||||||
@@ -56,7 +56,15 @@ class MixedName(compiled.CompiledName):
|
|||||||
|
|
||||||
@parent.setter
|
@parent.setter
|
||||||
def parent(self, value):
|
def parent(self, value):
|
||||||
pass # Just ignore this, FakeName tries to overwrite the parent attribute.
|
pass # Just ignore this, Name tries to overwrite the parent attribute.
|
||||||
|
|
||||||
|
@property
|
||||||
|
def start_pos(self):
|
||||||
|
if isinstance(self.parent, MixedObject):
|
||||||
|
return self.parent.node_name.start_pos
|
||||||
|
|
||||||
|
# This means a start_pos that doesn't exist (compiled objects).
|
||||||
|
return (0, 0)
|
||||||
|
|
||||||
|
|
||||||
class LazyMixedNamesDict(compiled.LazyNamesDict):
|
class LazyMixedNamesDict(compiled.LazyNamesDict):
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ def test_nested_resolve():
|
|||||||
|
|
||||||
cls = get_completion('X', locals())
|
cls = get_completion('X', locals())
|
||||||
func = get_completion('X.x', locals())
|
func = get_completion('X.x', locals())
|
||||||
assert func.start_pos == (func.start_pos[0] + 1, 8)
|
assert func.start_pos == (cls.start_pos[0] + 1, 12)
|
||||||
|
|
||||||
|
|
||||||
def test_side_effect_completion():
|
def test_side_effect_completion():
|
||||||
|
|||||||
Reference in New Issue
Block a user