2017-03-30 | Paul Boddie | raw annotate files changeset graph | Introduced location abstractions in order to be able to retain both access and accessor locations as keys in the alias mapping. This fixes conflicts where name accesses were being confused with name definitions. Replacement of name accesses with accessors is no longer performed in the alias mapping initialisation. Various convenience mappings from accessors and accesses to initialised name details are also established in the deducer. |
1 a = 4 2 3 def f(x): 4 5 # Test function initialisation (f.$l0). 6 7 def g(y, x=x): 8 9 # Test function initialisation (f.$l0.$l0). 10 11 def h(a, z, x=x, y=y): 12 return x, y, z, a # parameter a overrides global scope 13 14 return h 15 16 return g 17 18 fn = f(1) 19 print fn # __main__.f.$l0 20 print fn(2) # __main__.f.$l0.$l0 21 print fn(2)(5, 3) # (1, 2, 3, 5) 22 print fn(2)(5, 3, 6) # (6, 2, 3, 5) 23 print fn(2)(5, 3, 6, 7) # (6, 7, 3, 5)