mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-09 15:24:46 +08:00
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(
|
||||
script._evaluator,
|
||||
TreeNameDefinition(
|
||||
module_context.create_context(name.parent),
|
||||
module_context.create_context(name if name.parent.type == 'file_input' else name.parent),
|
||||
name
|
||||
)
|
||||
) 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
|
||||
else:
|
||||
user_stmt = leaf.get_definition()
|
||||
|
||||
if user_stmt.parent.type == 'simple_stmt':
|
||||
user_stmt = user_stmt.parent
|
||||
|
||||
|
||||
@@ -449,10 +449,9 @@ class Evaluator(object):
|
||||
if is_simple_name:
|
||||
if name.parent.type == 'classdef' and name.parent.name == name:
|
||||
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)]
|
||||
elif name.parent.type == 'file_input':
|
||||
raise NotImplementedError
|
||||
|
||||
if def_.type == 'expr_stmt' and name in def_.get_defined_names():
|
||||
return self.eval_statement(context, def_, name)
|
||||
elif def_.type == 'for_stmt' and \
|
||||
@@ -592,7 +591,7 @@ class Evaluator(object):
|
||||
if node_is_context and parser_utils.is_scope(node):
|
||||
scope_node = node
|
||||
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
|
||||
# object itself and not its contents.
|
||||
node = node.parent
|
||||
|
||||
@@ -12,6 +12,6 @@ import pytest
|
||||
])
|
||||
def test_equals(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)
|
||||
assert isinstance(first, CompiledObject) and first.obj is True
|
||||
|
||||
@@ -11,7 +11,7 @@ from jedi import Script
|
||||
def test_paths_from_assignment():
|
||||
def paths(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))
|
||||
|
||||
assert paths('sys.path[0:0] = ["a"]') == set(['a'])
|
||||
|
||||
@@ -11,8 +11,10 @@ import pytest
|
||||
class TestCallAndName():
|
||||
def get_call(self, source):
|
||||
# Get the simple_stmt and then the first one.
|
||||
simple_stmt = parse(source).children[0]
|
||||
return simple_stmt.children[0]
|
||||
node = parse(source).children[0]
|
||||
if node.type == 'simple_stmt':
|
||||
return node.children[0]
|
||||
return node
|
||||
|
||||
def test_name_and_call_positions(self):
|
||||
name = self.get_call('name\nsomething_else')
|
||||
|
||||
Reference in New Issue
Block a user