Renaming a Class triggers debugger

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Renaming a Class triggers debugger

laheadle
Hello,

I'm running pharo 4 and I'm having a problem. I recently renamed a
class using the rename: menu item in the standard system browser (I
believe it's called Nautilus) and now I am getting uncaught exceptions
whenever I add or remove a method (three debugger windows pop
up). Here is the stack trace; any advice?

Thank you.

Lyn

Author: LynHeadley
Date: 2015-10-13T08:51:16.837987-07:00

UndefinedObject(Object)>>doesNotUnderstand: #theMetaClass
RGMetaclassDefinition>>realClass
RGMethodDefinition(RGElementDefinition)>>realParent
RGMethodDefinition(RGElementDefinition)>>realClass
RGMethodDefinition>>methodClass
ByteSymbol(Symbol)>>value:
OrderedCollection>>collect:
MessageBrowser>>buildHierarchyForMessages:
MessageBrowser>>cacheHierarchyForClasses:
MessageBrowser>>messages:
(item methodClass notNil and: [ item methodClass isObsolete not ])
ifTrue: [ 
| sel text boolean |
boolean := textModel hasUnacceptedEdits.
boolean
ifTrue: [ text := textModel pendingText ].
sel := listModel selectedItem.
self
messages:
(listModel listItems
add: item asFullRingDefinition;
yourself).
listModel setSelectedItem: sel.
boolean
ifTrue: [ textModel pendingText: text ] ] ] in MessageBrowser>>methodAdded:
WorldState>>runStepMethodsIn:
WorldMorph>>runStepMethods
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
WorldMorph>>doOneCycle
World doOneCycle.
Processor yield.
false ] whileFalse: [  ] ] in MorphicUIManager>>spawnNewProcess
self value.
Processor terminateActive ] in BlockClosure>>newProcess

Reply | Threaded
Open this post in threaded view
|

Re: Renaming a Class triggers debugger

abergel
I have no idea. But why don’t you move to Pharo 5?

Cheers,
Alexandre


