# HG changeset patch # User Paul Boddie # Date 1476480291 -7200 # Node ID bb12d1f303580d9edf819c82100f1e5b3086d24e # Parent 3ddb40e3fc0dc03fc6c09fcb9fd962b669188e2a Support an explicitly unset context identification type. diff -r 3ddb40e3fc0d -r bb12d1f30358 deducer.py --- a/deducer.py Fri Oct 14 23:17:51 2016 +0200 +++ b/deducer.py Fri Oct 14 23:24:51 2016 +0200 @@ -1927,7 +1927,10 @@ # Determine the nature of the context. - context = len(traversed + remaining) == 1 and (base and "base" or "original-accessor") or "final-accessor" + context = is_assignment and "unset" or \ + len(traversed + remaining) == 1 and \ + (base and "base" or "original-accessor") or \ + "final-accessor" return name, test, test_type, base, traversed, traversal_modes, remaining, context, first_method, final_method, origin diff -r 3ddb40e3fc0d -r bb12d1f30358 optimiser.py --- a/optimiser.py Fri Oct 14 23:17:51 2016 +0200 +++ b/optimiser.py Fri Oct 14 23:24:51 2016 +0200 @@ -373,19 +373,17 @@ assigning = not traversed and not attrnames and final_method == "assign" # Set the context if already available. + + if context == "original-accessor": + emit(("set_context", original_accessor)) + accessor = "context" + elif context == "base": + emit(("set_context", base)) + accessor = "context" + # Assigning does not set the context. - if not assigning: - if context == "original-accessor": - emit(("set_context", original_accessor)) - accessor = "context" - elif context == "base": - emit(("set_context", base)) - accessor = "context" - elif context == "final-accessor" or access_first_attribute: - emit(("set_accessor", original_accessor)) - accessor = "accessor" - else: + elif context in ("final-accessor", "unset"): emit(("set_accessor", original_accessor)) accessor = "accessor"