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 A: 4 def a(self): 5 return self.x # x not defined in this class, provided in subclasses 6 7 class B(A): 8 x = 123 # x provided here 9 10 class C(A): 11 def __init__(self, x): 12 self.x = x # x provided here 13 14 b = B() 15 c = C(456) 16 17 p = b.a() 18 q = c.a() 19 20 result_123 = p 21 result_456 = q 22 23 # vim: tabstop=4 expandtab shiftwidth=4