feenkcom / gtoolkit

Glamorous Toolkit is the Moldable Development environment. It empowers you to make systems explainable through experiences tailored for each problem.
https://gtoolkit.com
MIT License
1.06k stars 46 forks source link

Changing the package of a class gives walkback: #name was sent to nil #3837

Open macta opened 2 weeks ago

macta commented 2 weeks ago

I created a new git project with associated package, I then went to move an existing class (in a different untracked package) to the new package. In the coder I clicked on the package box, entered my new name (it autocompleted) and pressed enter - I got a walkback #name was sent to nil. (the package does appear to have successfully moved however)

image

UndefinedObject(Object)>>doesNotUnderstand: #name UndefinedObject>>doesNotUnderstand: #name GtClassUpdateForm>>onClass: GtClassUpdateForm class>>onClass: GtPharoBehaviorDefinitionCoderElement>>buildDefinitionEditor [ self buildDefinitionEditor ] in GtPharoBehaviorDefinitionCoderElement>>initializeElements in Block: [ self buildDefinitionEditor ] FullBlockClosure(BlockClosure)>>gtValueWithArgs: BrValuableStencil>>create BrValuableStencil(BrStencil)>>asElement GtCoderExpanderAptitude(BrExpanderAptitude)>>initializeContentElement GtCoderExpanderAptitude(BrExpanderAptitude)>>onExpanded [ :aWidget | (aWidget states hasState: BrExpansionState expanded) ifTrue: [ self onExpanded ] ifFalse: [ self onCollapsed ] ] in GtCoderExpanderAptitude(BrExpanderAptitude)>>contentStencil: in Block: [ :aWidget |... FullBlockClosure(BlockClosure)>>cull: GtPharoBehaviorDefinitionCoderElement(ProtoObject)>>ifNotNil: GtCoderExpanderAptitude(BrActor)>>widgetDo: GtCoderExpanderAptitude(BrExpanderAptitude)>>contentStencil: [ :anEvent | self contentStencil: anEvent stencil ] in GtCoderExpanderAptitude(BrExpanderAptitude)>>initializeListeners in Block: [ :anEvent | self contentStencil: anEvent sten[..] FullBlockClosure(BlockClosure)>>cull: BlEventHandler>>handleEvent: [ anEvent forwardingTarget: self eventTarget. self eventHandler handleEvent: anEvent ] in BlEventForwarder>>handleEvent: in Block: [... FullBlockClosure(BlockClosure)>>ensure: BlEventForwarder>>handleEvent: BlHandlerAnnouncementSubscription>>deliver: [ subscription deliver: anAnnouncement ] in SubscriptionRegistry>>deliver:to:startingAt: in Block: [ subscription deliver: anAnnouncement ] FullBlockClosure(BlockClosure)>>ifCurtailed: SubscriptionRegistry>>deliver:to:startingAt: SubscriptionRegistry>>deliver:to: SubscriptionRegistry>>deliver: Announcer>>announce: BlHandlerAnnouncerRegistry>>dispatchEvent: BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchArrivedEvent: BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next: BlElementEventDispatcher(BlEventDispatcher)>>dispatchEvent: GtPharoBehaviorDefinitionCoderElement(BlElement)>>dispatchEvent: BrAccordionModel(BrActor)>>dispatchEvent: BrAccordionModel>>notifyContentStencilChanged BrAccordionModel>>contentStencil: GtPharoBehaviorDefinitionCoderElement(BrExpander)>>content: GtPharoBehaviorDefinitionCoderElement>>initializeElements [ self initializeElements ] in GtPharoBehaviorDefinitionCoderElement>>updateDefinition in Block: [ self initializeElements ] FullBlockClosure(BlockClosure)>>cull: BlTaskAction>>run: [ aTask run: aWaker ] in [ BlTaskExecutionSignal for: aTask block: [ aTask run: aWaker ] ] in [ :aTask | aTask setExecuting.

    BlFrameTelemetry
        timeSync: [ 'Run task {1} ({2})' format: { aTask class name . aTask } ]
        during: [ BlTaskExecutionSignal for: aTask block: [ aTask run: aWaker ] ].
    self onTaskExecuted: aTask.

    aTask requeueTaskAfterExecution
        ifTrue: [ self privateRequeueRepeating: aTask ]
        ifFalse: [
            tasks
                lock: [ :theSpaceTasks |
                    (theSpaceTasks hasPendingTask: aTask)
                        ifFalse: [ aTask setComplete ] ]
                ifNilPut: [ self newTasks ] ] ] in BlSpaceTaskQueue>>runOn: in Block: [ aTask run: aWaker ]

