1
0
forked from VimPlug/jedi

Move get_statement_of_position out of the parser tree.

This commit is contained in:
Dave Halter
2017-04-15 02:23:08 +02:00
parent 1cfe5c2945
commit deb028c3fb
5 changed files with 24 additions and 22 deletions

View File

@@ -16,7 +16,7 @@ import sys
from jedi.parser.python import load_grammar
from jedi.parser.python import tree
from jedi.parser.python import parse
from jedi.parser_utils import get_executable_nodes
from jedi.parser_utils import get_executable_nodes, get_statement_of_position
from jedi import debug
from jedi import settings
from jedi import common
@@ -194,7 +194,7 @@ class Script(object):
:rtype: list of :class:`classes.Definition`
"""
module_node = self._get_module_node()
leaf = module_node.name_for_position(self._pos)
leaf = module_node.get_name_of_position(self._pos)
if leaf is None:
leaf = module_node.get_leaf_for_position(self._pos)
if leaf is None:
@@ -238,7 +238,7 @@ class Script(object):
"""
Used for goto_assignments and usages.
"""
name = self._get_module_node().name_for_position(self._pos)
name = self._get_module_node().get_name_of_position(self._pos)
if name is None:
return []
context = self._evaluator.create_context(self._get_module(), name)
@@ -259,13 +259,13 @@ class Script(object):
settings.dynamic_flow_information, False
try:
module_node = self._get_module_node()
user_stmt = module_node.get_statement_for_position(self._pos)
user_stmt = get_statement_of_position(module_node, self._pos)
definition_names = self._goto()
if not definition_names and isinstance(user_stmt, tree.Import):
# For not defined imports (goto doesn't find something, we take
# the name as a definition. This is enough, because every name
# points to it.
name = user_stmt.name_for_position(self._pos)
name = user_stmt.get_name_of_position(self._pos)
if name is None:
# Must be syntax
return []

View File

@@ -8,6 +8,7 @@ from jedi.evaluate import imports
from jedi.api import keywords
from jedi.evaluate.helpers import evaluate_call_of_leaf
from jedi.evaluate.filters import get_global_filters
from jedi.parser_utils import get_statement_of_position
def get_call_signature_param_names(call_signatures):
@@ -51,7 +52,7 @@ def get_user_scope(module_context, position):
"""
Returns the scope in which the user resides. This includes flows.
"""
user_stmt = module_context.tree_node.get_statement_for_position(position)
user_stmt = get_statement_of_position(module_context.tree_node, position)
if user_stmt is None:
def scan(scope):
for s in scope.children: