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