I'm far from being an expert, but could you have a look at the rationale
below?
attached
arch_node as a_n
-- If `arch_node' is attached, `a_n' gets attached to the same object.
and then (
attached
parent.arch_node as parent_a_n
-- If `parent.arch_node' is attached, `parent_a_n' gets attached
to the same object.
and then
parent_a_n.
-- Since `parent_a_n' is local, it can't have been detached
since its attachment.
attributes.has
(a_n)
-- Since `a_n' is local, it can't have been detached since its
attachment.
)
attached
arch_node
-- Yes, `arch_node' is attached, but unless it is local, who knows
about its future in a concurrent environment?
and then (
attached
parent.arch_node
-- Yes, `parent'.`arch_node' is attached, but IT IS NOT
LOCAL(!); who knows about its future in a concurrent environment?
and then
parent.arch_node.
-- Since `parent'.`arch_node' IS NOT LOCAL, it may have got
detached since the test above.
attributes.has (arch_node)
-- Unless`arch_node' IS LOCAL, it may have got detached since
the test above.
)
Best regards,
Rosivaldo.
Em 22/02/2018 09:52, Thomas Beale escreveu:
> As of a release or two ago, I can change code like this:
>
> (...)