forked from VimPlug/jedi
Fix some stuff to make parso work again.
This commit is contained in:
@@ -458,7 +458,7 @@ def names(source=None, path=None, encoding='utf-8', all_scopes=False,
|
|||||||
classes.Definition(
|
classes.Definition(
|
||||||
script._evaluator,
|
script._evaluator,
|
||||||
TreeNameDefinition(
|
TreeNameDefinition(
|
||||||
module_context.create_context(name.parent),
|
module_context.create_context(name if name.parent.type == 'file_input' else name.parent),
|
||||||
name
|
name
|
||||||
)
|
)
|
||||||
) for name in get_module_names(script._get_module_node(), all_scopes)
|
) for name in get_module_names(script._get_module_node(), all_scopes)
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ def _get_code_for_stack(code_lines, module_node, position):
|
|||||||
user_stmt = leaf.parent
|
user_stmt = leaf.parent
|
||||||
else:
|
else:
|
||||||
user_stmt = leaf.get_definition()
|
user_stmt = leaf.get_definition()
|
||||||
|
|
||||||
if user_stmt.parent.type == 'simple_stmt':
|
if user_stmt.parent.type == 'simple_stmt':
|
||||||
user_stmt = user_stmt.parent
|
user_stmt = user_stmt.parent
|
||||||
|
|
||||||
|
|||||||
@@ -449,10 +449,9 @@ class Evaluator(object):
|
|||||||
if is_simple_name:
|
if is_simple_name:
|
||||||
if name.parent.type == 'classdef' and name.parent.name == name:
|
if name.parent.type == 'classdef' and name.parent.name == name:
|
||||||
return [er.ClassContext(self, name.parent, context)]
|
return [er.ClassContext(self, name.parent, context)]
|
||||||
elif name.parent.type == 'funcdef':
|
elif name.parent.type == 'funcdef' and name.parent.name == name:
|
||||||
return [er.FunctionContext(self, context, name.parent)]
|
return [er.FunctionContext(self, context, name.parent)]
|
||||||
elif name.parent.type == 'file_input':
|
|
||||||
raise NotImplementedError
|
|
||||||
if def_.type == 'expr_stmt' and name in def_.get_defined_names():
|
if def_.type == 'expr_stmt' and name in def_.get_defined_names():
|
||||||
return self.eval_statement(context, def_, name)
|
return self.eval_statement(context, def_, name)
|
||||||
elif def_.type == 'for_stmt' and \
|
elif def_.type == 'for_stmt' and \
|
||||||
@@ -592,7 +591,7 @@ class Evaluator(object):
|
|||||||
if node_is_context and parser_utils.is_scope(node):
|
if node_is_context and parser_utils.is_scope(node):
|
||||||
scope_node = node
|
scope_node = node
|
||||||
else:
|
else:
|
||||||
if node.parent.type in ('funcdef', 'classdef'):
|
if node.parent.type in ('funcdef', 'classdef') and node.parent.name == node:
|
||||||
# When we're on class/function names/leafs that define the
|
# When we're on class/function names/leafs that define the
|
||||||
# object itself and not its contents.
|
# object itself and not its contents.
|
||||||
node = node.parent
|
node = node.parent
|
||||||
|
|||||||
@@ -12,6 +12,6 @@ import pytest
|
|||||||
])
|
])
|
||||||
def test_equals(source):
|
def test_equals(source):
|
||||||
script = Script(source)
|
script = Script(source)
|
||||||
node = script._get_module_node().children[0].children[0]
|
node = script._get_module_node().children[0]
|
||||||
first, = script._get_module().eval_node(node)
|
first, = script._get_module().eval_node(node)
|
||||||
assert isinstance(first, CompiledObject) and first.obj is True
|
assert isinstance(first, CompiledObject) and first.obj is True
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ from jedi import Script
|
|||||||
def test_paths_from_assignment():
|
def test_paths_from_assignment():
|
||||||
def paths(src):
|
def paths(src):
|
||||||
script = Script(src)
|
script = Script(src)
|
||||||
expr_stmt = script._get_module_node().children[0].children[0]
|
expr_stmt = script._get_module_node().children[0]
|
||||||
return set(sys_path._paths_from_assignment(script._get_module(), expr_stmt))
|
return set(sys_path._paths_from_assignment(script._get_module(), expr_stmt))
|
||||||
|
|
||||||
assert paths('sys.path[0:0] = ["a"]') == set(['a'])
|
assert paths('sys.path[0:0] = ["a"]') == set(['a'])
|
||||||
|
|||||||
@@ -11,8 +11,10 @@ import pytest
|
|||||||
class TestCallAndName():
|
class TestCallAndName():
|
||||||
def get_call(self, source):
|
def get_call(self, source):
|
||||||
# Get the simple_stmt and then the first one.
|
# Get the simple_stmt and then the first one.
|
||||||
simple_stmt = parse(source).children[0]
|
node = parse(source).children[0]
|
||||||
return simple_stmt.children[0]
|
if node.type == 'simple_stmt':
|
||||||
|
return node.children[0]
|
||||||
|
return node
|
||||||
|
|
||||||
def test_name_and_call_positions(self):
|
def test_name_and_call_positions(self):
|
||||||
name = self.get_call('name\nsomething_else')
|
name = self.get_call('name\nsomething_else')
|
||||||
|
|||||||
Reference in New Issue
Block a user