[squeak-dev] [BUG]Preferences class(Object)>>doesNotUnderstand: #soundsEnabled

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Thu Aug 16 12:51:24 UTC 2018


Hi Edgar,
First, I see no such sender of #soundsEnabled in base image, so it's more a
problem of uncompatibility with add-on packages (extensions) than a problem
of base image, right?

Then, thanks to commit messages in the mailing list, I can trace that
Preferences class>>#soundsEnabled - which is a EToys thing - was added in
Trunk: System-tfel.902.mcz (which itself is a merge with System-tfel.882).

But unfortunately, I can't easily trace when this message was removed in
favour of a doesNotUnderstand: solution...
Maybe it was removed at a time when the mailing list reports were not
functional?
Or maybe, the changes were not reported because too long...
(That's a bad feature IMO, on the assumption that code should never be too
long, we should not need any such guard anyway...).

The thing to do before/after loading such EToys like extension is to
perform Etoys like initialization, and that could well be a responsibility
of extension code, rather than of base image. So maybe it's not a problem
of Trunk by itself...
The question is how do we advertize the package maintainers about these new
responsibilities caused by evolutions of Trunk (understand evolution as
shrinking/simplifying)?



2018-08-16 13:26 GMT+02:00 Edgar J. De Cleene <edgardec2005 at gmail.com>:

