diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py index 3b9f10c8082..aa08166324c 100644 --- a/Lib/test/test_ast.py +++ b/Lib/test/test_ast.py @@ -1,8 +1,10 @@ import os import sys import unittest -from test import support import ast +import weakref + +from test import support def to_tuple(t): if t is None or isinstance(t, (str, int, complex)): @@ -207,6 +209,17 @@ class AST_Tests(unittest.TestCase): # "_ast.AST constructor takes 0 positional arguments" ast.AST(2) + def test_AST_garbage_collection(self): + class X: + pass + a = ast.AST() + a.x = X() + a.x.a = a + ref = weakref.ref(a.x) + del a + support.gc_collect() + self.assertIsNone(ref()) + def test_snippets(self): for input, output, kind in ((exec_tests, exec_results, "exec"), (single_tests, single_results, "single"),