summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_compile.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_compile.py')
-rw-r--r--Lib/test/test_compile.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py
index 022f7c0..d5fda13 100644
--- a/Lib/test/test_compile.py
+++ b/Lib/test/test_compile.py
@@ -393,6 +393,19 @@ if 1:
del d[..., ...]
self.assertEqual((Ellipsis, Ellipsis) in d, False)
+ def test_annotation_limit(self):
+ # 16 bits are available for # of annotations, and the
+ # tuple of annotations names is counted, hence 65534
+ # is the max. Ensure the result of too many annotations is a
+ # SyntaxError.
+ s = "def f((%s)): pass"
+ s %= ', '.join('a%d:%d' % (i,i) for i in xrange(65535))
+ self.assertRaises(SyntaxError, compile, s, '?', 'exec')
+ # Test that the max # of annotations compiles.
+ s = "def f((%s)): pass"
+ s %= ', '.join('a%d:%d' % (i,i) for i in xrange(65534))
+ compile(s, '?', 'exec')
+
def test_main():
test_support.run_unittest(TestSpecifics)