forked from VimPlug/jedi
Get rid of the node_is_value parameter
This commit is contained in:
@@ -15,7 +15,7 @@ from jedi.inference import imports
|
|||||||
from jedi.inference.helpers import infer_call_of_leaf, parse_dotted_names
|
from jedi.inference.helpers import infer_call_of_leaf, parse_dotted_names
|
||||||
from jedi.inference.filters import get_global_filters
|
from jedi.inference.filters import get_global_filters
|
||||||
from jedi.inference.gradual.conversion import convert_values
|
from jedi.inference.gradual.conversion import convert_values
|
||||||
from jedi.parser_utils import get_statement_of_position, cut_value_at_position
|
from jedi.parser_utils import get_statement_of_position, cut_value_at_position, is_scope
|
||||||
|
|
||||||
|
|
||||||
def get_call_signature_param_names(call_signatures):
|
def get_call_signature_param_names(call_signatures):
|
||||||
@@ -70,7 +70,10 @@ def get_user_context(module_context, position):
|
|||||||
|
|
||||||
scanned_node = scan(module_context.tree_node)
|
scanned_node = scan(module_context.tree_node)
|
||||||
if scanned_node:
|
if scanned_node:
|
||||||
return module_context.create_context(scanned_node, node_is_value=True)
|
if is_scope(scanned_node):
|
||||||
|
return module_context.create_value(scanned_node).as_context()
|
||||||
|
else:
|
||||||
|
return module_context.create_context(scanned_node)
|
||||||
return module_context
|
return module_context
|
||||||
else:
|
else:
|
||||||
return module_context.create_context(user_stmt)
|
return module_context.create_context(user_stmt)
|
||||||
@@ -284,7 +287,7 @@ class Completion:
|
|||||||
return
|
return
|
||||||
|
|
||||||
# Complete the methods that are defined in the super classes.
|
# Complete the methods that are defined in the super classes.
|
||||||
class_context = self._module_context.create_context(cls, node_is_value=True)
|
class_context = self._module_context.create_value(cls).as_context()
|
||||||
|
|
||||||
if cls.start_pos[1] >= leaf.start_pos[1]:
|
if cls.start_pos[1] >= leaf.start_pos[1]:
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -289,13 +289,10 @@ def _create(inference_state, access_handle, parent_context, *args):
|
|||||||
return ValueSet({compiled_object})
|
return ValueSet({compiled_object})
|
||||||
module_context = parent_context.get_root_context()
|
module_context = parent_context.get_root_context()
|
||||||
|
|
||||||
tree_values = ValueSet({
|
if tree_node is module_node:
|
||||||
module_context.create_context(
|
tree_values = ValueSet({module_context.get_value()})
|
||||||
tree_node,
|
else:
|
||||||
node_is_value=True,
|
tree_values = ValueSet({module_context.create_value(tree_node)})
|
||||||
)._value
|
|
||||||
# TODO private access!
|
|
||||||
})
|
|
||||||
if tree_node.type == 'classdef':
|
if tree_node.type == 'classdef':
|
||||||
if not access_handle.is_class():
|
if not access_handle.is_class():
|
||||||
# Is an instance, not a class.
|
# Is an instance, not a class.
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ class AbstractContext(object):
|
|||||||
else:
|
else:
|
||||||
raise NotImplementedError("Probably shouldn't happen: %s" % node)
|
raise NotImplementedError("Probably shouldn't happen: %s" % node)
|
||||||
|
|
||||||
def create_context(self, node, node_is_value=False):
|
def create_context(self, node):
|
||||||
def from_scope_node(scope_node, is_nested=True):
|
def from_scope_node(scope_node, is_nested=True):
|
||||||
if scope_node == base_node:
|
if scope_node == base_node:
|
||||||
return self
|
return self
|
||||||
@@ -60,31 +60,28 @@ class AbstractContext(object):
|
|||||||
|
|
||||||
base_node = self.tree_node
|
base_node = self.tree_node
|
||||||
|
|
||||||
if node_is_value and parser_utils.is_scope(node):
|
def parent_scope(node):
|
||||||
scope_node = node
|
while True:
|
||||||
else:
|
node = node.parent
|
||||||
def parent_scope(node):
|
|
||||||
while True:
|
|
||||||
node = node.parent
|
|
||||||
|
|
||||||
if parser_utils.is_scope(node):
|
if parser_utils.is_scope(node):
|
||||||
return node
|
return node
|
||||||
elif node.type in ('argument', 'testlist_comp'):
|
elif node.type in ('argument', 'testlist_comp'):
|
||||||
if node.children[1].type in ('comp_for', 'sync_comp_for'):
|
if node.children[1].type in ('comp_for', 'sync_comp_for'):
|
||||||
return node.children[1]
|
return node.children[1]
|
||||||
elif node.type == 'dictorsetmaker':
|
elif node.type == 'dictorsetmaker':
|
||||||
for n in node.children[1:4]:
|
for n in node.children[1:4]:
|
||||||
# In dictionaries it can be pretty much anything.
|
# In dictionaries it can be pretty much anything.
|
||||||
if n.type in ('comp_for', 'sync_comp_for'):
|
if n.type in ('comp_for', 'sync_comp_for'):
|
||||||
return n
|
return n
|
||||||
|
|
||||||
scope_node = parent_scope(node)
|
scope_node = parent_scope(node)
|
||||||
if scope_node.type in ('funcdef', 'classdef'):
|
if scope_node.type in ('funcdef', 'classdef'):
|
||||||
colon = scope_node.children[scope_node.children.index(':')]
|
colon = scope_node.children[scope_node.children.index(':')]
|
||||||
if node.start_pos < colon.start_pos:
|
if node.start_pos < colon.start_pos:
|
||||||
parent = node.parent
|
parent = node.parent
|
||||||
if not (parent.type == 'param' and parent.name == node):
|
if not (parent.type == 'param' and parent.name == node):
|
||||||
scope_node = parent_scope(scope_node)
|
scope_node = parent_scope(scope_node)
|
||||||
return from_scope_node(scope_node, is_nested=True)
|
return from_scope_node(scope_node, is_nested=True)
|
||||||
|
|
||||||
def goto(self, name_or_str, position):
|
def goto(self, name_or_str, position):
|
||||||
|
|||||||
Reference in New Issue
Block a user