forked from VimPlug/jedi
Make sure goto_definitions is no longer used in the main code
This commit is contained in:
@@ -244,7 +244,7 @@ class Script(object):
|
|||||||
|
|
||||||
context = self._get_module_context().create_context(leaf)
|
context = self._get_module_context().create_context(leaf)
|
||||||
|
|
||||||
values = helpers.infer_goto_definition(self._inference_state, context, leaf)
|
values = helpers.infer(self._inference_state, context, leaf)
|
||||||
values = convert_values(
|
values = convert_values(
|
||||||
values,
|
values,
|
||||||
only_stubs=only_stubs,
|
only_stubs=only_stubs,
|
||||||
@@ -419,7 +419,7 @@ class Script(object):
|
|||||||
unpack_tuple_to_dict(context, types, testlist)
|
unpack_tuple_to_dict(context, types, testlist)
|
||||||
else:
|
else:
|
||||||
if node.type == 'name':
|
if node.type == 'name':
|
||||||
defs = self._inference_state.goto_definitions(context, node)
|
defs = self._inference_state.infer(context, node)
|
||||||
else:
|
else:
|
||||||
defs = infer_call_of_leaf(context, node)
|
defs = infer_call_of_leaf(context, node)
|
||||||
try_iter_content(defs)
|
try_iter_content(defs)
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ class BaseDefinition(object):
|
|||||||
|
|
||||||
Here is an example of the value of this attribute. Let's consider
|
Here is an example of the value of this attribute. Let's consider
|
||||||
the following source. As what is in ``variable`` is unambiguous
|
the following source. As what is in ``variable`` is unambiguous
|
||||||
to Jedi, :meth:`jedi.Script.goto_definitions` should return a list of
|
to Jedi, :meth:`jedi.Script.infer` should return a list of
|
||||||
definition for ``sys``, ``f``, ``C`` and ``x``.
|
definition for ``sys``, ``f``, ``C`` and ``x``.
|
||||||
|
|
||||||
>>> from jedi._compatibility import no_unicode_pprint
|
>>> from jedi._compatibility import no_unicode_pprint
|
||||||
@@ -127,7 +127,7 @@ class BaseDefinition(object):
|
|||||||
... variable'''
|
... variable'''
|
||||||
|
|
||||||
>>> script = Script(source)
|
>>> script = Script(source)
|
||||||
>>> defs = script.goto_definitions()
|
>>> defs = script.infer()
|
||||||
|
|
||||||
Before showing what is in ``defs``, let's sort it by :attr:`line`
|
Before showing what is in ``defs``, let's sort it by :attr:`line`
|
||||||
so that it is easy to relate the result to the source code.
|
so that it is easy to relate the result to the source code.
|
||||||
@@ -177,7 +177,7 @@ class BaseDefinition(object):
|
|||||||
>>> from jedi import Script
|
>>> from jedi import Script
|
||||||
>>> source = 'import json'
|
>>> source = 'import json'
|
||||||
>>> script = Script(source, path='example.py')
|
>>> script = Script(source, path='example.py')
|
||||||
>>> d = script.goto_definitions()[0]
|
>>> d = script.infer()[0]
|
||||||
>>> print(d.module_name) # doctest: +ELLIPSIS
|
>>> print(d.module_name) # doctest: +ELLIPSIS
|
||||||
json
|
json
|
||||||
"""
|
"""
|
||||||
@@ -217,8 +217,8 @@ class BaseDefinition(object):
|
|||||||
... def f(a, b=1):
|
... def f(a, b=1):
|
||||||
... "Document for function f."
|
... "Document for function f."
|
||||||
... '''
|
... '''
|
||||||
>>> script = Script(source, 1, len('def f'), 'example.py')
|
>>> script = Script(source, path='example.py')
|
||||||
>>> doc = script.goto_definitions()[0].docstring()
|
>>> doc = script.infer(1, len('def f'))[0].docstring()
|
||||||
>>> print(doc)
|
>>> print(doc)
|
||||||
f(a, b=1)
|
f(a, b=1)
|
||||||
<BLANKLINE>
|
<BLANKLINE>
|
||||||
@@ -228,7 +228,7 @@ class BaseDefinition(object):
|
|||||||
docstring. For function, it is call signature. If you need
|
docstring. For function, it is call signature. If you need
|
||||||
actual docstring, use ``raw=True`` instead.
|
actual docstring, use ``raw=True`` instead.
|
||||||
|
|
||||||
>>> print(script.goto_definitions()[0].docstring(raw=True))
|
>>> print(script.infer(1, len('def f'))[0].docstring(raw=True))
|
||||||
Document for function f.
|
Document for function f.
|
||||||
|
|
||||||
:param fast: Don't follow imports that are only one level deep like
|
:param fast: Don't follow imports that are only one level deep like
|
||||||
@@ -259,8 +259,8 @@ class BaseDefinition(object):
|
|||||||
>>> source = '''
|
>>> source = '''
|
||||||
... import os
|
... import os
|
||||||
... os.path.join'''
|
... os.path.join'''
|
||||||
>>> script = Script(source, 3, len('os.path.join'), 'example.py')
|
>>> script = Script(source, path='example.py')
|
||||||
>>> print(script.goto_definitions()[0].full_name)
|
>>> print(script.infer(3, len('os.path.join'))[0].full_name)
|
||||||
os.path.join
|
os.path.join
|
||||||
|
|
||||||
Notice that it returns ``'os.path.join'`` instead of (for example)
|
Notice that it returns ``'os.path.join'`` instead of (for example)
|
||||||
@@ -526,7 +526,7 @@ class Completion(BaseDefinition):
|
|||||||
class Definition(BaseDefinition):
|
class Definition(BaseDefinition):
|
||||||
"""
|
"""
|
||||||
*Definition* objects are returned from :meth:`api.Script.goto_assignments`
|
*Definition* objects are returned from :meth:`api.Script.goto_assignments`
|
||||||
or :meth:`api.Script.goto_definitions`.
|
or :meth:`api.Script.infer`.
|
||||||
"""
|
"""
|
||||||
def __init__(self, inference_state, definition):
|
def __init__(self, inference_state, definition):
|
||||||
super(Definition, self).__init__(inference_state, definition)
|
super(Definition, self).__init__(inference_state, definition)
|
||||||
@@ -549,8 +549,8 @@ class Definition(BaseDefinition):
|
|||||||
... pass
|
... pass
|
||||||
...
|
...
|
||||||
... variable = f if random.choice([0,1]) else C'''
|
... variable = f if random.choice([0,1]) else C'''
|
||||||
>>> script = Script(source, column=3) # line is maximum by default
|
>>> script = Script(source) # line is maximum by default
|
||||||
>>> defs = script.goto_definitions()
|
>>> defs = script.infer(column=3)
|
||||||
>>> defs = sorted(defs, key=lambda d: d.line)
|
>>> defs = sorted(defs, key=lambda d: d.line)
|
||||||
>>> no_unicode_pprint(defs) # doctest: +NORMALIZE_WHITESPACE
|
>>> no_unicode_pprint(defs) # doctest: +NORMALIZE_WHITESPACE
|
||||||
[<Definition full_name='__main__.f', description='def f'>,
|
[<Definition full_name='__main__.f', description='def f'>,
|
||||||
|
|||||||
@@ -150,11 +150,9 @@ def get_stack_at_position(grammar, code_lines, leaf, pos):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def infer_goto_definition(inference_state, context, leaf):
|
def infer(inference_state, context, leaf):
|
||||||
if leaf.type == 'name':
|
if leaf.type == 'name':
|
||||||
# In case of a name we can just use goto_definition which does all the
|
return inference_state.infer(context, leaf)
|
||||||
# magic itself.
|
|
||||||
return inference_state.goto_definitions(context, leaf)
|
|
||||||
|
|
||||||
parent = leaf.parent
|
parent = leaf.parent
|
||||||
definitions = NO_VALUES
|
definitions = NO_VALUES
|
||||||
@@ -407,7 +405,7 @@ def cache_call_signatures(inference_state, context, bracket_leaf, code_lines, us
|
|||||||
yield None # Don't cache!
|
yield None # Don't cache!
|
||||||
else:
|
else:
|
||||||
yield (module_path, before_bracket, bracket_leaf.start_pos)
|
yield (module_path, before_bracket, bracket_leaf.start_pos)
|
||||||
yield infer_goto_definition(
|
yield infer(
|
||||||
inference_state,
|
inference_state,
|
||||||
context,
|
context,
|
||||||
bracket_leaf.get_previous_leaf(),
|
bracket_leaf.get_previous_leaf(),
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ class InferenceState(object):
|
|||||||
"""Convenience function"""
|
"""Convenience function"""
|
||||||
return self.project._get_sys_path(self, environment=self.environment, **kwargs)
|
return self.project._get_sys_path(self, environment=self.environment, **kwargs)
|
||||||
|
|
||||||
def goto_definitions(self, context, name):
|
def infer(self, context, name):
|
||||||
def_ = name.get_definition(import_name_always=True)
|
def_ = name.get_definition(import_name_always=True)
|
||||||
if def_ is not None:
|
if def_ is not None:
|
||||||
type_ = def_.type
|
type_ = def_.type
|
||||||
|
|||||||
@@ -186,7 +186,7 @@ def _check_name_for_execution(inference_state, context, compare_node, name, trai
|
|||||||
args = InstanceArguments(value.instance, args)
|
args = InstanceArguments(value.instance, args)
|
||||||
return args
|
return args
|
||||||
|
|
||||||
for value in inference_state.goto_definitions(context, name):
|
for value in inference_state.infer(context, name):
|
||||||
value_node = value.tree_node
|
value_node = value.tree_node
|
||||||
if compare_node == value_node:
|
if compare_node == value_node:
|
||||||
yield create_args(value)
|
yield create_args(value)
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ def infer_node(context, element):
|
|||||||
str_element_names = [e.value for e in element_names]
|
str_element_names = [e.value for e in element_names]
|
||||||
if any(i.value in str_element_names for i in if_names):
|
if any(i.value in str_element_names for i in if_names):
|
||||||
for if_name in if_names:
|
for if_name in if_names:
|
||||||
definitions = context.inference_state.goto_definitions(context, if_name)
|
definitions = context.inference_state.infer(context, if_name)
|
||||||
# Every name that has multiple different definitions
|
# Every name that has multiple different definitions
|
||||||
# causes the complexity to rise. The complexity should
|
# causes the complexity to rise. The complexity should
|
||||||
# never fall below 1.
|
# never fall below 1.
|
||||||
|
|||||||
Reference in New Issue
Block a user