> On Oct 13, 2015, at 4:36 PM, Lyn Headley <[hidden email]> wrote:
>
> Hello,
>
> I'm running pharo 4 and I'm having a problem. I recently renamed a
> class using the rename: menu item in the standard system browser (I
> believe it's called Nautilus) and now I am getting uncaught exceptions
> whenever I add or remove a method (three debugger windows pop
> up). Here is the stack trace; any advice?
>
> Thank you.
>
> Lyn
>
> Author: LynHeadley
> Date: 2015-10-13T08:51:16.837987-07:00
>
> UndefinedObject(Object)>>doesNotUnderstand: #theMetaClass
> RGMetaclassDefinition>>realClass
> RGMethodDefinition(RGElementDefinition)>>realParent
> RGMethodDefinition(RGElementDefinition)>>realClass
> RGMethodDefinition>>methodClass
> ByteSymbol(Symbol)>>value:
> OrderedCollection>>collect:
> MessageBrowser>>buildHierarchyForMessages:
> MessageBrowser>>cacheHierarchyForClasses:
> MessageBrowser>>messages:
> [
> (item methodClass notNil and: [ item methodClass isObsolete not ])
> ifTrue: [
> | sel text boolean |
> boolean := textModel hasUnacceptedEdits.
> boolean
> ifTrue: [ text := textModel pendingText ].
> sel := listModel selectedItem.
> self
> messages:
> (listModel listItems
> add: item asFullRingDefinition;
> yourself).
> listModel setSelectedItem: sel.
> boolean
> ifTrue: [ textModel pendingText: text ] ] ] in MessageBrowser>>methodAdded:
> WorldState>>runStepMethodsIn:
> WorldMorph>>runStepMethods
> WorldState>>doOneCycleNowFor:
> WorldState>>doOneCycleFor:
> WorldMorph>>doOneCycle
> [
> [
> World doOneCycle.
> Processor yield.
> false ] whileFalse: [  ] ] in MorphicUIManager>>spawnNewProcess
> [
> self value.
> Processor terminateActive ] in BlockClosure>>newProcess
>

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.




Reply | Threaded
Open this post in threaded view
|

Re: Renaming a Class triggers debugger

Nicolai Hess
In reply to this post by laheadle
Hi Lyn

2015-10-13 21:36 GMT+02:00 Lyn Headley <[hidden email]>:
Hello,

I'm running pharo 4 and I'm having a problem. I recently renamed a
class using the rename: menu item in the standard system browser (I
believe it's called Nautilus) and now I am getting uncaught exceptions
whenever I add or remove a method (three debugger windows pop
up). Here is the stack trace; any advice?

The error is from the MessageBrowser, the MessageBrowser registers itself
for every class change (method added/removed) and tests if this added / removed
message should be removed/added to its lists.

Do you have any MessageBrowser open ?
- a sendersOf or implementorsOf
- if so,  what search term is used in the browser (see window title)

I tried to recreate this error but all I could get was a MessageBrowser with
"nil" entries - no exception was thrown.
 

Thank you.

Lyn

Author: LynHeadley
Date: 2015-10-13T08:51:16.837987-07:00

UndefinedObject(Object)>>doesNotUnderstand: #theMetaClass
RGMetaclassDefinition>>realClass
RGMethodDefinition(RGElementDefinition)>>realParent
RGMethodDefinition(RGElementDefinition)>>realClass
RGMethodDefinition>>methodClass
ByteSymbol(Symbol)>>value:
OrderedCollection>>collect:
MessageBrowser>>buildHierarchyForMessages:
MessageBrowser>>cacheHierarchyForClasses:
MessageBrowser>>messages:
(item methodClass notNil and: [ item methodClass isObsolete not ])
ifTrue: [ 
| sel text boolean |
boolean := textModel hasUnacceptedEdits.
boolean
ifTrue: [ text := textModel pendingText ].
sel := listModel selectedItem.
self
messages:
(listModel listItems
add: item asFullRingDefinition;
yourself).
listModel setSelectedItem: sel.
boolean
ifTrue: [ textModel pendingText: text ] ] ] in MessageBrowser>>methodAdded:
WorldState>>runStepMethodsIn:
WorldMorph>>runStepMethods
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
WorldMorph>>doOneCycle
World doOneCycle.
Processor yield.
false ] whileFalse: [  ] ] in MorphicUIManager>>spawnNewProcess
self value.
Processor terminateActive ] in BlockClosure>>newProcess


Reply | Threaded
Open this post in threaded view
|

Re: Renaming a Class triggers debugger

laheadle
Hi Nicolai,

I had a bunch of messagebrowsers open, mostly on various classes of Morphic and Montecello packages; nothing that was related to the class I renamed. Since I got your message I have closed the MessageBrowsers, and now there are only two debuggers triggered when I add or remove a method :-)

It looks like WorldState's queue of deferredUIMessages contains a stale block or something...

runStepMethodsIn: aWorld
"Perform periodic activity inbetween event cycles"
| queue nextInQueue|
"If available dispatch some deferred UI Message"
queue := self class deferredUIMessages.
[(nextInQueue := queue nextOrNil) isNil]
whileFalse: [ nextInQueue value <----- error ].
self runLocalStepMethodsIn: aWorld.
"The multi-threaded global Transcript needs to be updated periodically and synchronously with the UI."
Transcript stepGlobal.

On Tue, Oct 13, 2015 at 2:52 PM, Nicolai Hess <[hidden email]> wrote:
Hi Lyn

2015-10-13 21:36 GMT+02:00 Lyn Headley <[hidden email]>:
Hello,

