2008-09-07 | Paul Boddie | raw annotate files changeset graph | Tidied up the exception code generation to ensure that referenced exceptions are obtained. Fixed the exception handling in the RSVP implementation to test exceptions using the isinstance-like testing employed by the CheckSelf instruction. Introduced additional stacks to ensure that frames and return addresses are properly discarded. Added an "isinstance" flag to the object header details in order to support CheckFrame - this would be efficiently encoded, perhaps in the classcode field, in any low-level implementation. |
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