squeak-smalltalk / squeak-object-memory

Issues and assets related to the Squeak object memory.
https://bugs.squeak.org
MIT License
11 stars 1 forks source link

Decompiler breaks for assignment in whileTrue nested in caseOf #36

Closed marceltaeumel closed 2 years ago

marceltaeumel commented 2 years ago

This can be decompiled:

testDecompilePass
    1 caseOf: { [ 1 ] -> [ [ true ] whileTrue: [ self inform: 42 ] ] }.

This cannot:

testDecompileFail
    1 caseOf: { [ 1 ] -> [ | x | [ true ] whileTrue: [ x := 42 ] ] }.

We have this case currently in String >> #format:.

marceltaeumel commented 2 years ago

This does also decompile:

testDecompilePass
    1 caseOf: { [ 1 ] -> [ | x | [ true ] whileTrue: [ x := 42. self inform: #foo ] ] }.
marceltaeumel commented 2 years ago

Proposed fix: http://lists.squeakfoundation.org/pipermail/squeak-dev/2022-June/220925.html

marceltaeumel commented 2 years ago

Fixed via Compiler-mt.477.