I'm running pharo 4 and I'm having a problem. I recently renamed a
class using the rename: menu item in the standard system browser (I
believe it's called Nautilus) and now I am getting uncaught exceptions
whenever I add or remove a method (three debugger windows pop
up). Here is the stack trace; any advice?

The error is from the MessageBrowser, the MessageBrowser registers itself
for every class change (method added/removed) and tests if this added / removed
message should be removed/added to its lists.

Do you have any MessageBrowser open ?
- a sendersOf or implementorsOf
- if so,  what search term is used in the browser (see window title)

I tried to recreate this error but all I could get was a MessageBrowser with
"nil" entries - no exception was thrown.
 

Thank you.

Lyn

Author: LynHeadley
Date: 2015-10-13T08:51:16.837987-07:00

UndefinedObject(Object)>>doesNotUnderstand: #theMetaClass
RGMetaclassDefinition>>realClass
RGMethodDefinition(RGElementDefinition)>>realParent
RGMethodDefinition(RGElementDefinition)>>realClass
RGMethodDefinition>>methodClass
ByteSymbol(Symbol)>>value:
OrderedCollection>>collect:
MessageBrowser>>buildHierarchyForMessages:
MessageBrowser>>cacheHierarchyForClasses:
MessageBrowser>>messages:
(item methodClass notNil and: [ item methodClass isObsolete not ])
ifTrue: [ 
| sel text boolean |
boolean := textModel hasUnacceptedEdits.
boolean
ifTrue: [ text := textModel pendingText ].
sel := listModel selectedItem.
self
messages:
(listModel listItems
add: item asFullRingDefinition;
yourself).
listModel setSelectedItem: sel.
boolean
ifTrue: [ textModel pendingText: text ] ] ] in MessageBrowser>>methodAdded:
WorldState>>runStepMethodsIn:
WorldMorph>>runStepMethods
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
WorldMorph>>doOneCycle
World doOneCycle.
Processor yield.
false ] whileFalse: [  ] ] in MorphicUIManager>>spawnNewProcess
self value.
Processor terminateActive ] in BlockClosure>>newProcess



Reply | Threaded
Open this post in threaded view
|

Re: Renaming a Class triggers debugger

laheadle
In reply to this post by abergel
Because Pharo 4 is the latest release. Do I really have to defend this choice?

On Tue, Oct 13, 2015 at 2:32 PM, Alexandre Bergel <[hidden email]> wrote:
I have no idea. But why don’t you move to Pharo 5?

Cheers,
Alexandre