BlTaskExecutionSignal class>>for:block: [ BlTaskExecutionSignal for: aTask block: [ aTask run: aWaker ] ] in [ :aTask | aTask setExecuting.

    BlFrameTelemetry
        timeSync: [ 'Run task {1} ({2})' format: { aTask class name . aTask } ]
        during: [ BlTaskExecutionSignal for: aTask block: [ aTask run: aWaker ] ].
    self onTaskExecuted: aTask.

    aTask requeueTaskAfterExecution
        ifTrue: [ self privateRequeueRepeating: aTask ]
        ifFalse: [
            tasks
                lock: [ :theSpaceTasks |
                    (theSpaceTasks hasPendingTask: aTask)
                        ifFalse: [ aTask setComplete ] ]
                ifNilPut: [ self newTasks ] ] ] in BlSpaceTaskQueue>>runOn: in Block: [ BlTaskExecutionSignal for: aTask block: [ aT[..]

NullTelemetry>>time:during: BlSpaceTelemetry>>time:during: BlFrameTelemetry(BaseProcessTelemetry)>>time:during: BlFrameTelemetry(BaseProcessTelemetry)>>timeSync:during: BlFrameTelemetry class(BaseProcessTelemetry class)>>timeSync:during: [ :aTask | aTask setExecuting.

    BlFrameTelemetry
        timeSync: [ 'Run task {1} ({2})' format: { aTask class name . aTask } ]
        during: [ BlTaskExecutionSignal for: aTask block: [ aTask run: aWaker ] ].
    self onTaskExecuted: aTask.

    aTask requeueTaskAfterExecution
        ifTrue: [ self privateRequeueRepeating: aTask ]
        ifFalse: [
            tasks
                lock: [ :theSpaceTasks |
                    (theSpaceTasks hasPendingTask: aTask)
                        ifFalse: [ aTask setComplete ] ]
                ifNilPut: [ self newTasks ] ] ] in BlSpaceTaskQueue>>runOn: in Block: [ :aTask |...

Array(SequenceableCollection)>>do: BlSpaceTaskQueue>>runOn: GtWorld(BlSpace)>>runTasks [ :theSpace | theSpace runTasks ] in BlSpaceFrameTaskPhase>>runOn: in Block: [ :theSpace | theSpace runTasks ] FullBlockClosure(BlockClosure)>>cull: GtWorld(BlSpace)>>dispatchTimeEvent:during: BlSpaceFrameTaskPhase>>runOn: [ self currentPhase runOn: aSpace ] in BlSpaceFrame>>runCurrentPhaseOn: in Block: [ self currentPhase runOn: aSpace ] NullTelemetry>>time:during: BlSpaceTelemetry>>time:during: BlFrameTelemetry(BaseProcessTelemetry)>>time:during: BlFrameTelemetry class(BaseProcessTelemetry class)>>time:during: BlSpaceFrame>>runCurrentPhaseOn: BlSpaceFrame>>runOn: [ self frame runOn: self ] in [ BlFrameTelemetry soleInstance messageTallyOn: [ self frame runOn: self ] ] in [ BlFrameTelemetry soleInstance beacon: BlRequestLayoutSignal, BlMarkElementNeedsPaintSignal, BlLostFocusSignal, BlGotFocusSignal, BlTextStylerRequestedSignal on: [ BlFrameTelemetry soleInstance messageTallyOn: [ self frame runOn: self ] ] ] in [ BlFrameTelemetry reset; time: [ 'Frame' ] during: [ BlFrameTelemetry soleInstance beacon: BlRequestLayoutSignal, BlMarkElementNeedsPaintSignal, BlLostFocusSignal, BlGotFocusSignal, BlTextStylerRequestedSignal on: [ BlFrameTelemetry soleInstance messageTallyOn: [ self frame runOn: self ] ] ]; in: [ :t | t soleInstance snapshotSpace: self ]; emit ] in GtWorld(BlSpace)>>processPulse in Block: [ self frame runOn: self ] NullTelemetry>>profile:executing:as: BlSpaceTelemetry>>profile:executing:as: BlFrameTelemetry(BaseProcessTelemetry)>>profile:executing:as: BlFrameTelemetry(BaseProcessTelemetry)>>messageTallyOn: [ BlFrameTelemetry soleInstance messageTallyOn: [ self frame runOn: self ] ] in [ BlFrameTelemetry soleInstance beacon: BlRequestLayoutSignal, BlMarkElementNeedsPaintSignal, BlLostFocusSignal, BlGotFocusSignal, BlTextStylerRequestedSignal on: [ BlFrameTelemetry soleInstance messageTallyOn: [ self frame runOn: self ] ] ] in [ BlFrameTelemetry reset; time: [ 'Frame' ] during: [ BlFrameTelemetry soleInstance beacon: BlRequestLayoutSignal, BlMarkElementNeedsPaintSignal, BlLostFocusSignal, BlGotFocusSignal, BlTextStylerRequestedSignal on: [ BlFrameTelemetry soleInstance messageTallyOn: [ self frame runOn: self ] ] ]; in: [ :t | t soleInstance snapshotSpace: self ]; emit ] in GtWorld(BlSpace)>>processPulse in Block: [ BlFrameTelemetry soleInstance... NullTelemetry>>profile:executing:as: BlSpaceTelemetry>>profile:executing:as: BlFrameTelemetry(BaseProcessTelemetry)>>profile:executing:as: BlFrameTelemetry(BaseProcessTelemetry)>>beacon:as:on: BlFrameTelemetry(BaseProcessTelemetry)>>beacon:on: [ BlFrameTelemetry soleInstance beacon: BlRequestLayoutSignal, BlMarkElementNeedsPaintSignal, BlLostFocusSignal, BlGotFocusSignal, BlTextStylerRequestedSignal on: [ BlFrameTelemetry soleInstance messageTallyOn: [ self frame runOn: self ] ] ] in [ BlFrameTelemetry reset; time: [ 'Frame' ] during: [ BlFrameTelemetry soleInstance beacon: BlRequestLayoutSignal, BlMarkElementNeedsPaintSignal, BlLostFocusSignal, BlGotFocusSignal, BlTextStylerRequestedSignal on: [ BlFrameTelemetry soleInstance messageTallyOn: [ self frame runOn: self ] ] ]; in: [ :t | t soleInstance snapshotSpace: self ]; emit ] in GtWorld(BlSpace)>>processPulse in Block: [... NullTelemetry>>time:during: BlSpaceTelemetry>>time:during: BlFrameTelemetry(BaseProcessTelemetry)>>time:during: BlFrameTelemetry class(BaseProcessTelemetry class)>>time:during: [ BlFrameTelemetry reset; time: [ 'Frame' ] during: [ BlFrameTelemetry soleInstance beacon: BlRequestLayoutSignal, BlMarkElementNeedsPaintSignal, BlLostFocusSignal, BlGotFocusSignal, BlTextStylerRequestedSignal on: [ BlFrameTelemetry soleInstance messageTallyOn: [ self frame runOn: self ] ] ]; in: [ :t | t soleInstance snapshotSpace: self ]; emit ] in GtWorld(BlSpace)>>processPulse in Block: [... FullBlockClosure(BlockClosure)>>ensure: BlFrameTelemetry class>>withSpace:andTelemetry:do: GtWorld(BlSpace)>>processPulse GtWorld(BlSpace)>>pulse [ :eachSpace | eachSpace pulse ] in [ self tryToRunDeferredActions. spaceManager do: [ :eachSpace | eachSpace pulse ] ] in BlParallelUniverse>>pulseSynchronously in Block: [ :eachSpace | eachSpace pulse ] Array(SequenceableCollection)>>do: BlSpaceManager>>do: [ self tryToRunDeferredActions. spaceManager do: [ :eachSpace | eachSpace pulse ] ] in BlParallelUniverse>>pulseSynchronously in Block: [... FullBlockClosure(BlockClosure)>>ensure: BlParallelUniverse>>pulseSynchronously [ self pulseSynchronously ] in BlParallelUniverse>>pulse in Block: [... FullBlockClosure(BlockClosure)>>ensure: BlParallelUniverse>>pulse BlHostPulseLoop>>firePulse [ [ self firePulse. loopProcess == Processor activeProcess. ] whileTrue ] in BlHostPulseLoop>>createLoopTask in Block: [... [self value. "IMPORTANT: Do not step over next line of code. See method comments for details" Processor terminateRealActive] in FullBlockClosure(BlockClosure)>>newProcess in Block: [self value....

girba commented 2 weeks ago

I cannot reproduce this problem. I did the following:

macta commented 2 weeks ago

Ok - lets close it and I will get a fresh image and see if it comes back again - it is worth saying i have built up a few tabs and windows as I've tried out different aspects of GT, so perhaps in all that activity something has gone awry. Does it make sense to raise these kinds of things anyway - and then at least there is some form of record? Its tempting to thing - yeah its just once, doesn't happen the next team (but then happens in a weeks time again). But equally I don't want to waste people's time