To extract PHI in a single location, once blocks are available we should capture the result of the block and return it, to allow constructs like this:
field_val = obj.allow_phi { obj.phi_field }
If we don't want to allow this sort of behavior (which I could see, since it explicitly "leaks" PHI to an uncontrolled location), we probably don't want blocks at all. Note that such "leaking" is already very easy to do, so this shouldn't be our only reason for not wanting this construct, e.g.
To extract PHI in a single location, once blocks are available we should capture the result of the block and return it, to allow constructs like this:
If we don't want to allow this sort of behavior (which I could see, since it explicitly "leaks" PHI to an uncontrolled location), we probably don't want blocks at all. Note that such "leaking" is already very easy to do, so this shouldn't be our only reason for not wanting this construct, e.g.