Make infer public on classes

This commit is contained in:
Dave Halter
2019-04-01 09:25:00 +02:00
parent 2fc53045c7
commit 7c56052d58
8 changed files with 41 additions and 18 deletions

View File

@@ -207,9 +207,9 @@ def test_goto_assignments_follow_imports(Script):
assert definition.name == 'p'
result, = definition.goto_assignments()
assert result.name == 'p'
result, = definition._goto_definitions()
result, = definition.infer()
assert result.name == 'int'
result, = result._goto_definitions()
result, = result.infer()
assert result.name == 'int'
definition, = script.goto_assignments()

View File

@@ -29,7 +29,7 @@ def test_in_empty_space(Script):
comps = Script(code, 3, 7).completions()
self, = [c for c in comps if c.name == 'self']
assert self.name == 'self'
def_, = self._goto_definitions()
def_, = self.infer()
assert def_.name == 'X'

View File

@@ -244,8 +244,8 @@ def test_completion_params():
script = jedi.Interpreter('foo', [locals()])
c, = script.completions()
assert [p.name for p in c.params] == ['a', 'b']
assert c.params[0]._goto_definitions() == []
t, = c.params[1]._goto_definitions()
assert c.params[0].infer() == []
t, = c.params[1].infer()
assert t.name == 'int'
@@ -258,9 +258,9 @@ def test_completion_param_annotations():
script = jedi.Interpreter('foo', [locals()])
c, = script.completions()
a, b, c = c.params
assert a._goto_definitions() == []
assert [d.name for d in b._goto_definitions()] == ['str']
assert {d.name for d in c._goto_definitions()} == {'int', 'float'}
assert a.infer() == []
assert [d.name for d in b.infer()] == ['str']
assert {d.name for d in c.infer()} == {'int', 'float'}
def test_keyword_argument():
@@ -340,7 +340,7 @@ def test_dir_magic_method():
assert 'bar' in names
foo = [c for c in completions if c.name == 'foo'][0]
assert foo._goto_definitions() == []
assert foo.infer() == []
def test_name_not_findable():

View File

@@ -3,5 +3,5 @@ def test_module_attributes(Script):
assert def_.name == '__name__'
assert def_.line is None
assert def_.column is None
str_, = def_._goto_definitions()
str_, = def_.infer()
assert str_.name == 'str'

View File

@@ -185,6 +185,13 @@ def test_goto_stubs(Script):
os_module, = s.goto_assignments()
def _assert_is_same(d1, d2):
assert d1.name == d2.name
assert d1.module_path == d2.module_path
assert d1.line == d2.line
assert d1.column == d2.column
@pytest.mark.parametrize(
'code', [
'import os; os.walk',
@@ -197,15 +204,30 @@ def test_goto_stubs_on_itself(Script, code):
"""
s = Script(code)
def_, = s.goto_definitions()
stub, = def_.goto_stubs()
#stub, = def_.goto_stubs()
script_on_source = Script(
path=def_.module_path,
line=def_.line,
column=def_.column
)
print('GO')
definition, = script_on_source.goto_definitions()
print('\ta', definition._name._context, definition._name._context.parent_context)
return
same_stub, = definition.goto_stubs()
assert stub.module_path == same_stub.module_path
assert stub.line == same_stub.line
assert stub.column == same_stub.column
_assert_is_same(same_stub, stub)
_assert_is_same(definition, def_)
assert same_stub.module_path != def_.module_path
# And the reverse.
script_on_source = Script(
path=same_stub.module_path,
line=same_stub.line,
column=same_stub.column
)
same_definition, = script_on_source.goto_definitions()
same_definition2, = same_stub.infer()
_assert_is_same(same_definition, definition)
_assert_is_same(same_definition, same_definition2)