> Moving a Morph to TrashMorph
> 16 August 2018 8:19:32.233754 am
>
> VM: Mac OS - Smalltalk
> Image: Squeak5.2alpha [latest update: #18136]
>
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
> Working Dir /Users/edgardecleene/Documents/MagallanesSqueak/5dot2
> Trusted Dir /foobar/tooBar/forSqueak/bogus/
> Untrusted Dir
> /Users/edgardecleene/Library/Preferences/Squeak/Internet/Untrusted
>
> Preferences class(Object)>>doesNotUnderstand: #soundsEnabled
>     Receiver: Preferences
>     Arguments and temporary variables:
>         aMessage:     soundsEnabled
>         exception:     MessageNotUnderstood: Preferences
> class>>soundsEnabled
>         resumeValue:     nil
>     Receiver's instance variables:
>         superclass:     Object
>         methodDict:     [2109647]a MethodDictionary()
>         format:     0
>         instanceVariables:     nil
>         organization:     ('as yet unclassified')
>
>         subclasses:     {ServicePreferences . PreferencesTestPreferences}
>         name:     #Preferences
>         classPool:     [2247793]a Dictionary(#DesktopColor->(Color r:
> 0.742
> g: 1 b: 0.839) ...etc...
>         sharedPools:     nil
>         environment:     Smalltalk
>         category:     #'System-Preferences'
>         preferencesDictionary:     [575529]an IdentityDictionary(size 311)
>
> [] in Preferences class>>doesNotUnderstand: #soundsEnabled
>     Receiver: Preferences
>     Arguments and temporary variables:
>         aMessage:     soundsEnabled
>     Receiver's instance variables:
>         superclass:     Object
>         methodDict:     [2109647]a MethodDictionary()
>         format:     0
>         instanceVariables:     nil
>         organization:     ('as yet unclassified')
>
>         subclasses:     {ServicePreferences . PreferencesTestPreferences}
>         name:     #Preferences
>         classPool:     [2247793]a Dictionary(#DesktopColor->(Color r:
> 0.742
> g: 1 b: 0.839) ...etc...
>         sharedPools:     nil
>         environment:     Smalltalk
>         category:     #'System-Preferences'
>         preferencesDictionary:     [575529]an IdentityDictionary(size 311)
>
> [] in Preferences class>>valueOfPreference:ifAbsent:
>     Receiver: Preferences
>     Arguments and temporary variables:
> <<error during printing>
>     Receiver's instance variables:
>         superclass:     Object
>         methodDict:     [2109647]a MethodDictionary()
>         format:     0
>         instanceVariables:     nil
>         organization:     ('as yet unclassified')
>
>         subclasses:     {ServicePreferences . PreferencesTestPreferences}
>         name:     #Preferences
>         classPool:     [2247793]a Dictionary(#DesktopColor->(Color r:
> 0.742
> g: 1 b: 0.839) ...etc...
>         sharedPools:     nil
>         environment:     Smalltalk
>         category:     #'System-Preferences'
>         preferencesDictionary:     [575529]an IdentityDictionary(size 311)
>
> IdentityDictionary(Dictionary)>>at:ifAbsent:
>     Receiver: [575529]an IdentityDictionary(size 311)
>     Arguments and temporary variables:
>         key:     #soundsEnabled
>         aBlock:     [closure] in Preferences
> class>>valueOfPreference:ifAbsent:
>     Receiver's instance variables:
>         tally:     311
>         array:     {#'PreferencesTestExample>>textPref'->[2348341]a
> PragmaPreference#'Textu...etc...
>
> Preferences class>>preferenceAt:ifAbsent:
>     Receiver: Preferences
>     Arguments and temporary variables:
>         aSymbol:     #soundsEnabled
>         aBlock:     [closure] in Preferences
> class>>valueOfPreference:ifAbsent:
>     Receiver's instance variables:
>         superclass:     Object
>         methodDict:     [2109647]a MethodDictionary()
>         format:     0
>         instanceVariables:     nil
>         organization:     ('as yet unclassified')
>
>         subclasses:     {ServicePreferences . PreferencesTestPreferences}
>         name:     #Preferences
>         classPool:     [2247793]a Dictionary(#DesktopColor->(Color r:
> 0.742
> g: 1 b: 0.839) ...etc...
>         sharedPools:     nil
>         environment:     Smalltalk
>         category:     #'System-Preferences'
>         preferencesDictionary:     [575529]an IdentityDictionary(size 311)
>
> Preferences class>>valueOfPreference:ifAbsent:
>     Receiver: Preferences
>     Arguments and temporary variables:
>         aPreferenceSymbol:     #soundsEnabled
>         block:     [closure] in Preferences class>>doesNotUnderstand:
> #soundsEnabled
>     Receiver's instance variables:
>         superclass:     Object
>         methodDict:     [2109647]a MethodDictionary()
>         format:     0
>         instanceVariables:     nil
>         organization:     ('as yet unclassified')
>
>         subclasses:     {ServicePreferences . PreferencesTestPreferences}
>         name:     #Preferences
>         classPool:     [2247793]a Dictionary(#DesktopColor->(Color r:
> 0.742
> g: 1 b: 0.839) ...etc...
>         sharedPools:     nil
>         environment:     Smalltalk
>         category:     #'System-Preferences'
>         preferencesDictionary:     [575529]an IdentityDictionary(size 311)
>
> Preferences class>>doesNotUnderstand: #soundsEnabled
>     Receiver: Preferences
>     Arguments and temporary variables:
>         aMessage:     soundsEnabled
>     Receiver's instance variables:
>         superclass:     Object
>         methodDict:     [2109647]a MethodDictionary()
>         format:     0
>         instanceVariables:     nil
>         organization:     ('as yet unclassified')
>
>         subclasses:     {ServicePreferences . PreferencesTestPreferences}
>         name:     #Preferences
>         classPool:     [2247793]a Dictionary(#DesktopColor->(Color r:
> 0.742
> g: 1 b: 0.839) ...etc...
>         sharedPools:     nil
>         environment:     Smalltalk
>         category:     #'System-Preferences'
>         preferencesDictionary:     [575529]an IdentityDictionary(size 311)
>
> SmartTrashCanMorph(TrashCanMorph)>>mouseEnter:
>     Receiver: a TrashCanMorph
>     Arguments and temporary variables:
>         event:     [649 at 508 649 at 509 mouseEnter red 59004]
>         hand:     [3463596]a HandMorph(3463596)
>         firstSub:     [3563712]a Planet(3563712)
>     Receiver's instance variables:
>         bounds:     645 at 461 corner: 720 at 533
>         owner:     [2434915]a PasteUpMorph(2434915) [world]
>         submorphs:     #()
>         fullBounds:     645 at 461 corner: 720 at 533
>         color:     Color blue
>         extension:     [1392989]a MorphExtension (1392989) [balloonText]
> [externalName = T...etc...
>         image:     Form(72x72x32)
>         offImage:     Form(72x72x32)
>         pressedImage:     Form(72x72x32)
>         state:     #off
>         target:     nil
>         actionSelector:     #flash
>         arguments:     #()
>         actWhen:     #buttonUp
>         label:     nil
>         font:     nil
>         textColor:     nil
>
> SmartTrashCanMorph(TrashCanMorph)>>mouseEnterDragging:
>     Receiver: a TrashCanMorph
>     Arguments and temporary variables:
>         evt:     [649 at 508 649 at 509 mouseEnter red 59004]
>     Receiver's instance variables:
>         bounds:     645 at 461 corner: 720 at 533
>         owner:     [2434915]a PasteUpMorph(2434915) [world]
>         submorphs:     #()
>         fullBounds:     645 at 461 corner: 720 at 533
>         color:     Color blue
>         extension:     [1392989]a MorphExtension (1392989) [balloonText]
> [externalName = T...etc...
>         image:     Form(72x72x32)
>         offImage:     Form(72x72x32)
>         pressedImage:     Form(72x72x32)
>         state:     #off
>         target:     nil
>         actionSelector:     #flash
>         arguments:     #()
>         actWhen:     #buttonUp
>         label:     nil
>         font:     nil
>         textColor:     nil
>
> SmartTrashCanMorph(Morph)>>handleMouseEnter:
>     Receiver: a TrashCanMorph
>     Arguments and temporary variables:
>         anEvent:     [649 at 508 649 at 509 mouseEnter red 59004]
>     Receiver's instance variables:
>         bounds:     645 at 461 corner: 720 at 533
>         owner:     [2434915]a PasteUpMorph(2434915) [world]
>         submorphs:     #()
>         fullBounds:     645 at 461 corner: 720 at 533
>         color:     Color blue
>         extension:     [1392989]a MorphExtension (1392989) [balloonText]
> [externalName = T...etc...
>         image:     Form(72x72x32)
>         offImage:     Form(72x72x32)
>         pressedImage:     Form(72x72x32)
>         state:     #off
>         target:     nil
>         actionSelector:     #flash
>         arguments:     #()
>         actWhen:     #buttonUp
>         label:     nil
>         font:     nil
>         textColor:     nil
>
> MouseMoveEvent(MouseEvent)>>sentTo:
>     Receiver: [649 at 508 649 at 509 mouseEnter red 59004]
>     Arguments and temporary variables:
>         anObject:     a TrashCanMorph
>     Receiver's instance variables:
>         timeStamp:     59004
>         source:     [3463596]a HandMorph(3463596)
>         type:     #mouseEnter
>         buttons:     4
>         position:     649 at 509
>         handler:     nil
>         wasHandled:     true
>         wasIgnored:     false
>         startPoint:     649 at 508
>         trail:     {649 at 509}
>
> MouseMoveEvent>>sentTo:
>     Receiver: [649 at 508 649 at 509 mouseEnter red 59004]
>     Arguments and temporary variables:
>         anObject:     a TrashCanMorph
>     Receiver's instance variables:
>         timeStamp:     59004
>         source:     [3463596]a HandMorph(3463596)
>         type:     #mouseEnter
>         buttons:     4
>         position:     649 at 509
>         handler:     nil
>         wasHandled:     true
>         wasIgnored:     false
>         startPoint:     649 at 508
>         trail:     {649 at 509}
>
> SmartTrashCanMorph(Morph)>>handleEvent:
>     Receiver: a TrashCanMorph
>     Arguments and temporary variables:
>         anEvent:     [649 at 508 649 at 509 mouseEnter red 59004]
>         filteredEvent:     [649 at 508 649 at 509 mouseEnter red 59004]
>     Receiver's instance variables:
>         bounds:     645 at 461 corner: 720 at 533
>         owner:     [2434915]a PasteUpMorph(2434915) [world]
>         submorphs:     #()
>         fullBounds:     645 at 461 corner: 720 at 533
>         color:     Color blue
>         extension:     [1392989]a MorphExtension (1392989) [balloonText]
> [externalName = T...etc...
>         image:     Form(72x72x32)
>         offImage:     Form(72x72x32)
>         pressedImage:     Form(72x72x32)
>         state:     #off
>         target:     nil
>         actionSelector:     #flash
>         arguments:     #()
>         actWhen:     #buttonUp
>         label:     nil
>         font:     nil
>         textColor:     nil
>
> [] in MouseOverHandler>>processMouseOver:
>     Receiver: [1672941]a MouseOverHandler
>     Arguments and temporary variables:
> <<error during printing>
>     Receiver's instance variables:
>         mouseOverMorphs:     {[81950]a MenuItemMorph(81950)'do it (d)' .
> [2532074]a MenuMorph...etc...
>         enteredMorphs:     [1407157]a WriteStream
>         overMorphs:     [2609100]a WriteStream
>         leftMorphs:     [3890734]an OrderedCollection()
>
> Array(SequenceableCollection)>>reverseDo:
>     Receiver: {a TrashCanMorph}
>     Arguments and temporary variables:
>         aBlock:     [closure] in MouseOverHandler>>processMouseOver:
>         index:     1
>     Receiver's instance variables:
> {a TrashCanMorph}
>
> MouseOverHandler>>processMouseOver:
>     Receiver: [1672941]a MouseOverHandler
>     Arguments and temporary variables:
> <<error during printing>
>     Receiver's instance variables:
>         mouseOverMorphs:     {[81950]a MenuItemMorph(81950)'do it (d)' .
> [2532074]a MenuMorph...etc...
>         enteredMorphs:     [1407157]a WriteStream
>         overMorphs:     [2609100]a WriteStream
>         leftMorphs:     [3890734]an OrderedCollection()
>
> HandMorph>>processEvents
>     Receiver: [3463596]a HandMorph(3463596)
>     Arguments and temporary variables:
>         evt:     nil
>         evtBuf:     nil
>         type:     nil
>         hadAny:     false
>     Receiver's instance variables:
>         bounds:     440 at 448 corner: 456 at 464
>         owner:     [2434915]a PasteUpMorph(2434915) [world]
>         submorphs:     #()
>         fullBounds:     440 at 448 corner: 456 at 464
>         color:     Color blue
>         extension:     [968354]a MorphExtension (968354) [eventHandler =
> [1227208]an EventH...etc...
>         mouseFocus:     nil
>         keyboardFocus:     [3890664]a TextMorphForEditView(3890664)
>         eventListeners:     nil
>         mouseListeners:     nil
>         keyboardListeners:     [773911]a WeakArray([388881]a
> KeyboardStateWatcher)
>         eventCaptureFilters:     nil
>         mouseCaptureFilters:     nil
>         keyboardCaptureFilters:     [1204688]a WeakArray([3463596]a
> HandMorph(3463596))
>         mouseClickState:     nil
>         mouseOverHandler:     [1672941]a MouseOverHandler
>         mouseWheelState:     [1286858]a MouseWheelState
>         lastMouseEvent:     [440 at 448 mouseUp ( red ) 116575]
>         targetOffset:     45 at 22
>         damageRecorder:     [2398335]a DamageRecorder
>         cacheCanvas:     nil
>         cachedCanvasHasHoles:     true
>         temporaryCursor:     nil
>         temporaryCursorOffset:     nil
>         hardwareCursor:     nil
>         hasChanged:     true
>         savedPatch:     nil
>         userInitials:     ''
>         lastEventBuffer:     #(1 116575 440 448 0 0 1 1)
>         genieGestureProcessor:     nil
>         keyboardInterpreter:     [2155632]a MacUnicodeInputInterpreter
>
> [] in WorldState>>doOneCycleNowFor:
>     Receiver: [785163]a WorldState
>     Arguments and temporary variables:
> <<error during printing>
>     Receiver's instance variables:
>         hands:     {[3463596]a HandMorph(3463596)}
>         activeHand:     [3463596]a HandMorph(3463596)
>         viewBox:     0 at 0 corner: 1027 at 768
>         canvas:     [2517135]a FormCanvas on: DisplayScreen(1027x768x32)
>         damageRecorder:     [1738851]a DamageRecorder
>         stepList:     [3160142]a Heap(StepMessage(#stepAt: -> [490998]an
> ImageMorph<dot>(49...etc...
>         lastStepTime:     3711871172205
>         lastStepMessage:     nil
>         lastCycleTime:     3711871172226
>         commandHistory:     [2625821]a CommandHistory
>         alarms:     [3902213]a MorphicAlarmQueue
>         lastAlarmTime:     3711871172205
>         remoteServer:     nil
>         multiCanvas:     nil
>         interCycleDelay:     [2363900]a Delay(20 msecs)
>
> Array(SequenceableCollection)>>do:
>     Receiver: {[3463596]a HandMorph(3463596)}
>     Arguments and temporary variables:
>         aBlock:     [closure] in WorldState>>doOneCycleNowFor:
>         index:     1
>         indexLimiT:     1
>     Receiver's instance variables:
> {[3463596]a HandMorph(3463596)}
>
>
> --- The full stack ---
> Preferences class(Object)>>doesNotUnderstand: #soundsEnabled
> [] in Preferences class>>doesNotUnderstand: #soundsEnabled
> [] in Preferences class>>valueOfPreference:ifAbsent:
> IdentityDictionary(Dictionary)>>at:ifAbsent:
> Preferences class>>preferenceAt:ifAbsent:
> Preferences class>>valueOfPreference:ifAbsent:
> Preferences class>>doesNotUnderstand: #soundsEnabled
> SmartTrashCanMorph(TrashCanMorph)>>mouseEnter:
> SmartTrashCanMorph(TrashCanMorph)>>mouseEnterDragging:
> SmartTrashCanMorph(Morph)>>handleMouseEnter:
> MouseMoveEvent(MouseEvent)>>sentTo:
> MouseMoveEvent>>sentTo:
> SmartTrashCanMorph(Morph)>>handleEvent:
> [] in MouseOverHandler>>processMouseOver:
> Array(SequenceableCollection)>>reverseDo:
> MouseOverHandler>>processMouseOver:
> HandMorph>>processEvents
> [] in WorldState>>doOneCycleNowFor:
> Array(SequenceableCollection)>>do:
>  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> WorldState>>handsDo:
> WorldState>>doOneCycleNowFor:
> WorldState>>doOneCycleFor:
> PasteUpMorph>>doOneCycle
> [] in MorphicProject>>spawnNewProcess
> [] in BlockClosure>>newProcess
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20180816/e297b37b/attachment.html>


More information about the Squeak-dev mailing list