> On Oct 13, 2015, at 4:36 PM, Lyn Headley <[hidden email]> wrote:
>
> Hello,
>
> I'm running pharo 4 and I'm having a problem. I recently renamed a
> class using the rename: menu item in the standard system browser (I
> believe it's called Nautilus) and now I am getting uncaught exceptions
> whenever I add or remove a method (three debugger windows pop
> up). Here is the stack trace; any advice?
>
> Thank you.
>
> Lyn
>
> Author: LynHeadley
> Date: 2015-10-13T08:51:16.837987-07:00
>
> UndefinedObject(Object)>>doesNotUnderstand: #theMetaClass
> RGMetaclassDefinition>>realClass
> RGMethodDefinition(RGElementDefinition)>>realParent
> RGMethodDefinition(RGElementDefinition)>>realClass
> RGMethodDefinition>>methodClass
> ByteSymbol(Symbol)>>value:
> OrderedCollection>>collect:
> MessageBrowser>>buildHierarchyForMessages:
> MessageBrowser>>cacheHierarchyForClasses:
> MessageBrowser>>messages:
> [
> (item methodClass notNil and: [ item methodClass isObsolete not ])
>       ifTrue: [
>               | sel text boolean |
>               boolean := textModel hasUnacceptedEdits.
>               boolean
>                       ifTrue: [ text := textModel pendingText ].
>               sel := listModel selectedItem.
>               self
>                       messages:
>                               (listModel listItems
>                                       add: item asFullRingDefinition;
>                                       yourself).
>               listModel setSelectedItem: sel.
>               boolean
>                       ifTrue: [ textModel pendingText: text ] ] ] in MessageBrowser>>methodAdded:
> WorldState>>runStepMethodsIn:
> WorldMorph>>runStepMethods
> WorldState>>doOneCycleNowFor:
> WorldState>>doOneCycleFor:
> WorldMorph>>doOneCycle
> [
> [
> World doOneCycle.
> Processor yield.
> false ] whileFalse: [  ] ] in MorphicUIManager>>spawnNewProcess
> [
> self value.
> Processor terminateActive ] in BlockClosure>>newProcess
>

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.





Reply | Threaded
Open this post in threaded view
|

Re: Renaming a Class triggers debugger

Ben Coman
That sounds like a reasonable choice.  Anyhow, with build 50384 I can
reproduce a similar error as follows...

1. Open fresh image.
2. World > Tools > Recent Messages
3. World > System Browser
4. Package pane > Add package > "AAPackage"
5. Class pane > Add class > "AAClass"
6. Protocol pane > no messages
7. Code pane > replace template with "test1" and save
8. Class pane > right-click "AAClass" > Rename > "AAClass2" > Ok
9. Code pane > replace "test1" with "test2" and save

which produces...

UndefinedObject(Object)>>doesNotUnderstand: #timeStamp
RGMethodDefinition>>stamp
[ self class parseTimestampFrom: self stamp default: DateAndTime epoch
] in RGMethodDefinition>>timeStamp
[ self at: key put: aBlock value ] in
IdentityDictionary(Dictionary)>>at:ifAbsentPut:
IdentityDictionary(Dictionary)>>at:ifAbsent:
IdentityDictionary(Dictionary)>>at:ifAbsentPut:
RGMethodDefinition(RGDefinition)>>annotationNamed:ifAbsentPut:
RGMethodDefinition>>timeStamp
[ :a :b | a timeStamp > b timeStamp ] in RecentMessageList>>open
Array(SequenceableCollection)>>mergeFirst:middle:last:into:by:
Array(SequenceableCollection)>>mergeSortFrom:to:src:dst:by:
OrderedCollection>>sort:
OrderedCollection(SequenceableCollection)>>sorted:
MultiColumnListModel(ListModel)>>items:
MessageBrowser>>messages:
...
WorldMorph>>doOneCycle

So thanks Lyn, you found a bug.  Did you get this same error, or just
similar?  Anyhow, it may be the same root cause.

However I didn't create an issue in the tracker yet, since I wasn't
sure what the title should be... anyone?

cheers -ben

On Wed, Oct 14, 2015 at 10:27 AM, Lyn Headley <[hidden email]> wrote:

> Because Pharo 4 is the latest release. Do I really have to defend this
> choice?
>
> On Tue, Oct 13, 2015 at 2:32 PM, Alexandre Bergel <[hidden email]>
> wrote:
>>
>> I have no idea. But why don’t you move to Pharo 5?
>>
>> Cheers,
>> Alexandre
>>
>>
>> > On Oct 13, 2015, at 4:36 PM, Lyn Headley <[hidden email]> wrote:
>> >
>> > Hello,
>> >
>> > I'm running pharo 4 and I'm having a problem. I recently renamed a
>> > class using the rename: menu item in the standard system browser (I
>> > believe it's called Nautilus) and now I am getting uncaught exceptions
>> > whenever I add or remove a method (three debugger windows pop
>> > up). Here is the stack trace; any advice?
>> >
>> > Thank you.
>> >
>> > Lyn
>> >
>> > Author: LynHeadley
>> > Date: 2015-10-13T08:51:16.837987-07:00
>> >
>> > UndefinedObject(Object)>>doesNotUnderstand: #theMetaClass
>> > RGMetaclassDefinition>>realClass
>> > RGMethodDefinition(RGElementDefinition)>>realParent
>> > RGMethodDefinition(RGElementDefinition)>>realClass
>> > RGMethodDefinition>>methodClass
>> > ByteSymbol(Symbol)>>value:
>> > OrderedCollection>>collect:
>> > MessageBrowser>>buildHierarchyForMessages:
>> > MessageBrowser>>cacheHierarchyForClasses:
>> > MessageBrowser>>messages:
>> > [
>> > (item methodClass notNil and: [ item methodClass isObsolete not ])
>> >       ifTrue: [
>> >               | sel text boolean |
>> >               boolean := textModel hasUnacceptedEdits.
>> >               boolean
>> >                       ifTrue: [ text := textModel pendingText ].
>> >               sel := listModel selectedItem.
>> >               self
>> >                       messages:
>> >                               (listModel listItems
>> >                                       add: item asFullRingDefinition;
>> >                                       yourself).
>> >               listModel setSelectedItem: sel.
>> >               boolean
>> >                       ifTrue: [ textModel pendingText: text ] ] ] in
>> > MessageBrowser>>methodAdded:
>> > WorldState>>runStepMethodsIn:
>> > WorldMorph>>runStepMethods
>> > WorldState>>doOneCycleNowFor:
>> > WorldState>>doOneCycleFor:
>> > WorldMorph>>doOneCycle
>> > [
>> > [
>> > World doOneCycle.
>> > Processor yield.
>> > false ] whileFalse: [  ] ] in MorphicUIManager>>spawnNewProcess
>> > [
>> > self value.
>> > Processor terminateActive ] in BlockClosure>>newProcess
>> >
>>
>> --
>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>> Alexandre Bergel  http://www.bergel.eu
>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>
>>
>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: Renaming a Class triggers debugger

laheadle
Hi Ben,

Thanks for looking into this. I've gone through your steps on my
machine (the image filename is Pharo-40622.image so I assume that is a
build number) and I get the same error you do. As you say, the errors
are not identical but hopefully this will lead to a fix for both. For
continuing my work, I am going to install a fresh image, and hopefully
I can still rename classes as long as there are no MessageBrowsers
open. I'd be interested in hearing other workarounds.

Lyn

On Wed, Oct 14, 2015 at 7:01 AM, Ben Coman <[hidden email]> wrote:
That sounds like a reasonable choice.  Anyhow, with build 50384 I can
reproduce a similar error as follows...

1. Open fresh image.
2. World > Tools > Recent Messages
3. World > System Browser
4. Package pane > Add package > "AAPackage"
5. Class pane > Add class > "AAClass"
6. Protocol pane > no messages
7. Code pane > replace template with "test1" and save
8. Class pane > right-click "AAClass" > Rename > "AAClass2" > Ok
9. Code pane > replace "test1" with "test2" and save

which produces...

UndefinedObject(Object)>>doesNotUnderstand: #timeStamp
RGMethodDefinition>>stamp
[ self class parseTimestampFrom: self stamp default: DateAndTime epoch
] in RGMethodDefinition>>timeStamp
[ self at: key put: aBlock value ] in
IdentityDictionary(Dictionary)>>at:ifAbsentPut:
IdentityDictionary(Dictionary)>>at:ifAbsent:
IdentityDictionary(Dictionary)>>at:ifAbsentPut:
RGMethodDefinition(RGDefinition)>>annotationNamed:ifAbsentPut:
RGMethodDefinition>>timeStamp
[ :a :b | a timeStamp > b timeStamp ] in RecentMessageList>>open
Array(SequenceableCollection)>>mergeFirst:middle:last:into:by:
Array(SequenceableCollection)>>mergeSortFrom:to:src:dst:by:
OrderedCollection>>sort:
OrderedCollection(SequenceableCollection)>>sorted:
MultiColumnListModel(ListModel)>>items:
MessageBrowser>>messages:
...
WorldMorph>>doOneCycle

So thanks Lyn, you found a bug.  Did you get this same error, or just
similar?  Anyhow, it may be the same root cause.

However I didn't create an issue in the tracker yet, since I wasn't
sure what the title should be... anyone?

cheers -ben

On Wed, Oct 14, 2015 at 10:27 AM, Lyn Headley <[hidden email]> wrote:
> Because Pharo 4 is the latest release. Do I really have to defend this
> choice?
>
> On Tue, Oct 13, 2015 at 2:32 PM, Alexandre Bergel <[hidden email]>
> wrote:
>>
>> I have no idea. But why don’t you move to Pharo 5?
>>
>> Cheers,
>> Alexandre
>>
>>
>> > On Oct 13, 2015, at 4:36 PM, Lyn Headley <[hidden email]> wrote:
>> >
>> > Hello,
>> >
>> > I'm running pharo 4 and I'm having a problem. I recently renamed a
>> > class using the rename: menu item in the standard system browser (I
>> > believe it's called Nautilus) and now I am getting uncaught exceptions
>> > whenever I add or remove a method (three debugger windows pop
>> > up). Here is the stack trace; any advice?
>> >
>> > Thank you.
>> >
>> > Lyn
>> >
>> > Author: LynHeadley
>> > Date: 2015-10-13T08:51:16.837987-07:00
>> >
>> > UndefinedObject(Object)>>doesNotUnderstand: #theMetaClass
>> > RGMetaclassDefinition>>realClass
>> > RGMethodDefinition(RGElementDefinition)>>realParent
>> > RGMethodDefinition(RGElementDefinition)>>realClass
>> > RGMethodDefinition>>methodClass
>> > ByteSymbol(Symbol)>>value:
>> > OrderedCollection>>collect:
>> > MessageBrowser>>buildHierarchyForMessages:
>> > MessageBrowser>>cacheHierarchyForClasses:
>> > MessageBrowser>>messages:
>> > [
>> > (item methodClass notNil and: [ item methodClass isObsolete not ])
>> >       ifTrue: [
>> >               | sel text boolean |
>> >               boolean := textModel hasUnacceptedEdits.
>> >               boolean
>> >                       ifTrue: [ text := textModel pendingText ].
>> >               sel := listModel selectedItem.
>> >               self
>> >                       messages:
>> >                               (listModel listItems
>> >                                       add: item asFullRingDefinition;
>> >                                       yourself).
>> >               listModel setSelectedItem: sel.
>> >               boolean
>> >                       ifTrue: [ textModel pendingText: text ] ] ] in
>> > MessageBrowser>>methodAdded:
>> > WorldState>>runStepMethodsIn:
>> > WorldMorph>>runStepMethods
>> > WorldState>>doOneCycleNowFor:
>> > WorldState>>doOneCycleFor:
>> > WorldMorph>>doOneCycle
>> > [
>> > [
>> > World doOneCycle.
>> > Processor yield.
>> > false ] whileFalse: [  ] ] in MorphicUIManager>>spawnNewProcess
>> > [
>> > self value.
>> > Processor terminateActive ] in BlockClosure>>newProcess
>> >
>>
>> --
>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>> Alexandre Bergel  http://www.bergel.eu
>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>
>>
>>
>>
>


Reply | Threaded
Open this post in threaded view
|

Re: Renaming a Class triggers debugger

Nicolai Hess


2015-10-14 21:12 GMT+02:00 Lyn Headley <[hidden email]>:
Hi Ben,

Thanks for looking into this. I've gone through your steps on my
machine (the image filename is Pharo-40622.image so I assume that is a
build number) and I get the same error you do. As you say, the errors
are not identical but hopefully this will lead to a fix for both. For
continuing my work, I am going to install a fresh image, and hopefully
I can still rename classes as long as there are no MessageBrowsers
open. I'd be interested in hearing other workarounds.

Yes, I think this is just another error.

I can now reproduce the first one too.

1. Open fresh 4.0 image (I have 40619)
2. World > System Browser
3. Package pane > Add package > "AAPackage"
4. Class pane > Add class > "AAClass"
5. Check "class-side" (!)
6. Protocol pane > no messages
7. Code pane, add and accept this method
test1
  self aaclasstestselector
8. select "aaclasstestselector" and choose "senders of it" from the code search context menu
    A MessageBrowser with one entry opens
9. Again in the SystemBrowser add another method on the class side
10. choose Class pane menu "Rename"
11. rename class AAClass to AAClass2
12. add a new method





 

Lyn

On Wed, Oct 14, 2015 at 7:01 AM, Ben Coman <[hidden email]> wrote:
That sounds like a reasonable choice.  Anyhow, with build 50384 I can
reproduce a similar error as follows...

1. Open fresh image.
2. World > Tools > Recent Messages
3. World > System Browser
4. Package pane > Add package > "AAPackage"
5. Class pane > Add class > "AAClass"
6. Protocol pane > no messages
7. Code pane > replace template with "test1" and save
8. Class pane > right-click "AAClass" > Rename > "AAClass2" > Ok
9. Code pane > replace "test1" with "test2" and save

which produces...

UndefinedObject(Object)>>doesNotUnderstand: #timeStamp
RGMethodDefinition>>stamp
[ self class parseTimestampFrom: self stamp default: DateAndTime epoch
] in RGMethodDefinition>>timeStamp
[ self at: key put: aBlock value ] in
IdentityDictionary(Dictionary)>>at:ifAbsentPut:
IdentityDictionary(Dictionary)>>at:ifAbsent:
IdentityDictionary(Dictionary)>>at:ifAbsentPut:
RGMethodDefinition(RGDefinition)>>annotationNamed:ifAbsentPut:
RGMethodDefinition>>timeStamp
[ :a :b | a timeStamp > b timeStamp ] in RecentMessageList>>open
Array(SequenceableCollection)>>mergeFirst:middle:last:into:by:
Array(SequenceableCollection)>>mergeSortFrom:to:src:dst:by:
OrderedCollection>>sort:
OrderedCollection(SequenceableCollection)>>sorted:
MultiColumnListModel(ListModel)>>items:
MessageBrowser>>messages:
...
WorldMorph>>doOneCycle

So thanks Lyn, you found a bug.  Did you get this same error, or just
similar?  Anyhow, it may be the same root cause.

However I didn't create an issue in the tracker yet, since I wasn't
sure what the title should be... anyone?

cheers -ben

On Wed, Oct 14, 2015 at 10:27 AM, Lyn Headley <[hidden email]> wrote:
> Because Pharo 4 is the latest release. Do I really have to defend this
> choice?
>
> On Tue, Oct 13, 2015 at 2:32 PM, Alexandre Bergel <[hidden email]>
> wrote:
>>
>> I have no idea. But why don’t you move to Pharo 5?
>>
>> Cheers,
>> Alexandre
>>
>>
>> > On Oct 13, 2015, at 4:36 PM, Lyn Headley <[hidden email]> wrote:
>> >
>> > Hello,
>> >
>> > I'm running pharo 4 and I'm having a problem. I recently renamed a
>> > class using the rename: menu item in the standard system browser (I
>> > believe it's called Nautilus) and now I am getting uncaught exceptions
>> > whenever I add or remove a method (three debugger windows pop
>> > up). Here is the stack trace; any advice?
>> >
>> > Thank you.
>> >
>> > Lyn
>> >
>> > Author: LynHeadley
>> > Date: 2015-10-13T08:51:16.837987-07:00
>> >
>> > UndefinedObject(Object)>>doesNotUnderstand: #theMetaClass
>> > RGMetaclassDefinition>>realClass
>> > RGMethodDefinition(RGElementDefinition)>>realParent
>> > RGMethodDefinition(RGElementDefinition)>>realClass
>> > RGMethodDefinition>>methodClass
>> > ByteSymbol(Symbol)>>value:
>> > OrderedCollection>>collect:
>> > MessageBrowser>>buildHierarchyForMessages:
>> > MessageBrowser>>cacheHierarchyForClasses:
>> > MessageBrowser>>messages:
>> > [
>> > (item methodClass notNil and: [ item methodClass isObsolete not ])
>> >       ifTrue: [
>> >               | sel text boolean |
>> >               boolean := textModel hasUnacceptedEdits.
>> >               boolean
>> >                       ifTrue: [ text := textModel pendingText ].
>> >               sel := listModel selectedItem.
>> >               self
>> >                       messages:
>> >                               (listModel listItems
>> >                                       add: item asFullRingDefinition;
>> >                                       yourself).
>> >               listModel setSelectedItem: sel.
>> >               boolean
>> >                       ifTrue: [ textModel pendingText: text ] ] ] in
>> > MessageBrowser>>methodAdded:
>> > WorldState>>runStepMethodsIn:
>> > WorldMorph>>runStepMethods
>> > WorldState>>doOneCycleNowFor:
>> > WorldState>>doOneCycleFor:
>> > WorldMorph>>doOneCycle
>> > [
>> > [
>> > World doOneCycle.
>> > Processor yield.
>> > false ] whileFalse: [  ] ] in MorphicUIManager>>spawnNewProcess
>> > [
>> > self value.
>> > Processor terminateActive ] in BlockClosure>>newProcess
>> >
>>
>> --
>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>> Alexandre Bergel  http://www.bergel.eu
>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>
>>
>>
>>
>



Reply | Threaded
Open this post in threaded view
|

Re: Renaming a Class triggers debugger

Stephan Eggermont-3
On 14/10/15 22:23, Nicolai Hess wrote:
> I can now reproduce the first one too.
>
> 1. Open fresh 4.0 image (I have 40619)

Confirmed in 40622

When having the senders window open, renaming the class results in some

nil() instead of AAClass4 class (as yet unclassified)

Stephan


Reply | Threaded
Open this post in threaded view
|

Re: Renaming a Class triggers debugger

stepharo
In reply to this post by laheadle
Thanks for reporting this. We should fix it.
I got annoyed too from time to time.
We should make sure it is fixed in Pharo 50.
Stef

Le 13/10/15 21:36, Lyn Headley a écrit :
Hello,

I'm running pharo 4 and I'm having a problem. I recently renamed a
class using the rename: menu item in the standard system browser (I
believe it's called Nautilus) and now I am getting uncaught exceptions
whenever I add or remove a method (three debugger windows pop
up). Here is the stack trace; any advice?

Thank you.

Lyn

Author: LynHeadley
Date: 2015-10-13T08:51:16.837987-07:00

UndefinedObject(Object)>>doesNotUnderstand: #theMetaClass
RGMetaclassDefinition>>realClass
RGMethodDefinition(RGElementDefinition)>>realParent
RGMethodDefinition(RGElementDefinition)>>realClass
RGMethodDefinition>>methodClass
ByteSymbol(Symbol)>>value:
OrderedCollection>>collect:
MessageBrowser>>buildHierarchyForMessages:
MessageBrowser>>cacheHierarchyForClasses:
MessageBrowser>>messages:
(item methodClass notNil and: [ item methodClass isObsolete not ])
ifTrue: [ 
| sel text boolean |
boolean := textModel hasUnacceptedEdits.
boolean
ifTrue: [ text := textModel pendingText ].
sel := listModel selectedItem.
self
messages:
(listModel listItems
add: item asFullRingDefinition;
yourself).
listModel setSelectedItem: sel.
boolean
ifTrue: [ textModel pendingText: text ] ] ] in MessageBrowser>>methodAdded:
WorldState>>runStepMethodsIn:
WorldMorph>>runStepMethods
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
WorldMorph>>doOneCycle
World doOneCycle.
Processor yield.
false ] whileFalse: [  ] ] in MorphicUIManager>>spawnNewProcess
self value.
Processor terminateActive ] in BlockClosure>>newProcess