1.1 --- a/optimiser.py Sun Feb 12 23:24:42 2017 +0100
1.2 +++ b/optimiser.py Mon Feb 13 15:35:36 2017 +0100
1.3 @@ -510,16 +510,21 @@
1.4 emit(("__store_via_object", parent, attrname, "<assexpr>"))
1.5
1.6 elif final_method in ("static", "static-invoke"):
1.7 - parent, attrname = origin.rsplit(".", 1)
1.8 - accessor = ("__load_static", parent, origin)
1.9 + accessor = ("__load_static_ignore", origin)
1.10
1.11 # Wrap accesses in context operations.
1.12
1.13 if context_test == "test":
1.14 - emit(("__test_context", context_var, accessor))
1.15 + if final_method in ("static", "static-invoke"):
1.16 + emit(("__load_static_test", context_var, origin))
1.17 + else:
1.18 + emit(("__test_context", context_var, accessor))
1.19
1.20 elif context_test == "replace":
1.21 - emit(("__update_context", context_var, accessor))
1.22 + if final_method in ("static", "static-invoke"):
1.23 + emit(("__load_static_replace", context_var, origin))
1.24 + else:
1.25 + emit(("__update_context", context_var, accessor))
1.26
1.27 elif final_method not in ("assign", "static-assign"):
1.28 emit(accessor)