Hi.
try these expressions in playground:
10 ifTrue: [ #falseResult ]. "=>DNU #ifFalse".
10��ifTrue:��[ #falseResult. ]. #unexpectedResult. "=> #unexpectedResult"
10��ifTrue:��[ #falseResult asString]. #unexpectedResult. "=> DNU #ifTrue:"
Same happen with ifFalse: and ifTrue:ifFalse couples.
If you look at bytecode you will not see any jumps in not failing cases. ��
Probably such code is redundant because it not produce any behaviour.��
It start to work properly as soon as there is any assignment or message send around.��
But it is really strange from first look.
Also it means that special boolean objects with own ifTrue:ifFalse implementation will not receive messages in such cases.
I am not sure if it is a bug