Hi Henrik, It was categorized since years, and now I can see it disappeared from the Monticello save, since maybe one year, glup! This is scarring as reloading code in fresh image will lead to missing code.
Forcing recategorisation leads to another error, see log. Thanks Hilaire Le 11/11/2016 à 10:36, Henrik Nergaard a écrit : > Looks like the class was created without a package? > > Try something like: > CGPhone category: 'PackageName' > > Best regards, > Henrik -- Dr. Geo http://drgeo.eu
THERE_BE_DRAGONS_HERE Error: Class not categorized! 11 Novembre 2016 10:48:38.366426 am VM: unix - i686 - linux-gnu - NBCoInterpreter NativeBoost-CogPlugin-EstebanLorenzano.20 uuid: cf2aeeee-897d-48fd-8251-6789dd21d958 Jun 14 2014 NBCogit NativeBoost-CogPlugin-EstebanLorenzano.20 uuid: cf2aeeee-897d-48fd-8251-6789dd21d958 Jun 14 2014 https://github.com/pharo-project/pharo-vm.git Commit: 0e8bbfbaeb03237fa6bb63ba834773fab18ca307 Date: 2014-06-14 12:20:21 -0300 By: Esteban Lorenzano <esteba...@gmail.com> Jenkins build #14833 Image: Pharo4.0 [Latest update: #40627] RPackageOrganizer(Object)>>error: Receiver: a RPackageOrganizer Arguments and temporary variables: aString: 'Class not categorized!' Receiver's instance variables: classPackageMapping: an IdentityDictionary(size 6357) packages: an IdentityDictionary(size 447) classExtendingPackagesMapping: an IdentityDictionary(size 746) debuggingName: '' RPackageOrganizer>>packageMatchingExtensionName:includingClass: Receiver: a RPackageOrganizer Arguments and temporary variables: aString: #'Cofigest-Person' aClass: CGPhone package: a RPackage(Cofigest) categoryName: 'Cofigest' Receiver's instance variables: classPackageMapping: an IdentityDictionary(size 6357) packages: an IdentityDictionary(size 447) classExtendingPackagesMapping: an IdentityDictionary(size 746) debuggingName: '' RPackageOrganizer>>systemClassRecategorizedActionFrom: Receiver: a RPackageOrganizer Arguments and temporary variables: ann: a ClassRecategorized class: CGPhone newRPackage: nil newRPackageTag: nil oldRPackage: nil newCategoryName: #'Cofigest-Person' oldCategoryName: #'Cofigest-Person' Receiver's instance variables: classPackageMapping: an IdentityDictionary(size 6357) packages: an IdentityDictionary(size 447) classExtendingPackagesMapping: an IdentityDictionary(size 746) debuggingName: '' WeakMessageSend>>value: Receiver: WeakMessageSend(#systemClassRecategorizedActionFrom: -> a RPackageOrganizer) Arguments and temporary variables: anObject: a ClassRecategorized Receiver's instance variables: selector: #systemClassRecategorizedActionFrom: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull: Receiver: WeakMessageSend(#systemClassRecategorizedActionFrom: -> a RPackageOrganizer) Arguments and temporary variables: arg: a ClassRecategorized Receiver's instance variables: selector: #systemClassRecategorizedActionFrom: shouldBeNil: #() arguments: a WeakArray() WeakMessageSend>>cull:cull: Receiver: WeakMessageSend(#systemClassRecategorizedActionFrom: -> a RPackageOrganizer) Arguments and temporary variables: arg1: a ClassRecategorized arg2: an Announcer Receiver's instance variables: selector: #systemClassRecategorizedActionFrom: shouldBeNil: #() arguments: a WeakArray() [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a ClassRecategorized Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: ClassRecategorized action: WeakMessageSend(#systemClassRecategorizedActionFrom: -> a RPackageOrgan...etc... BlockClosure>>on:do: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: [ :ex | | copy onDoCtx process handler bottom thisCtx | onDoCtx...etc... Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 BlockClosure>>on:fork: Receiver: [ action cull: anAnnouncement cull: announcer ] Arguments and temporary variables: exception: UnhandledError handlerAction: [ :ex | ex pass ] Receiver's instance variables: outerContext: WeakAnnouncementSubscription>>deliver: startpc: 47 numArgs: 0 WeakAnnouncementSubscription>>deliver: Receiver: a WeakAnnouncementSubscription Arguments and temporary variables: anAnnouncement: a ClassRecategorized Receiver's instance variables: list: a WeakFinalizationList next: nil announcer: an Announcer announcementClass: ClassRecategorized action: WeakMessageSend(#systemClassRecategorizedActionFrom: -> a RPackageOrgan...etc... [ subscription deliver: anAnnouncement ] in SubscriptionRegistry>>deliver:to:startingAt: Receiver: a SubscriptionRegistry Arguments and temporary variables: anAnnouncement: a ClassRecategorized subs: an Array(a WeakAnnouncementSubscription a WeakAnnouncementSubscription) startIndex: 1 index: 2 subscription: a WeakAnnouncementSubscription Receiver's instance variables: subscriptions: an IdentitySet(a WeakAnnouncementSubscription a WeakAnnouncement...etc... monitor: a Semaphore() BlockClosure>>ifCurtailed: Receiver: [ subscription deliver: anAnnouncement ] Arguments and temporary variables: aBlock: [ self deliver: anAnnouncement to: subs startingAt: index + 1 ] complete: nil result: nil Receiver's instance variables: outerContext: SubscriptionRegistry>>deliver:to:startingAt: startpc: 54 numArgs: 0 SubscriptionRegistry>>deliver:to:startingAt: Receiver: a SubscriptionRegistry Arguments and temporary variables: anAnnouncement: a ClassRecategorized subs: an Array(a WeakAnnouncementSubscription a WeakAnnouncementSubscription) startIndex: 1 subscription: a WeakAnnouncementSubscription index: 2 Receiver's instance variables: subscriptions: an IdentitySet(a WeakAnnouncementSubscription a WeakAnnouncement...etc... monitor: a Semaphore() SubscriptionRegistry>>deliver:to: Receiver: a SubscriptionRegistry Arguments and temporary variables: anAnnouncement: a ClassRecategorized subs: an Array(a WeakAnnouncementSubscription a WeakAnnouncementSubscription) Receiver's instance variables: subscriptions: an IdentitySet(a WeakAnnouncementSubscription a WeakAnnouncement...etc... monitor: a Semaphore() SubscriptionRegistry>>deliver: Receiver: a SubscriptionRegistry Arguments and temporary variables: interestedSubscriptions: an Array(a WeakAnnouncementSubscription a WeakAnnounce...etc... anAnnouncement: a ClassRecategorized Receiver's instance variables: subscriptions: an IdentitySet(a WeakAnnouncementSubscription a WeakAnnouncement...etc... monitor: a Semaphore() Announcer>>announce: Receiver: an Announcer Arguments and temporary variables: anAnnouncement: a ClassRecategorized announcement: a ClassRecategorized Receiver's instance variables: registry: a SubscriptionRegistry SystemAnnouncer>>announce: Receiver: a SystemAnnouncer Arguments and temporary variables: anAnnouncement: a ClassRecategorized Receiver's instance variables: registry: a SubscriptionRegistry suspended: false private: an Announcer SystemAnnouncer>>class:recategorizedFrom:to: Receiver: a SystemAnnouncer Arguments and temporary variables: aClass: CGPhone oldCategory: #'Cofigest-Person' newCategory: #'Cofigest-Person' Receiver's instance variables: registry: a SubscriptionRegistry suspended: false private: an Announcer CGPhone class(Class)>>category: Receiver: CGPhone Arguments and temporary variables: aString: 'Cofigest-Person' oldCategory: #'Cofigest-Person' Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#=->CGPhone>>#= #hash->CGPhone>>#hash #initializ...etc... format: 134 layout: a FixedLayout instanceVariables: #(#type #number) organization: a ClassOrganization subclasses: nil name: #CGPhone classPool: a Dictionary(#Phones->an OrderedIdentityDictionary(#home->'Domicile'...etc... sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'Cofigest-Person' traitComposition: {} localSelectors: nil UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: Receiver's instance variables: nil OpalCompiler>>evaluate Receiver: an OpalCompiler Arguments and temporary variables: value: nil selectedSource: 'CGPhone category: ''Cofigest-Person''' itsSelection: a Text for 'CGPhone category: ''Cofigest-Person''' itsSelectionString: 'CGPhone category: ''Cofigest-Person''' Receiver's instance variables: ast: DoIt ^ CGPhone category: 'Cofigest-Person' source: a ReadStream context: nil receiver: nil compilationContext: a CompilationContext compilationContextClass: nil useFaultyForParsing: false SmalltalkEditor>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: aBlock: [ :result | result ] result: nil rcvr: nil ctxt: nil Receiver's instance variables: morph: a TextMorphForEditView(923271168) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor>>evaluateSelection Receiver: a SmalltalkEditor Arguments and temporary variables: Receiver's instance variables: morph: a TextMorphForEditView(923271168) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor>>doIt Receiver: a SmalltalkEditor Arguments and temporary variables: Receiver's instance variables: morph: a TextMorphForEditView(923271168) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor>>doIt: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [keystroke '<Cmd-d>'] Receiver's instance variables: morph: a TextMorphForEditView(923271168) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor(TextEditor)>>performCmdActionsWith:shifted:return: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [keystroke '<Cmd-d>'] aBoolean: false return: [ :val | ^ val ] asciiValue: 101 actions: #(#noop: #cursorHome: #noop: #noop: #cursorEnd: #noop: #noop: #noop: #...etc... action: #doIt: Receiver's instance variables: morph: a TextMorphForEditView(923271168) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor(TextEditor)>>dispatchCommandOn:return: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [keystroke '<Cmd-d>'] return: [ :val | ^ val ] asciiValue: 100 honorCommandKeys: true char: nil Receiver's instance variables: morph: a TextMorphForEditView(923271168) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor(TextEditor)>>dispatchOn: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [keystroke '<Cmd-d>'] char: nil return: [ :val | ^ val ] keyEvents: nil Receiver's instance variables: morph: a TextMorphForEditView(923271168) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState [ self dispatchOn: aKeyboardEvent ] in SmalltalkEditor(TextEditor)>>keystroke: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [keystroke '<Cmd-d>'] Receiver's instance variables: morph: a TextMorphForEditView(923271168) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor(TextEditor)>>handleKeystrokeAction: Receiver: a SmalltalkEditor Arguments and temporary variables: aBlock: [ self dispatchOn: aKeyboardEvent ] Receiver's instance variables: morph: a TextMorphForEditView(923271168) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor(TextEditor)>>handleEditionAction:fromKeyboardEvent: Receiver: a SmalltalkEditor Arguments and temporary variables: anAction: [ self dispatchOn: aKeyboardEvent ] aKeyboardEvent: [keystroke '<Cmd-d>'] Receiver's instance variables: morph: a TextMorphForEditView(923271168) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState SmalltalkEditor(TextEditor)>>keystroke: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [keystroke '<Cmd-d>'] Receiver's instance variables: morph: a TextMorphForEditView(923271168) selectionShowing: true model: a Workspace editingState: a SmalltalkEditingState [ editor keystroke: evt ] in TextMorphForEditView(TextMorph)>>basicKeyStroke: Receiver: a TextMorphForEditView(923271168) Arguments and temporary variables: evt: [keystroke '<Cmd-d>'] action: nil Receiver's instance variables: bounds: (0@0) corner: (969@462) owner: a TransformMorph(324009984) submorphs: #() fullBounds: (0@0) corner: (969@462) color: Color white extension: a MorphExtension (987234304) [other: (kmDispatcher -> a KMDispatche...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Source Code Pro text: a Text for 'CGAmortizationSchedule capital: 10000 EUR steps: { { 0.0...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: (0@0) corner: (0@0) defaultColor: a TextColor code: Color white editView: a PluggableTextMorph(596639744) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil TextMorphForEditView(TextMorph)>>handleInteraction: Receiver: a TextMorphForEditView(923271168) Arguments and temporary variables: interactionBlock: [ editor keystroke: evt ] oldEditor: a SmalltalkEditor oldParagraph: a Paragraph oldText: a Text for 'CGAmortizationSchedule capital: 10000 EUR steps: { { ...etc... Receiver's instance variables: bounds: (0@0) corner: (969@462) owner: a TransformMorph(324009984) submorphs: #() fullBounds: (0@0) corner: (969@462) color: Color white extension: a MorphExtension (987234304) [other: (kmDispatcher -> a KMDispatche...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Source Code Pro text: a Text for 'CGAmortizationSchedule capital: 10000 EUR steps: { { 0.0...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: (0@0) corner: (0@0) defaultColor: a TextColor code: Color white editView: a PluggableTextMorph(596639744) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil TextMorphForEditView>>handleInteraction: Receiver: a TextMorphForEditView(923271168) Arguments and temporary variables: interActionBlock: [ editor keystroke: evt ] Receiver's instance variables: bounds: (0@0) corner: (969@462) owner: a TransformMorph(324009984) submorphs: #() fullBounds: (0@0) corner: (969@462) color: Color white extension: a MorphExtension (987234304) [other: (kmDispatcher -> a KMDispatche...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Source Code Pro text: a Text for 'CGAmortizationSchedule capital: 10000 EUR steps: { { 0.0...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: (0@0) corner: (0@0) defaultColor: a TextColor code: Color white editView: a PluggableTextMorph(596639744) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil TextMorphForEditView(TextMorph)>>basicKeyStroke: Receiver: a TextMorphForEditView(923271168) Arguments and temporary variables: evt: [keystroke '<Cmd-d>'] action: nil Receiver's instance variables: bounds: (0@0) corner: (969@462) owner: a TransformMorph(324009984) submorphs: #() fullBounds: (0@0) corner: (969@462) color: Color white extension: a MorphExtension (987234304) [other: (kmDispatcher -> a KMDispatche...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Source Code Pro text: a Text for 'CGAmortizationSchedule capital: 10000 EUR steps: { { 0.0...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: (0@0) corner: (0@0) defaultColor: a TextColor code: Color white editView: a PluggableTextMorph(596639744) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil [ self basicKeyStroke: evt ] in TextMorphForEditView(TextMorph)>>keyStroke: Receiver: a TextMorphForEditView(923271168) Arguments and temporary variables: evt: [keystroke '<Cmd-d>'] Receiver's instance variables: bounds: (0@0) corner: (969@462) owner: a TransformMorph(324009984) submorphs: #() fullBounds: (0@0) corner: (969@462) color: Color white extension: a MorphExtension (987234304) [other: (kmDispatcher -> a KMDispatche...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Source Code Pro text: a Text for 'CGAmortizationSchedule capital: 10000 EUR steps: { { 0.0...etc... wrapFlag: true paragraph: a Paragraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: (0@0) corner: (0@0) defaultColor: a TextColor code: Color white editView: a PluggableTextMorph(596639744) acceptOnCR: false autoAccept: false acceptOnFocusChange: false selectionColor: nil NECController class>>codeCompletionAround:textMorph:keyStroke: Receiver: NECController Arguments and temporary variables: aBlock: [ self basicKeyStroke: evt ] aTextMorph: a TextMorphForEditView(923271168) evt: [keystroke '<Cmd-d>'] editor: a SmalltalkEditor stringHolder: a Workspace completionAllowed: true controller: a NECController Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#additionals->NECController>>#additionals #captu...etc... format: 142 layout: a FixedLayout instanceVariables: #('model' 'menuMorph' 'editor' 'context' 'inverseMapping' 'c...etc... organization: a ClassOrganization subclasses: {NECWorkspaceController. NOCController} name: #NECController classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'NECompletion-View' traitComposition: {} localSelectors: nil uniqueInstance: a NECController PharoCommonTools(ToolRegistry)>>codeCompletionAround:textMorph:keyStroke: Receiver: a PharoCommonTools Arguments and temporary variables: aBlock: [ self basicKeyStroke: evt ] aTextMorph: a TextMorphForEditView(923271168) evt: [keystroke '<Cmd-d>'] Receiver's instance variables: tools: an IdentityDictionary(#basicInspector->EyeInspector #browser->PackageTre...etc... recentTools: a Dictionary(#basicInspector->a Set(EyeInspector) #browser->a Set(...etc... --- The full stack --- RPackageOrganizer(Object)>>error: RPackageOrganizer>>packageMatchingExtensionName:includingClass: RPackageOrganizer>>systemClassRecategorizedActionFrom: WeakMessageSend>>value: WeakMessageSend>>cull: WeakMessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in WeakAnnouncementSubscription>>deliver: BlockClosure>>on:do: BlockClosure>>on:fork: WeakAnnouncementSubscription>>deliver: [ subscription deliver: anAnnouncement ] in SubscriptionRegistry>>deliver:to:startingAt: BlockClosure>>ifCurtailed: SubscriptionRegistry>>deliver:to:startingAt: SubscriptionRegistry>>deliver:to: SubscriptionRegistry>>deliver: Announcer>>announce: SystemAnnouncer>>announce: SystemAnnouncer>>class:recategorizedFrom:to: CGPhone class(Class)>>category: UndefinedObject>>DoIt OpalCompiler>>evaluate SmalltalkEditor>>evaluateSelectionAndDo: SmalltalkEditor>>evaluateSelection SmalltalkEditor>>doIt SmalltalkEditor>>doIt: SmalltalkEditor(TextEditor)>>performCmdActionsWith:shifted:return: SmalltalkEditor(TextEditor)>>dispatchCommandOn:return: SmalltalkEditor(TextEditor)>>dispatchOn: [ self dispatchOn: aKeyboardEvent ] in SmalltalkEditor(TextEditor)>>keystroke: SmalltalkEditor(TextEditor)>>handleKeystrokeAction: SmalltalkEditor(TextEditor)>>handleEditionAction:fromKeyboardEvent: SmalltalkEditor(TextEditor)>>keystroke: [ editor keystroke: evt ] in TextMorphForEditView(TextMorph)>>basicKeyStroke: TextMorphForEditView(TextMorph)>>handleInteraction: TextMorphForEditView>>handleInteraction: TextMorphForEditView(TextMorph)>>basicKeyStroke: [ self basicKeyStroke: evt ] in TextMorphForEditView(TextMorph)>>keyStroke: NECController class>>codeCompletionAround:textMorph:keyStroke: PharoCommonTools(ToolRegistry)>>codeCompletionAround:textMorph:keyStroke: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - TextMorphForEditView(TextMorph)>>keyStroke: TextMorphForEditView>>keyStroke: TextMorphForEditView(TextMorph)>>handleKeystroke: KeyboardEvent>>sentTo: TextMorphForEditView(Morph)>>handleEvent: TextMorphForEditView(Morph)>>handleFocusEvent: [ ActiveHand := self. ActiveEvent := anEvent. result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self)) ] in HandMorph>>sendFocusEvent:to:clear: BlockClosure>>on:do: WorldMorph(PasteUpMorph)>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendKeyboardEvent: HandMorph>>handleEvent: HandMorph>>processEvents [ :h | ActiveHand := h. h processEvents. ActiveHand := nil ] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: WorldMorph>>doOneCycle [ [ World doOneCycle. Processor yield. false ] whileFalse: [ ] ] in MorphicUIManager>>spawnNewProcess [ self value. Processor terminateActive ] in BlockClosure>>newProcess -------------------------------------------------------------------------------