Patrick Rein uploaded a new version of Compiler to project The Trunk: http://source.squeak.org/trunk/Compiler-pre.493.mcz
==================== Summary ====================
Name: Compiler-pre.493 Author: pre Time: 28 July 2023, 10:15:11.716752 am UUID: 349f6747-5405-614e-8557-1ef0f2f44b12 Ancestors: Compiler-pre.492
Fixes a defect in future send compilation that leads to promises not being created in some situations in which the return value of the future send is used. (closes #84)
=============== Diff against Compiler-pre.492 ===============
Item was changed: ----- Method: FutureNode>>emitCodeForBlockValue:encoder: (in category 'code generation') ----- emitCodeForBlockValue: stack encoder: encoder "Generate code for evaluating the last statement in a block." + ^valueNode emitCodeForValue: stack encoder: encoder! - ^effectNode emitCodeForValue: stack encoder: encoder!
Item was changed: ----- Method: FutureNode>>sizeCodeForBlockValue: (in category 'code generation') ----- sizeCodeForBlockValue: encoder receiver == NodeSuper ifTrue: [^self error: 'Futures cannot send to super']. (futureArgs isNil or: [futureSelector isNil]) ifTrue: [^self error: 'Futures must be sent messages']. encoder sharableLitIndex: originalSelector. "to find its senders" futureDelta ifNil:[futureDelta := encoder encodeLiteral: 0]. + valueNode := MessageNode new - effectNode := MessageNode new receiver: receiver + selector: #futureSend:at:args: - selector: #futureDo:at:args: arguments: (Array with: (encoder encodeLiteral: futureSelector) with: futureDelta with: (BraceNode new elements: futureArgs)) precedence: 3 from: encoder. + ^valueNode sizeCodeForValue: encoder! - ^effectNode sizeCodeForValue: encoder!
packages@lists.squeakfoundation.org