Fix RecursionError: global statements in modules should just be ignored, fixes #1457

This commit is contained in:
Dave Halter
2019-12-13 00:21:36 +01:00
parent e656a5f18f
commit 5e3e268cc6
2 changed files with 12 additions and 0 deletions

View File

@@ -686,6 +686,11 @@ def tree_name_to_values(inference_state, context, tree_name):
node = tree_name.parent
if node.type == 'global_stmt':
c = context.create_context(tree_name)
if c.is_module():
# In case we are already part of the module, there is no point
# in looking up the global statement anymore, because it's not
# valid at that point anyway.
return NO_VALUES
# For global_stmt lookups, we only need the first possible scope,
# which means the function itself.
filter = next(c.get_filters())

View File

@@ -196,6 +196,13 @@ def global_as_import():
globals.foo
global r
r = r[r]
if r:
r += r + 2
#? int()
r
# -----------------
# within docstrs
# -----------------