2009-05-30 | Paul Boddie | raw annotate files changeset graph | Changed instantiator invocation reserving a frame slot regardless of whether the target is known in advance. In the instantiator, the first frame slot is then overwritten with the new instance, and the RecoverFrame instruction is no longer required. Instead, a new JumpInFrame instruction maintains the existing locals, jumping to the initialiser method for the class. Updated various tests, renaming and enhancing the classes test. |
1 #!/usr/bin/env python 2 3 import imported 4 5 imported.attr # cannot assign to this 6 7 m = imported 8 imported.a # cannot assign to this 9 m.a # cannot assign to this (m is known) 10 11 class C: # hack: make an attribute called y known to the system 12 y = None # hack: this prevents compilation errors with the statements 13 # hack: below 14 15 n = None 16 n = imported 17 n.a = 1 # not detected due to reassignment of n 18 n.y = 2 # not detected due to reassignment of n 19 n.y = 3 # not detected due to reassignment of n 20 21 # vim: tabstop=4 expandtab shiftwidth=4