File tree Expand file tree Collapse file tree 2 files changed +28
-3
lines changed Expand file tree Collapse file tree 2 files changed +28
-3
lines changed Original file line number Diff line number Diff line change @@ -693,10 +693,12 @@ def GLOBAL(self, node):
693
693
node_value = Assignment (node_name , node )
694
694
695
695
# Remove UndefinedName messages already reported for this name.
696
+ # TODO: if the global is not used in this scope, it does not
697
+ # become a globally defined name. See test_unused_global.
696
698
self .messages = [
697
699
m for m in self .messages if not
698
- isinstance (m , messages .UndefinedName ) and not
699
- m .message_args [0 ] = = node_name ]
700
+ isinstance (m , messages .UndefinedName ) or
701
+ m .message_args [0 ] ! = node_name ]
700
702
701
703
# Bind name to global scope if it doesn't exist already.
702
704
global_scope .setdefault (node_name , node_value )
Original file line number Diff line number Diff line change 3
3
from sys import version_info
4
4
5
5
from pyflakes import messages as m , checker
6
- from pyflakes .test .harness import TestCase , skipIf
6
+ from pyflakes .test .harness import TestCase , skipIf , skip
7
7
8
8
9
9
class Test (TestCase ):
@@ -125,6 +125,29 @@ def foo():
125
125
print(x)
126
126
''' , m .UndefinedName )
127
127
128
+ def test_global_reset_name_only (self ):
129
+ """A global statement does not prevent other names being undefined."""
130
+ # Only different undefined names are reported.
131
+ # See following test that fails where the same name is used.
132
+ self .flakes ('''
133
+ def f1():
134
+ s
135
+
136
+ def f2():
137
+ global m
138
+ ''' , m .UndefinedName )
139
+
140
+ @skip ("todo" )
141
+ def test_unused_global (self ):
142
+ """An unused global statement does not define the name."""
143
+ self .flakes ('''
144
+ def f1():
145
+ m
146
+
147
+ def f2():
148
+ global m
149
+ ''' , m .UndefinedName )
150
+
128
151
def test_del (self ):
129
152
"""Del deletes bindings."""
130
153
self .flakes ('a = 1; del a; a' , m .UndefinedName )
You can’t perform that action at this time.
0 commit comments