2010-02-23 | Paul Boddie | raw annotate files changeset graph | Simplified the usage tracking by merely recording active users (providers) of names and propagating usage back to them. Accesses retain lists of active users and the name of the object through which an access is performed. To generate specific access instructions, the users are consulted for their usage lists and possible types deduced. Similarly, guards are generated by deducing possible types from such usage lists. |
1 #!/usr/bin/env python 2 3 class B: 4 def __init__(self, y): 5 self.y = y 6 def m(self, x): 7 return x 8 9 class A: 10 m1 = B.m 11 def __init__(self, b): 12 self.m2 = B.m 13 self.m3 = b.m 14 15 b = B(789) 16 a = A(b) 17 result_123 = A.m1(b, 123) # A.m1 is unbound 18 result_234 = a.m1(b, 234) # a.m1 is unbound 19 result_345 = a.m2(b, 345) # a.m2 is unbound 20 result_456 = a.m3(456) # a.m3 is bound to b 21 22 # vim: tabstop=4 expandtab shiftwidth=4