2009-05-17 | Paul Boddie | raw annotate files changeset graph | Moved argument checking inside functions, changing the role of CheckFrame and introducing a separate FillDefaults instruction. Introduced a JumpWithFrameDirect instruction which is able, in conjunction with a new code_body_location attribute on Function and Class instances (for function bodies and class instantiator bodies respectively), to skip argument checking for invocations which could be checked at compile-time. Removed the invocation details from the common object structure. Improved various tests. |
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