forked from VimPlug/jedi
Fix global statements.
This commit is contained in:
+8
-18
@@ -19,7 +19,6 @@ from itertools import chain
|
|||||||
from jedi._compatibility import unicode
|
from jedi._compatibility import unicode
|
||||||
from jedi.parser import tree
|
from jedi.parser import tree
|
||||||
from jedi import debug
|
from jedi import debug
|
||||||
from jedi import common
|
|
||||||
from jedi.common import unite
|
from jedi.common import unite
|
||||||
from jedi import settings
|
from jedi import settings
|
||||||
from jedi.evaluate import representation as er
|
from jedi.evaluate import representation as er
|
||||||
@@ -227,7 +226,7 @@ class NameFinder(object):
|
|||||||
# TODO seriously? this is stupid.
|
# TODO seriously? this is stupid.
|
||||||
continue
|
continue
|
||||||
check = flow_analysis.reachability_check(self._context, name_scope,
|
check = flow_analysis.reachability_check(self._context, name_scope,
|
||||||
stmt, origin_scope)
|
stmt, origin_scope)
|
||||||
if check is not flow_analysis.UNREACHABLE:
|
if check is not flow_analysis.UNREACHABLE:
|
||||||
last_names.append(name)
|
last_names.append(name)
|
||||||
|
|
||||||
@@ -339,15 +338,6 @@ class NameFinder(object):
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def _get_global_stmt_scopes(evaluator, global_stmt, name):
|
|
||||||
raise DeprecationWarning
|
|
||||||
global_stmt_scope = global_stmt.get_parent_scope()
|
|
||||||
module = global_stmt_scope.get_parent_until()
|
|
||||||
for used_name in module.used_names[str(name)]:
|
|
||||||
if used_name.parent.type == 'global_stmt':
|
|
||||||
yield evaluator.wrap(used_name.get_parent_scope())
|
|
||||||
|
|
||||||
|
|
||||||
@memoize_default(set(), evaluator_is_first_arg=True)
|
@memoize_default(set(), evaluator_is_first_arg=True)
|
||||||
def _name_to_types(evaluator, context, name, scope):
|
def _name_to_types(evaluator, context, name, scope):
|
||||||
types = []
|
types = []
|
||||||
@@ -376,13 +366,13 @@ def _name_to_types(evaluator, context, name, scope):
|
|||||||
elif node.type in ('funcdef', 'classdef'):
|
elif node.type in ('funcdef', 'classdef'):
|
||||||
types = _apply_decorators(evaluator, context, node)
|
types = _apply_decorators(evaluator, context, node)
|
||||||
elif node.type == 'global_stmt':
|
elif node.type == 'global_stmt':
|
||||||
for s in _get_global_stmt_scopes(evaluator, node, name):
|
context = evaluator.create_context(context, name)
|
||||||
finder = NameFinder(evaluator, s, str(name))
|
finder = NameFinder(evaluator, context, str(name))
|
||||||
names_dicts = finder.get_filters(search_global=True)
|
filters = finder.get_filters(search_global=True)
|
||||||
# For global_stmt lookups, we only need the first possible scope,
|
# For global_stmt lookups, we only need the first possible scope,
|
||||||
# which means the function itself.
|
# which means the function itself.
|
||||||
names_dicts = [next(names_dicts)]
|
filters = [next(filters)]
|
||||||
types += finder.find(names_dicts, attribute_lookup=False)
|
types += finder.find(filters, attribute_lookup=False)
|
||||||
elif isinstance(node, tree.TryStmt):
|
elif isinstance(node, tree.TryStmt):
|
||||||
# TODO an exception can also be a tuple. Check for those.
|
# TODO an exception can also be a tuple. Check for those.
|
||||||
# TODO check for types that are not classes and add it to
|
# TODO check for types that are not classes and add it to
|
||||||
|
|||||||
@@ -736,17 +736,6 @@ class AnonymousFunctionExecution(FunctionExecutionContext):
|
|||||||
return search_params(self.evaluator, self.parent_context, self.funcdef)
|
return search_params(self.evaluator, self.parent_context, self.funcdef)
|
||||||
|
|
||||||
|
|
||||||
class GlobalName(object):
|
|
||||||
def __init__(self, name):
|
|
||||||
"""
|
|
||||||
We need to mark global names somehow. Otherwise they are just normal
|
|
||||||
names that are not definitions.
|
|
||||||
"""
|
|
||||||
raise NotImplementedError
|
|
||||||
super(GlobalName, self).__init__(name.value, name.parent,
|
|
||||||
name.start_pos, is_definition=True)
|
|
||||||
|
|
||||||
|
|
||||||
class ModuleAttributeName(AbstractNameDefinition):
|
class ModuleAttributeName(AbstractNameDefinition):
|
||||||
"""
|
"""
|
||||||
For module attributes like __file__, __str__ and so on.
|
For module attributes like __file__, __str__ and so on.
|
||||||
|
|||||||
Reference in New Issue
Block a user