Mantis - Squeak
Viewing Issue Advanced Details
617 Compiler major always 12-07-04 01:12 07-13-05 18:46
andreas  
gokr  
normal  
closed  
fixed  
none    
none 3.8  
0000617: #(nil true false) potentially breaks lots of methods
The change in Squeak 3.7 to compile #(nil true false) no longer to the symbols #nil, #true, and #false will break any methods that relies on the former behavior and has not been fixed (and not a single method has been fixed so far). To find these methods, browse the "senders" of nil, true and false and see if they are used in a literal array. Examples currently include:

ClassBuilder>>reservedNames
Player>>acceptableScriptNameFrom:forScriptCurrentlyNamed:
StandardScriptingSystem>>acceptableSlotNameFrom:forSlotCurrentlyNamed:asSlotNameIn:world:
ColorType>>updatingTileForTarget:partName:getter:setter:
DataType>>updatingTileForTarget:partName:getter:setter:
EToyVectorVocabulary>>eToyVectorTable
ExternalData>>fields
Win32Handle>>fields
X11Drawable>>fields
X11GC>>fields
etc.
Most of the places can probably be fixed by simply changing #(nil true false) to #(#nil #true #false) etc. but the FFI likely needs a larger fix.
 nilTrueFalse-gk.1.cs.gz [^] (3,480 bytes) 03-01-05 11:55
 nilTrueFalse-gk.2.cs.gz [^] (4,368 bytes) 03-02-05 15:45

Notes
(0001201)
gokr   
03-01-05 11:56   
Ok, the uploaded changeset is for 6590. I went through all senders as described. Not sure what FFI may need more (see comment in cs).
(0001207)
gokr   
03-02-05 15:47   
Ok, second try. This one includes changes to FFI to expect nil/true/false instead of #nil/#true/#false.
(0001233)
gokr   
03-07-05 16:07   
Update 6599 fixes the remaining places that was found. The FFI was modified. A GOODIE was posted about this issue on squeak-dev.
(0001781)
MarcusDenker   
07-13-05 18:46   
in 3.8