From: ss To: Pharo-project@lists.gforge.inria.fr Subject: [BUG]FAMIXEnum(Object)>>doesNotUnderstand: #lookUp:
here insert explanation of what you were doing, suspect changes you've made and so forth.
24 May 2011 3:22:18 pm
VM: Mac OS - intel - 1067 - Croquet Closure Cog VM [CoInterpreter VMMaker-oscog.51] Moose Suite 4.4 Image: Pharo1.2.1 [Latest update: #12345]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/ducasse/Workspace/FirstCircle/Moose/StartUp-ClearVue/2011-05-27-Aix-Stef/Moose.app/Contents/Resources Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/ducasse/Library/Preferences/Squeak/Internet/My Squeak
FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: Receiver: Planet in ad_hoc (Type) Arguments and temporary variables: aMessage: lookUp: 'radius()' exception: MessageNotUnderstood: FAMIXEnum>>lookUp: resumeValue: nil Receiver's instance variables: mooseID: 2324 state: a MooseDefaultState sourceAnchor: nil sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'Planet' isStub: false receivingInvocations: an Array(main -> Planet#values() (Invocation)) modifiers: a Set(#isFinal #isPublic) parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() subInheritances: #() methods: an Array(Planet>>surfaceWeight(double) (Method) Planet>>toString() (Me...etc... container: ad_hoc (Namespace) superInheritances: #() attributes: an Array(Planet.radius (Attribute) Planet.mass (Attribute) Planet.G...etc... values: an Array(a FAMIXEnumValue #JUPITER a FAMIXEnumValue #SATURN a FAMIXEnum...etc...
[:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: sureInvokedMtdsSet: surfaceGravity -> self#radius() (Invocation) each: a Set() invokedMtd: nil Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
OrderedCollection>>do: Receiver: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#r...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... index: 3 Receiver's instance variables: array: an Array(nil nil surfaceGravity -> self#radius() (Invocation) surfaceGra...etc... firstIndex: 3 lastIndex: 5
FMMultivalueLink>>do: Receiver: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#radius() (Inv...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... Receiver's instance variables: values: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfa...etc... owner: Planet>>surfaceGravity() (Method) opposite: #sender:
FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: outgoingInvo: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGrav...etc... sureInvokedMtdsSet: a Set() Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
SmallDictionary>>at:ifAbsentPut: Receiver: a SmallDictionary() Arguments and temporary variables: key: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] index: 0 Receiver's instance variables: keys: #(nil nil) values: #(nil nil) size: 0
MooseDefaultState>>cacheAt:ifAbsentPut: Receiver: a MooseDefaultState Arguments and temporary variables: name: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] Receiver's instance variables: attributes: an Array(#privateModel->a MooseModel #'verveine.extractor.java'(582...etc... entity: Planet>>surfaceGravity() (Method) propertyCache: a SmallDictionary('CYCLO'->1 'NOS'->4 #LOC->3) queryCache: a SmallDictionary()
FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
FAMIXMethod>>invokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: each: Planet>>surfaceGravity() (Method) Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
[:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: 442 sum: Planet>>surfaceGravity() (Method) each: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: binaryBlock: Planet>>surfaceGravity() (Method) nextValue: [:sum :each | sum + (aSymbolOrBlock value: each)] each: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection>>do: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: aBlock: [:each | nextValue := binaryBlock value: nextValue value: each] index: 408 Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: thisValue: 0 binaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] nextValue: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: neutral: 0 aBinaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
MooseCustomTask>>basicRun Receiver: a MooseCustomTask Arguments and temporary variables:
Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: [:barValArg | | barVal return newBarSize | barVal := barValArg. retur...etc... bar: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>on:do: Receiver: [result := workBlock value: progress] Arguments and temporary variables: exception: ProgressNotification handlerAction: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph un...etc... handlerActive: true Receiver's instance variables: outerContext: [[result := workBlock value: progress] on: ProgressNotification...etc... startpc: 83 numArgs: 0
[[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>ensure: Receiver: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extr...etc... Arguments and temporary variables: aBlock: [SystemProgressMorph close: progress] complete: nil returnValue: nil Receiver's instance variables: outerContext: ProgressInitiationException>>defaultMorphicAction startpc: 77 numArgs: 0
ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
MorphicUIManager>>progressInitiationExceptionDefaultAction: Receiver: a MorphicUIManager Arguments and temporary variables: anException: ProgressInitiationException: Receiver's instance variables: interactiveParser: nil
ProgressInitiationException>>defaultAction Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
UndefinedObject>>handleSignal: Receiver: nil Arguments and temporary variables: exception: ProgressInitiationException: Receiver's instance variables: nil
MethodContext(ContextPart)>>handleSignal: Receiver: BlockClosure>>on:do: Arguments and temporary variables: exception: ProgressInitiationException: val: nil Receiver's instance variables: sender: PasteUpMorph>>becomeActiveDuring: pc: 17 stackp: 3 method: (BlockClosure>>#on:do: "a CompiledMethod(25427968)") closureOrNil: nil receiver: [aBlock value]
ProgressInitiationException(Exception)>>signal Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException>>display:at:from:to:during: Receiver: ProgressInitiationException: Arguments and temporary variables: argString: 'OverviewPyramid - computing metrics' argPoint: 296@172 argMinVal: 1 argMaxVal: 11 argWorkBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException class>>display:at:from:to:during: Receiver: ProgressInitiationException Arguments and temporary variables: aString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: superclass: Exception methodDict: a MethodDictionary(#defaultAction->(ProgressInitiationException>>#d...etc... format: 150 instanceVariables: #('workBlock' 'maxVal' 'minVal' 'aPoint' 'progressTitle') organization: ('*Morphic' defaultMorphicAction) ('accessing' maxVal minVal poin...etc... subclasses: nil name: #ProgressInitiationException classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'UIManager-Support' traitComposition: {} localSelectors: nil
MorphicUIManager>>displayProgress:at:from:to:during: Receiver: a MorphicUIManager Arguments and temporary variables: titleString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: interactiveParser: nil
[self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
BlockClosure>>ensure: Receiver: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor...etc... Arguments and temporary variables: aBlock: [self tearDown] complete: nil returnValue: nil Receiver's instance variables: outerContext: MooseCustomTask(MooseTask)>>runWithProgress startpc: 65 numArgs: 0
MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
MooseCustomTask class>>runWithProgress:description:length: Receiver: MooseCustomTask Arguments and temporary variables: aBlock: [:bar | allModelMethods := aMooseModel allMethods select: [:each |...etc... aDescription: 'OverviewPyramid - computing metrics' aNumber: 11 Receiver's instance variables: superclass: MooseTask methodDict: a MethodDictionary(#basicRun->(MooseCustomTask>>#basicRun "a Compil...etc... format: 140 instanceVariables: #('computation' 'description' 'length') organization: ('as yet unclassified' basicRun description length with:descripti...etc... subclasses: nil name: #MooseCustomTask classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Moose-Core' traitComposition: {} localSelectors: nil
OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
OverviewPyramidMetrics class>>on: Receiver: OverviewPyramidMetrics Arguments and temporary variables: aMooseModel: a MooseModel #'verveine.extractor.java'(5820) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#ahh->(OverviewPyramidMetrics>>#ahh "a CompiledM...etc... format: 148 instanceVariables: #('nop' 'noc' 'nom' 'loc' 'cyclo' 'fanout' 'calls' 'andc' 'a...etc... organization: ('accessing' ahh: andc: calls: cyclo: fanout: loc: noc: nom: nop:...etc... subclasses: nil name: #OverviewPyramidMetrics classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Famix-Extensions' traitComposition: {} localSelectors: nil
--- The full stack --- FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods OrderedCollection>>do: FMMultivalueLink>>do: FAMIXMethod>>privateSureInvokedMethods [self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>cacheAt:ifAbsentPut: FAMIXMethod>>sureInvokedMethods FAMIXMethod>>invokedMethods [:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: [:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: [:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: OrderedCollection>>do: OrderedCollection(Collection)>>inject:into: FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: FAMIXMethodGroup(MooseGroup)>>sum: [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: MooseCustomTask>>basicRun [:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress [result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>on:do: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>ensure: ProgressInitiationException>>defaultMorphicAction MorphicUIManager>>progressInitiationExceptionDefaultAction: ProgressInitiationException>>defaultAction UndefinedObject>>handleSignal: MethodContext(ContextPart)>>handleSignal: ProgressInitiationException(Exception)>>signal ProgressInitiationException>>display:at:from:to:during: ProgressInitiationException class>>display:at:from:to:during: MorphicUIManager>>displayProgress:at:from:to:during: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress BlockClosure>>ensure: MooseCustomTask(MooseTask)>>runWithProgress MooseCustomTask class>>runWithProgress:description:length: OverviewPyramidMetrics>>model: OverviewPyramidMetrics class>>on: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [OverviewPyramidMetrics on: self] in MooseModel>>overviewPyramidMetrics SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>propertyAt:ifAbsentPut: MooseModel>>overviewPyramidMetrics OverviewPyramid>>initializeWith: OverviewPyramid class>>on: MooseModel>>viewOverviewPyramidMap [:x | self perform: eachPragma selector] in [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)] in [:eachClass | categorized := (Pragma allNamed: #menuItem:category: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)]. simple := (Pragma allNamed: #menuItem: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1)]. categorized , simple] in MooseModel(Object)>>mooseFinderActions BlockClosure>>glamourValueWithArgs: GLMGenericAction(GLMAction)>>actOn: [:ann | ann action actOn: aPresentation] in GLMMorphicListRenderer(GLMMorphicWidgetRenderer)>>installActionsOnUI:fromPresentation: [:each | answer := each valueWithArguments: anArray] in ActionSequence>>valueWithArguments: ActionSequence(SequenceableCollection)>>do: ActionSequence>>valueWithArguments: [:class :actions | (class handles: announcement) ifTrue: [actions valueWithArguments: (Array with: announcement)]] in GLMAnnouncer>>announce: [:assoc | aBlock value: assoc key value: assoc value] in IdentityDictionary(Dictionary)>>keysAndValuesDo: [:each | each ifNotNil: [aBlock value: each]] in IdentityDictionary(Dictionary)>>associationsDo: Array(SequenceableCollection)>>do: IdentityDictionary(Dictionary)>>associationsDo: IdentityDictionary(Dictionary)>>keysAndValuesDo: GLMAnnouncer>>announce: GLMTreeMorphModel>>announce: GLMTreeMorphNodeModel>>executeMenuAction: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: MouseButtonEvent>>sentTo: ToggleMenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: ToggleMenuItemMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuMorph(Morph)>>processEvent:using: MenuMorph(Morph)>>processEvent: MenuMorph>>handleFocusEvent: [ActiveHand := self. ActiveEvent := anEvent. result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear: [aBlock value] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [[World doOneCycle. Processor yield. false] whileFalse. nil] in Project class>>spawnNewProcess [self value. Processor terminateActive] in BlockClosure>>newProcess
Could you please provide a link to the MSE file so that we can reproduce the problem?
Cheers, Doru
On 24 May 2011, at 15:22, Stéphane Ducasse wrote:
From: ss To: Pharo-project@lists.gforge.inria.fr Subject: [BUG]FAMIXEnum(Object)>>doesNotUnderstand: #lookUp:
here insert explanation of what you were doing, suspect changes you've made and so forth.
24 May 2011 3:22:18 pm
VM: Mac OS - intel - 1067 - Croquet Closure Cog VM [CoInterpreter VMMaker-oscog.51] Moose Suite 4.4 Image: Pharo1.2.1 [Latest update: #12345]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/ducasse/Workspace/FirstCircle/Moose/StartUp-ClearVue/2011-05-27-Aix-Stef/Moose.app/Contents/Resources Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/ducasse/Library/Preferences/Squeak/Internet/My Squeak
FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: Receiver: Planet in ad_hoc (Type) Arguments and temporary variables: aMessage: lookUp: 'radius()' exception: MessageNotUnderstood: FAMIXEnum>>lookUp: resumeValue: nil Receiver's instance variables: mooseID: 2324 state: a MooseDefaultState sourceAnchor: nil sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'Planet' isStub: false receivingInvocations: an Array(main -> Planet#values() (Invocation)) modifiers: a Set(#isFinal #isPublic) parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() subInheritances: #() methods: an Array(Planet>>surfaceWeight(double) (Method) Planet>>toString() (Me...etc... container: ad_hoc (Namespace) superInheritances: #() attributes: an Array(Planet.radius (Attribute) Planet.mass (Attribute) Planet.G...etc... values: an Array(a FAMIXEnumValue #JUPITER a FAMIXEnumValue #SATURN a FAMIXEnum...etc...
[:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: sureInvokedMtdsSet: surfaceGravity -> self#radius() (Invocation) each: a Set() invokedMtd: nil Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
OrderedCollection>>do: Receiver: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#r...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... index: 3 Receiver's instance variables: array: an Array(nil nil surfaceGravity -> self#radius() (Invocation) surfaceGra...etc... firstIndex: 3 lastIndex: 5
FMMultivalueLink>>do: Receiver: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#radius() (Inv...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... Receiver's instance variables: values: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfa...etc... owner: Planet>>surfaceGravity() (Method) opposite: #sender:
FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: outgoingInvo: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGrav...etc... sureInvokedMtdsSet: a Set() Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
SmallDictionary>>at:ifAbsentPut: Receiver: a SmallDictionary() Arguments and temporary variables: key: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] index: 0 Receiver's instance variables: keys: #(nil nil) values: #(nil nil) size: 0
MooseDefaultState>>cacheAt:ifAbsentPut: Receiver: a MooseDefaultState Arguments and temporary variables: name: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] Receiver's instance variables: attributes: an Array(#privateModel->a MooseModel #'verveine.extractor.java'(582...etc... entity: Planet>>surfaceGravity() (Method) propertyCache: a SmallDictionary('CYCLO'->1 'NOS'->4 #LOC->3) queryCache: a SmallDictionary()
FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
FAMIXMethod>>invokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: each: Planet>>surfaceGravity() (Method) Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
[:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: 442 sum: Planet>>surfaceGravity() (Method) each: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: binaryBlock: Planet>>surfaceGravity() (Method) nextValue: [:sum :each | sum + (aSymbolOrBlock value: each)] each: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection>>do: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: aBlock: [:each | nextValue := binaryBlock value: nextValue value: each] index: 408 Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: thisValue: 0 binaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] nextValue: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: neutral: 0 aBinaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
MooseCustomTask>>basicRun Receiver: a MooseCustomTask Arguments and temporary variables:
Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: [:barValArg | | barVal return newBarSize | barVal := barValArg. retur...etc... bar: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>on:do: Receiver: [result := workBlock value: progress] Arguments and temporary variables: exception: ProgressNotification handlerAction: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph un...etc... handlerActive: true Receiver's instance variables: outerContext: [[result := workBlock value: progress] on: ProgressNotification...etc... startpc: 83 numArgs: 0
[[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>ensure: Receiver: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extr...etc... Arguments and temporary variables: aBlock: [SystemProgressMorph close: progress] complete: nil returnValue: nil Receiver's instance variables: outerContext: ProgressInitiationException>>defaultMorphicAction startpc: 77 numArgs: 0
ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
MorphicUIManager>>progressInitiationExceptionDefaultAction: Receiver: a MorphicUIManager Arguments and temporary variables: anException: ProgressInitiationException: Receiver's instance variables: interactiveParser: nil
ProgressInitiationException>>defaultAction Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
UndefinedObject>>handleSignal: Receiver: nil Arguments and temporary variables: exception: ProgressInitiationException: Receiver's instance variables: nil
MethodContext(ContextPart)>>handleSignal: Receiver: BlockClosure>>on:do: Arguments and temporary variables: exception: ProgressInitiationException: val: nil Receiver's instance variables: sender: PasteUpMorph>>becomeActiveDuring: pc: 17 stackp: 3 method: (BlockClosure>>#on:do: "a CompiledMethod(25427968)") closureOrNil: nil receiver: [aBlock value]
ProgressInitiationException(Exception)>>signal Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException>>display:at:from:to:during: Receiver: ProgressInitiationException: Arguments and temporary variables: argString: 'OverviewPyramid - computing metrics' argPoint: 296@172 argMinVal: 1 argMaxVal: 11 argWorkBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException class>>display:at:from:to:during: Receiver: ProgressInitiationException Arguments and temporary variables: aString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: superclass: Exception methodDict: a MethodDictionary(#defaultAction->(ProgressInitiationException>>#d...etc... format: 150 instanceVariables: #('workBlock' 'maxVal' 'minVal' 'aPoint' 'progressTitle') organization: ('*Morphic' defaultMorphicAction) ('accessing' maxVal minVal poin...etc... subclasses: nil name: #ProgressInitiationException classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'UIManager-Support' traitComposition: {} localSelectors: nil
MorphicUIManager>>displayProgress:at:from:to:during: Receiver: a MorphicUIManager Arguments and temporary variables: titleString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: interactiveParser: nil
[self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
BlockClosure>>ensure: Receiver: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor...etc... Arguments and temporary variables: aBlock: [self tearDown] complete: nil returnValue: nil Receiver's instance variables: outerContext: MooseCustomTask(MooseTask)>>runWithProgress startpc: 65 numArgs: 0
MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
MooseCustomTask class>>runWithProgress:description:length: Receiver: MooseCustomTask Arguments and temporary variables: aBlock: [:bar | allModelMethods := aMooseModel allMethods select: [:each |...etc... aDescription: 'OverviewPyramid - computing metrics' aNumber: 11 Receiver's instance variables: superclass: MooseTask methodDict: a MethodDictionary(#basicRun->(MooseCustomTask>>#basicRun "a Compil...etc... format: 140 instanceVariables: #('computation' 'description' 'length') organization: ('as yet unclassified' basicRun description length with:descripti...etc... subclasses: nil name: #MooseCustomTask classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Moose-Core' traitComposition: {} localSelectors: nil
OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
OverviewPyramidMetrics class>>on: Receiver: OverviewPyramidMetrics Arguments and temporary variables: aMooseModel: a MooseModel #'verveine.extractor.java'(5820) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#ahh->(OverviewPyramidMetrics>>#ahh "a CompiledM...etc... format: 148 instanceVariables: #('nop' 'noc' 'nom' 'loc' 'cyclo' 'fanout' 'calls' 'andc' 'a...etc... organization: ('accessing' ahh: andc: calls: cyclo: fanout: loc: noc: nom: nop:...etc... subclasses: nil name: #OverviewPyramidMetrics classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Famix-Extensions' traitComposition: {} localSelectors: nil
--- The full stack --- FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods OrderedCollection>>do: FMMultivalueLink>>do: FAMIXMethod>>privateSureInvokedMethods [self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>cacheAt:ifAbsentPut: FAMIXMethod>>sureInvokedMethods FAMIXMethod>>invokedMethods [:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: [:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: [:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: OrderedCollection>>do: OrderedCollection(Collection)>>inject:into: FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: FAMIXMethodGroup(MooseGroup)>>sum: [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: MooseCustomTask>>basicRun [:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress [result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>on:do: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>ensure: ProgressInitiationException>>defaultMorphicAction MorphicUIManager>>progressInitiationExceptionDefaultAction: ProgressInitiationException>>defaultAction UndefinedObject>>handleSignal: MethodContext(ContextPart)>>handleSignal: ProgressInitiationException(Exception)>>signal ProgressInitiationException>>display:at:from:to:during: ProgressInitiationException class>>display:at:from:to:during: MorphicUIManager>>displayProgress:at:from:to:during: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress BlockClosure>>ensure: MooseCustomTask(MooseTask)>>runWithProgress MooseCustomTask class>>runWithProgress:description:length: OverviewPyramidMetrics>>model: OverviewPyramidMetrics class>>on:
- - - - - - - - - - - - - - - - - -
[OverviewPyramidMetrics on: self] in MooseModel>>overviewPyramidMetrics SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>propertyAt:ifAbsentPut: MooseModel>>overviewPyramidMetrics OverviewPyramid>>initializeWith: OverviewPyramid class>>on: MooseModel>>viewOverviewPyramidMap [:x | self perform: eachPragma selector] in [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)] in [:eachClass | categorized := (Pragma allNamed: #menuItem:category: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)]. simple := (Pragma allNamed: #menuItem: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1)]. categorized , simple] in MooseModel(Object)>>mooseFinderActions BlockClosure>>glamourValueWithArgs: GLMGenericAction(GLMAction)>>actOn: [:ann | ann action actOn: aPresentation] in GLMMorphicListRenderer(GLMMorphicWidgetRenderer)>>installActionsOnUI:fromPresentation: [:each | answer := each valueWithArguments: anArray] in ActionSequence>>valueWithArguments: ActionSequence(SequenceableCollection)>>do: ActionSequence>>valueWithArguments: [:class :actions | (class handles: announcement) ifTrue: [actions valueWithArguments: (Array with: announcement)]] in GLMAnnouncer>>announce: [:assoc | aBlock value: assoc key value: assoc value] in IdentityDictionary(Dictionary)>>keysAndValuesDo: [:each | each ifNotNil: [aBlock value: each]] in IdentityDictionary(Dictionary)>>associationsDo: Array(SequenceableCollection)>>do: IdentityDictionary(Dictionary)>>associationsDo: IdentityDictionary(Dictionary)>>keysAndValuesDo: GLMAnnouncer>>announce: GLMTreeMorphModel>>announce: GLMTreeMorphNodeModel>>executeMenuAction: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: MouseButtonEvent>>sentTo: ToggleMenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: ToggleMenuItemMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuMorph(Morph)>>processEvent:using: MenuMorph(Morph)>>processEvent: MenuMorph>>handleFocusEvent: [ActiveHand := self. ActiveEvent := anEvent. result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear: [aBlock value] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [[World doOneCycle. Processor yield. false] whileFalse. nil] in Project class>>spawnNewProcess [self value. Processor terminateActive] in BlockClosure>>newProcess
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"What is more important: To be happy, or to make happy?"
Funny, I do have a DNU problem, but the method is hierarchyNestingLevel
mse file for eclipse available at http://dl.dropbox.com/u/12861461/eclipse.mse.zip
nicolas
PS: I can look at some point, but not right now
----- Mail original -----
De: "Tudor Girba" tudor@tudorgirba.com À: "Moose-related development" moose-dev@iam.unibe.ch Envoyé: Mardi 24 Mai 2011 15:35:00 Objet: [Moose-dev] Re: bringing the overview pyramid on verveineJ model -> DNU Could you please provide a link to the MSE file so that we can reproduce the problem?
Cheers, Doru
On 24 May 2011, at 15:22, Stéphane Ducasse wrote:
From: ss To: Pharo-project@lists.gforge.inria.fr Subject: [BUG]FAMIXEnum(Object)>>doesNotUnderstand: #lookUp:
here insert explanation of what you were doing, suspect changes you've made and so forth.
24 May 2011 3:22:18 pm
VM: Mac OS - intel - 1067 - Croquet Closure Cog VM [CoInterpreter VMMaker-oscog.51] Moose Suite 4.4 Image: Pharo1.2.1 [Latest update: #12345]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/ducasse/Workspace/FirstCircle/Moose/StartUp-ClearVue/2011-05-27-Aix-Stef/Moose.app/Contents/Resources Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/ducasse/Library/Preferences/Squeak/Internet/My Squeak
FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: Receiver: Planet in ad_hoc (Type) Arguments and temporary variables: aMessage: lookUp: 'radius()' exception: MessageNotUnderstood: FAMIXEnum>>lookUp: resumeValue: nil Receiver's instance variables: mooseID: 2324 state: a MooseDefaultState sourceAnchor: nil sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'Planet' isStub: false receivingInvocations: an Array(main -> Planet#values() (Invocation)) modifiers: a Set(#isFinal #isPublic) parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() subInheritances: #() methods: an Array(Planet>>surfaceWeight(double) (Method) Planet>>toString() (Me...etc... container: ad_hoc (Namespace) superInheritances: #() attributes: an Array(Planet.radius (Attribute) Planet.mass (Attribute) Planet.G...etc... values: an Array(a FAMIXEnumValue #JUPITER a FAMIXEnumValue #SATURN a FAMIXEnum...etc...
[:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: sureInvokedMtdsSet: surfaceGravity -> self#radius() (Invocation) each: a Set() invokedMtd: nil Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
OrderedCollection>>do: Receiver: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#r...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... index: 3 Receiver's instance variables: array: an Array(nil nil surfaceGravity -> self#radius() (Invocation) surfaceGra...etc... firstIndex: 3 lastIndex: 5
FMMultivalueLink>>do: Receiver: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#radius() (Inv...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... Receiver's instance variables: values: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfa...etc... owner: Planet>>surfaceGravity() (Method) opposite: #sender:
FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: outgoingInvo: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGrav...etc... sureInvokedMtdsSet: a Set() Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
SmallDictionary>>at:ifAbsentPut: Receiver: a SmallDictionary() Arguments and temporary variables: key: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] index: 0 Receiver's instance variables: keys: #(nil nil) values: #(nil nil) size: 0
MooseDefaultState>>cacheAt:ifAbsentPut: Receiver: a MooseDefaultState Arguments and temporary variables: name: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] Receiver's instance variables: attributes: an Array(#privateModel->a MooseModel #'verveine.extractor.java'(582...etc... entity: Planet>>surfaceGravity() (Method) propertyCache: a SmallDictionary('CYCLO'->1 'NOS'->4 #LOC->3) queryCache: a SmallDictionary()
FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
FAMIXMethod>>invokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: each: Planet>>surfaceGravity() (Method) Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
[:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: 442 sum: Planet>>surfaceGravity() (Method) each: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: binaryBlock: Planet>>surfaceGravity() (Method) nextValue: [:sum :each | sum + (aSymbolOrBlock value: each)] each: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection>>do: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: aBlock: [:each | nextValue := binaryBlock value: nextValue value: each] index: 408 Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: thisValue: 0 binaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] nextValue: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: neutral: 0 aBinaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
MooseCustomTask>>basicRun Receiver: a MooseCustomTask Arguments and temporary variables:
Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: [:barValArg | | barVal return newBarSize | barVal := barValArg. retur...etc... bar: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>on:do: Receiver: [result := workBlock value: progress] Arguments and temporary variables: exception: ProgressNotification handlerAction: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph un...etc... handlerActive: true Receiver's instance variables: outerContext: [[result := workBlock value: progress] on: ProgressNotification...etc... startpc: 83 numArgs: 0
[[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>ensure: Receiver: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extr...etc... Arguments and temporary variables: aBlock: [SystemProgressMorph close: progress] complete: nil returnValue: nil Receiver's instance variables: outerContext: ProgressInitiationException>>defaultMorphicAction startpc: 77 numArgs: 0
ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
MorphicUIManager>>progressInitiationExceptionDefaultAction: Receiver: a MorphicUIManager Arguments and temporary variables: anException: ProgressInitiationException: Receiver's instance variables: interactiveParser: nil
ProgressInitiationException>>defaultAction Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
UndefinedObject>>handleSignal: Receiver: nil Arguments and temporary variables: exception: ProgressInitiationException: Receiver's instance variables: nil
MethodContext(ContextPart)>>handleSignal: Receiver: BlockClosure>>on:do: Arguments and temporary variables: exception: ProgressInitiationException: val: nil Receiver's instance variables: sender: PasteUpMorph>>becomeActiveDuring: pc: 17 stackp: 3 method: (BlockClosure>>#on:do: "a CompiledMethod(25427968)") closureOrNil: nil receiver: [aBlock value]
ProgressInitiationException(Exception)>>signal Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException>>display:at:from:to:during: Receiver: ProgressInitiationException: Arguments and temporary variables: argString: 'OverviewPyramid - computing metrics' argPoint: 296@172 argMinVal: 1 argMaxVal: 11 argWorkBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException class>>display:at:from:to:during: Receiver: ProgressInitiationException Arguments and temporary variables: aString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: superclass: Exception methodDict: a MethodDictionary(#defaultAction->(ProgressInitiationException>>#d...etc... format: 150 instanceVariables: #('workBlock' 'maxVal' 'minVal' 'aPoint' 'progressTitle') organization: ('*Morphic' defaultMorphicAction) ('accessing' maxVal minVal poin...etc... subclasses: nil name: #ProgressInitiationException classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'UIManager-Support' traitComposition: {} localSelectors: nil
MorphicUIManager>>displayProgress:at:from:to:during: Receiver: a MorphicUIManager Arguments and temporary variables: titleString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: interactiveParser: nil
[self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
BlockClosure>>ensure: Receiver: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor...etc... Arguments and temporary variables: aBlock: [self tearDown] complete: nil returnValue: nil Receiver's instance variables: outerContext: MooseCustomTask(MooseTask)>>runWithProgress startpc: 65 numArgs: 0
MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
MooseCustomTask class>>runWithProgress:description:length: Receiver: MooseCustomTask Arguments and temporary variables: aBlock: [:bar | allModelMethods := aMooseModel allMethods select: [:each |...etc... aDescription: 'OverviewPyramid - computing metrics' aNumber: 11 Receiver's instance variables: superclass: MooseTask methodDict: a MethodDictionary(#basicRun->(MooseCustomTask>>#basicRun "a Compil...etc... format: 140 instanceVariables: #('computation' 'description' 'length') organization: ('as yet unclassified' basicRun description length with:descripti...etc... subclasses: nil name: #MooseCustomTask classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Moose-Core' traitComposition: {} localSelectors: nil
OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
OverviewPyramidMetrics class>>on: Receiver: OverviewPyramidMetrics Arguments and temporary variables: aMooseModel: a MooseModel #'verveine.extractor.java'(5820) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#ahh->(OverviewPyramidMetrics>>#ahh "a CompiledM...etc... format: 148 instanceVariables: #('nop' 'noc' 'nom' 'loc' 'cyclo' 'fanout' 'calls' 'andc' 'a...etc... organization: ('accessing' ahh: andc: calls: cyclo: fanout: loc: noc: nom: nop:...etc... subclasses: nil name: #OverviewPyramidMetrics classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Famix-Extensions' traitComposition: {} localSelectors: nil
--- The full stack --- FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods OrderedCollection>>do: FMMultivalueLink>>do: FAMIXMethod>>privateSureInvokedMethods [self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>cacheAt:ifAbsentPut: FAMIXMethod>>sureInvokedMethods FAMIXMethod>>invokedMethods [:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: [:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: [:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: OrderedCollection>>do: OrderedCollection(Collection)>>inject:into: FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: FAMIXMethodGroup(MooseGroup)>>sum: [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: MooseCustomTask>>basicRun [:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress [result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>on:do: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>ensure: ProgressInitiationException>>defaultMorphicAction MorphicUIManager>>progressInitiationExceptionDefaultAction: ProgressInitiationException>>defaultAction UndefinedObject>>handleSignal: MethodContext(ContextPart)>>handleSignal: ProgressInitiationException(Exception)>>signal ProgressInitiationException>>display:at:from:to:during: ProgressInitiationException class>>display:at:from:to:during: MorphicUIManager>>displayProgress:at:from:to:during: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress BlockClosure>>ensure: MooseCustomTask(MooseTask)>>runWithProgress MooseCustomTask class>>runWithProgress:description:length: OverviewPyramidMetrics>>model: OverviewPyramidMetrics class>>on:
- - - - - - - - - - - - - - - - - -
[OverviewPyramidMetrics on: self] in MooseModel>>overviewPyramidMetrics SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>propertyAt:ifAbsentPut: MooseModel>>overviewPyramidMetrics OverviewPyramid>>initializeWith: OverviewPyramid class>>on: MooseModel>>viewOverviewPyramidMap [:x | self perform: eachPragma selector] in [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector];
title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)] in [:eachClass |
categorized := (Pragma allNamed: #menuItem:category: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector];
title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)].
simple := (Pragma allNamed: #menuItem: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector];
title: (eachPragma argumentAt: 1)].
categorized , simple] in MooseModel(Object)>>mooseFinderActions BlockClosure>>glamourValueWithArgs: GLMGenericAction(GLMAction)>>actOn: [:ann | ann action actOn: aPresentation] in GLMMorphicListRenderer(GLMMorphicWidgetRenderer)>>installActionsOnUI:fromPresentation: [:each | answer := each valueWithArguments: anArray] in ActionSequence>>valueWithArguments: ActionSequence(SequenceableCollection)>>do: ActionSequence>>valueWithArguments: [:class :actions | (class handles: announcement) ifTrue: [actions valueWithArguments: (Array with: announcement)]] in GLMAnnouncer>>announce: [:assoc | aBlock value: assoc key value: assoc value] in IdentityDictionary(Dictionary)>>keysAndValuesDo: [:each | each ifNotNil: [aBlock value: each]] in IdentityDictionary(Dictionary)>>associationsDo: Array(SequenceableCollection)>>do: IdentityDictionary(Dictionary)>>associationsDo: IdentityDictionary(Dictionary)>>keysAndValuesDo: GLMAnnouncer>>announce: GLMTreeMorphModel>>announce: GLMTreeMorphNodeModel>>executeMenuAction: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: MouseButtonEvent>>sentTo: ToggleMenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: ToggleMenuItemMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuMorph(Morph)>>processEvent:using: MenuMorph(Morph)>>processEvent: MenuMorph>>handleFocusEvent: [ActiveHand := self. ActiveEvent := anEvent. result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear: [aBlock value] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [[World doOneCycle. Processor yield. false] whileFalse. nil] in Project class>>spawnNewProcess [self value. Processor terminateActive] in BlockClosure>>newProcess
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"What is more important: To be happy, or to make happy?"
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Hi Nicolas,
Thanks. I can reproduce it.
The issue has probably the same root as the one of Stef.
The overview pyramid code uses the navigation API that was mainly tested on models based on Smalltalk. Given that now we have multiple types of FAMIXTypes, not just FAMIXClass, things break because the API is mostly in FAMIXClass, while most of it should probably be in FAMIXType.
Someone should take a look at this :).
Cheers, Doru
On 24 May 2011, at 16:00, Nicolas Anquetil wrote:
Funny, I do have a DNU problem, but the method is hierarchyNestingLevel
mse file for eclipse available at http://dl.dropbox.com/u/12861461/eclipse.mse.zip
nicolas
PS: I can look at some point, but not right now
----- Mail original -----
De: "Tudor Girba" tudor@tudorgirba.com À: "Moose-related development" moose-dev@iam.unibe.ch Envoyé: Mardi 24 Mai 2011 15:35:00 Objet: [Moose-dev] Re: bringing the overview pyramid on verveineJ model -> DNU Could you please provide a link to the MSE file so that we can reproduce the problem?
Cheers, Doru
On 24 May 2011, at 15:22, Stéphane Ducasse wrote:
From: ss To: Pharo-project@lists.gforge.inria.fr Subject: [BUG]FAMIXEnum(Object)>>doesNotUnderstand: #lookUp:
here insert explanation of what you were doing, suspect changes you've made and so forth.
24 May 2011 3:22:18 pm
VM: Mac OS - intel - 1067 - Croquet Closure Cog VM [CoInterpreter VMMaker-oscog.51] Moose Suite 4.4 Image: Pharo1.2.1 [Latest update: #12345]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/ducasse/Workspace/FirstCircle/Moose/StartUp-ClearVue/2011-05-27-Aix-Stef/Moose.app/Contents/Resources Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/ducasse/Library/Preferences/Squeak/Internet/My Squeak
FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: Receiver: Planet in ad_hoc (Type) Arguments and temporary variables: aMessage: lookUp: 'radius()' exception: MessageNotUnderstood: FAMIXEnum>>lookUp: resumeValue: nil Receiver's instance variables: mooseID: 2324 state: a MooseDefaultState sourceAnchor: nil sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'Planet' isStub: false receivingInvocations: an Array(main -> Planet#values() (Invocation)) modifiers: a Set(#isFinal #isPublic) parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() subInheritances: #() methods: an Array(Planet>>surfaceWeight(double) (Method) Planet>>toString() (Me...etc... container: ad_hoc (Namespace) superInheritances: #() attributes: an Array(Planet.radius (Attribute) Planet.mass (Attribute) Planet.G...etc... values: an Array(a FAMIXEnumValue #JUPITER a FAMIXEnumValue #SATURN a FAMIXEnum...etc...
[:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: sureInvokedMtdsSet: surfaceGravity -> self#radius() (Invocation) each: a Set() invokedMtd: nil Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
OrderedCollection>>do: Receiver: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#r...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... index: 3 Receiver's instance variables: array: an Array(nil nil surfaceGravity -> self#radius() (Invocation) surfaceGra...etc... firstIndex: 3 lastIndex: 5
FMMultivalueLink>>do: Receiver: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#radius() (Inv...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... Receiver's instance variables: values: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfa...etc... owner: Planet>>surfaceGravity() (Method) opposite: #sender:
FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: outgoingInvo: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGrav...etc... sureInvokedMtdsSet: a Set() Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
SmallDictionary>>at:ifAbsentPut: Receiver: a SmallDictionary() Arguments and temporary variables: key: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] index: 0 Receiver's instance variables: keys: #(nil nil) values: #(nil nil) size: 0
MooseDefaultState>>cacheAt:ifAbsentPut: Receiver: a MooseDefaultState Arguments and temporary variables: name: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] Receiver's instance variables: attributes: an Array(#privateModel->a MooseModel #'verveine.extractor.java'(582...etc... entity: Planet>>surfaceGravity() (Method) propertyCache: a SmallDictionary('CYCLO'->1 'NOS'->4 #LOC->3) queryCache: a SmallDictionary()
FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
FAMIXMethod>>invokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: each: Planet>>surfaceGravity() (Method) Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
[:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: 442 sum: Planet>>surfaceGravity() (Method) each: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: binaryBlock: Planet>>surfaceGravity() (Method) nextValue: [:sum :each | sum + (aSymbolOrBlock value: each)] each: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection>>do: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: aBlock: [:each | nextValue := binaryBlock value: nextValue value: each] index: 408 Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: thisValue: 0 binaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] nextValue: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: neutral: 0 aBinaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
MooseCustomTask>>basicRun Receiver: a MooseCustomTask Arguments and temporary variables:
Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: [:barValArg | | barVal return newBarSize | barVal := barValArg. retur...etc... bar: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>on:do: Receiver: [result := workBlock value: progress] Arguments and temporary variables: exception: ProgressNotification handlerAction: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph un...etc... handlerActive: true Receiver's instance variables: outerContext: [[result := workBlock value: progress] on: ProgressNotification...etc... startpc: 83 numArgs: 0
[[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>ensure: Receiver: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extr...etc... Arguments and temporary variables: aBlock: [SystemProgressMorph close: progress] complete: nil returnValue: nil Receiver's instance variables: outerContext: ProgressInitiationException>>defaultMorphicAction startpc: 77 numArgs: 0
ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
MorphicUIManager>>progressInitiationExceptionDefaultAction: Receiver: a MorphicUIManager Arguments and temporary variables: anException: ProgressInitiationException: Receiver's instance variables: interactiveParser: nil
ProgressInitiationException>>defaultAction Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
UndefinedObject>>handleSignal: Receiver: nil Arguments and temporary variables: exception: ProgressInitiationException: Receiver's instance variables: nil
MethodContext(ContextPart)>>handleSignal: Receiver: BlockClosure>>on:do: Arguments and temporary variables: exception: ProgressInitiationException: val: nil Receiver's instance variables: sender: PasteUpMorph>>becomeActiveDuring: pc: 17 stackp: 3 method: (BlockClosure>>#on:do: "a CompiledMethod(25427968)") closureOrNil: nil receiver: [aBlock value]
ProgressInitiationException(Exception)>>signal Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException>>display:at:from:to:during: Receiver: ProgressInitiationException: Arguments and temporary variables: argString: 'OverviewPyramid - computing metrics' argPoint: 296@172 argMinVal: 1 argMaxVal: 11 argWorkBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException class>>display:at:from:to:during: Receiver: ProgressInitiationException Arguments and temporary variables: aString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: superclass: Exception methodDict: a MethodDictionary(#defaultAction->(ProgressInitiationException>>#d...etc... format: 150 instanceVariables: #('workBlock' 'maxVal' 'minVal' 'aPoint' 'progressTitle') organization: ('*Morphic' defaultMorphicAction) ('accessing' maxVal minVal poin...etc... subclasses: nil name: #ProgressInitiationException classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'UIManager-Support' traitComposition: {} localSelectors: nil
MorphicUIManager>>displayProgress:at:from:to:during: Receiver: a MorphicUIManager Arguments and temporary variables: titleString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: interactiveParser: nil
[self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
BlockClosure>>ensure: Receiver: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor...etc... Arguments and temporary variables: aBlock: [self tearDown] complete: nil returnValue: nil Receiver's instance variables: outerContext: MooseCustomTask(MooseTask)>>runWithProgress startpc: 65 numArgs: 0
MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
MooseCustomTask class>>runWithProgress:description:length: Receiver: MooseCustomTask Arguments and temporary variables: aBlock: [:bar | allModelMethods := aMooseModel allMethods select: [:each |...etc... aDescription: 'OverviewPyramid - computing metrics' aNumber: 11 Receiver's instance variables: superclass: MooseTask methodDict: a MethodDictionary(#basicRun->(MooseCustomTask>>#basicRun "a Compil...etc... format: 140 instanceVariables: #('computation' 'description' 'length') organization: ('as yet unclassified' basicRun description length with:descripti...etc... subclasses: nil name: #MooseCustomTask classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Moose-Core' traitComposition: {} localSelectors: nil
OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
OverviewPyramidMetrics class>>on: Receiver: OverviewPyramidMetrics Arguments and temporary variables: aMooseModel: a MooseModel #'verveine.extractor.java'(5820) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#ahh->(OverviewPyramidMetrics>>#ahh "a CompiledM...etc... format: 148 instanceVariables: #('nop' 'noc' 'nom' 'loc' 'cyclo' 'fanout' 'calls' 'andc' 'a...etc... organization: ('accessing' ahh: andc: calls: cyclo: fanout: loc: noc: nom: nop:...etc... subclasses: nil name: #OverviewPyramidMetrics classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Famix-Extensions' traitComposition: {} localSelectors: nil
--- The full stack --- FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods OrderedCollection>>do: FMMultivalueLink>>do: FAMIXMethod>>privateSureInvokedMethods [self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>cacheAt:ifAbsentPut: FAMIXMethod>>sureInvokedMethods FAMIXMethod>>invokedMethods [:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: [:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: [:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: OrderedCollection>>do: OrderedCollection(Collection)>>inject:into: FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: FAMIXMethodGroup(MooseGroup)>>sum: [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: MooseCustomTask>>basicRun [:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress [result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>on:do: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>ensure: ProgressInitiationException>>defaultMorphicAction MorphicUIManager>>progressInitiationExceptionDefaultAction: ProgressInitiationException>>defaultAction UndefinedObject>>handleSignal: MethodContext(ContextPart)>>handleSignal: ProgressInitiationException(Exception)>>signal ProgressInitiationException>>display:at:from:to:during: ProgressInitiationException class>>display:at:from:to:during: MorphicUIManager>>displayProgress:at:from:to:during: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress BlockClosure>>ensure: MooseCustomTask(MooseTask)>>runWithProgress MooseCustomTask class>>runWithProgress:description:length: OverviewPyramidMetrics>>model: OverviewPyramidMetrics class>>on:
- - - - - - - - - - - - - - - - - -
[OverviewPyramidMetrics on: self] in MooseModel>>overviewPyramidMetrics SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>propertyAt:ifAbsentPut: MooseModel>>overviewPyramidMetrics OverviewPyramid>>initializeWith: OverviewPyramid class>>on: MooseModel>>viewOverviewPyramidMap [:x | self perform: eachPragma selector] in [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector];
title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)] in [:eachClass |
categorized := (Pragma allNamed: #menuItem:category: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector];
title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)].
simple := (Pragma allNamed: #menuItem: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector];
title: (eachPragma argumentAt: 1)].
categorized , simple] in MooseModel(Object)>>mooseFinderActions BlockClosure>>glamourValueWithArgs: GLMGenericAction(GLMAction)>>actOn: [:ann | ann action actOn: aPresentation] in GLMMorphicListRenderer(GLMMorphicWidgetRenderer)>>installActionsOnUI:fromPresentation: [:each | answer := each valueWithArguments: anArray] in ActionSequence>>valueWithArguments: ActionSequence(SequenceableCollection)>>do: ActionSequence>>valueWithArguments: [:class :actions | (class handles: announcement) ifTrue: [actions valueWithArguments: (Array with: announcement)]] in GLMAnnouncer>>announce: [:assoc | aBlock value: assoc key value: assoc value] in IdentityDictionary(Dictionary)>>keysAndValuesDo: [:each | each ifNotNil: [aBlock value: each]] in IdentityDictionary(Dictionary)>>associationsDo: Array(SequenceableCollection)>>do: IdentityDictionary(Dictionary)>>associationsDo: IdentityDictionary(Dictionary)>>keysAndValuesDo: GLMAnnouncer>>announce: GLMTreeMorphModel>>announce: GLMTreeMorphNodeModel>>executeMenuAction: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: MouseButtonEvent>>sentTo: ToggleMenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: ToggleMenuItemMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuMorph(Morph)>>processEvent:using: MenuMorph(Morph)>>processEvent: MenuMorph>>handleFocusEvent: [ActiveHand := self. ActiveEvent := anEvent. result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear: [aBlock value] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [[World doOneCycle. Processor yield. false] whileFalse. nil] in Project class>>spawnNewProcess [self value. Processor terminateActive] in BlockClosure>>newProcess
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"What is more important: To be happy, or to make happy?"
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"Every successful trip needs a suitable vehicle."
just for your info. I will not use a Java model for my presentation friday because there are DNU popping up a lot. In 10 min clicking I got at least 3 or 4 bugs.
Stef
On May 24, 2011, at 3:35 PM, Tudor Girba wrote:
Could you please provide a link to the MSE file so that we can reproduce the problem?
Cheers, Doru
On 24 May 2011, at 15:22, Stéphane Ducasse wrote:
From: ss To: Pharo-project@lists.gforge.inria.fr Subject: [BUG]FAMIXEnum(Object)>>doesNotUnderstand: #lookUp:
here insert explanation of what you were doing, suspect changes you've made and so forth.
24 May 2011 3:22:18 pm
VM: Mac OS - intel - 1067 - Croquet Closure Cog VM [CoInterpreter VMMaker-oscog.51] Moose Suite 4.4 Image: Pharo1.2.1 [Latest update: #12345]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/ducasse/Workspace/FirstCircle/Moose/StartUp-ClearVue/2011-05-27-Aix-Stef/Moose.app/Contents/Resources Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/ducasse/Library/Preferences/Squeak/Internet/My Squeak
FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: Receiver: Planet in ad_hoc (Type) Arguments and temporary variables: aMessage: lookUp: 'radius()' exception: MessageNotUnderstood: FAMIXEnum>>lookUp: resumeValue: nil Receiver's instance variables: mooseID: 2324 state: a MooseDefaultState sourceAnchor: nil sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'Planet' isStub: false receivingInvocations: an Array(main -> Planet#values() (Invocation)) modifiers: a Set(#isFinal #isPublic) parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() subInheritances: #() methods: an Array(Planet>>surfaceWeight(double) (Method) Planet>>toString() (Me...etc... container: ad_hoc (Namespace) superInheritances: #() attributes: an Array(Planet.radius (Attribute) Planet.mass (Attribute) Planet.G...etc... values: an Array(a FAMIXEnumValue #JUPITER a FAMIXEnumValue #SATURN a FAMIXEnum...etc...
[:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: sureInvokedMtdsSet: surfaceGravity -> self#radius() (Invocation) each: a Set() invokedMtd: nil Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
OrderedCollection>>do: Receiver: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#r...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... index: 3 Receiver's instance variables: array: an Array(nil nil surfaceGravity -> self#radius() (Invocation) surfaceGra...etc... firstIndex: 3 lastIndex: 5
FMMultivalueLink>>do: Receiver: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#radius() (Inv...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... Receiver's instance variables: values: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfa...etc... owner: Planet>>surfaceGravity() (Method) opposite: #sender:
FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: outgoingInvo: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGrav...etc... sureInvokedMtdsSet: a Set() Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
SmallDictionary>>at:ifAbsentPut: Receiver: a SmallDictionary() Arguments and temporary variables: key: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] index: 0 Receiver's instance variables: keys: #(nil nil) values: #(nil nil) size: 0
MooseDefaultState>>cacheAt:ifAbsentPut: Receiver: a MooseDefaultState Arguments and temporary variables: name: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] Receiver's instance variables: attributes: an Array(#privateModel->a MooseModel #'verveine.extractor.java'(582...etc... entity: Planet>>surfaceGravity() (Method) propertyCache: a SmallDictionary('CYCLO'->1 'NOS'->4 #LOC->3) queryCache: a SmallDictionary()
FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
FAMIXMethod>>invokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: each: Planet>>surfaceGravity() (Method) Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
[:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: 442 sum: Planet>>surfaceGravity() (Method) each: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: binaryBlock: Planet>>surfaceGravity() (Method) nextValue: [:sum :each | sum + (aSymbolOrBlock value: each)] each: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection>>do: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: aBlock: [:each | nextValue := binaryBlock value: nextValue value: each] index: 408 Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: thisValue: 0 binaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] nextValue: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: neutral: 0 aBinaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
MooseCustomTask>>basicRun Receiver: a MooseCustomTask Arguments and temporary variables:
Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: [:barValArg | | barVal return newBarSize | barVal := barValArg. retur...etc... bar: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>on:do: Receiver: [result := workBlock value: progress] Arguments and temporary variables: exception: ProgressNotification handlerAction: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph un...etc... handlerActive: true Receiver's instance variables: outerContext: [[result := workBlock value: progress] on: ProgressNotification...etc... startpc: 83 numArgs: 0
[[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>ensure: Receiver: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extr...etc... Arguments and temporary variables: aBlock: [SystemProgressMorph close: progress] complete: nil returnValue: nil Receiver's instance variables: outerContext: ProgressInitiationException>>defaultMorphicAction startpc: 77 numArgs: 0
ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
MorphicUIManager>>progressInitiationExceptionDefaultAction: Receiver: a MorphicUIManager Arguments and temporary variables: anException: ProgressInitiationException: Receiver's instance variables: interactiveParser: nil
ProgressInitiationException>>defaultAction Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
UndefinedObject>>handleSignal: Receiver: nil Arguments and temporary variables: exception: ProgressInitiationException: Receiver's instance variables: nil
MethodContext(ContextPart)>>handleSignal: Receiver: BlockClosure>>on:do: Arguments and temporary variables: exception: ProgressInitiationException: val: nil Receiver's instance variables: sender: PasteUpMorph>>becomeActiveDuring: pc: 17 stackp: 3 method: (BlockClosure>>#on:do: "a CompiledMethod(25427968)") closureOrNil: nil receiver: [aBlock value]
ProgressInitiationException(Exception)>>signal Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException>>display:at:from:to:during: Receiver: ProgressInitiationException: Arguments and temporary variables: argString: 'OverviewPyramid - computing metrics' argPoint: 296@172 argMinVal: 1 argMaxVal: 11 argWorkBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException class>>display:at:from:to:during: Receiver: ProgressInitiationException Arguments and temporary variables: aString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: superclass: Exception methodDict: a MethodDictionary(#defaultAction->(ProgressInitiationException>>#d...etc... format: 150 instanceVariables: #('workBlock' 'maxVal' 'minVal' 'aPoint' 'progressTitle') organization: ('*Morphic' defaultMorphicAction) ('accessing' maxVal minVal poin...etc... subclasses: nil name: #ProgressInitiationException classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'UIManager-Support' traitComposition: {} localSelectors: nil
MorphicUIManager>>displayProgress:at:from:to:during: Receiver: a MorphicUIManager Arguments and temporary variables: titleString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: interactiveParser: nil
[self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
BlockClosure>>ensure: Receiver: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor...etc... Arguments and temporary variables: aBlock: [self tearDown] complete: nil returnValue: nil Receiver's instance variables: outerContext: MooseCustomTask(MooseTask)>>runWithProgress startpc: 65 numArgs: 0
MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
MooseCustomTask class>>runWithProgress:description:length: Receiver: MooseCustomTask Arguments and temporary variables: aBlock: [:bar | allModelMethods := aMooseModel allMethods select: [:each |...etc... aDescription: 'OverviewPyramid - computing metrics' aNumber: 11 Receiver's instance variables: superclass: MooseTask methodDict: a MethodDictionary(#basicRun->(MooseCustomTask>>#basicRun "a Compil...etc... format: 140 instanceVariables: #('computation' 'description' 'length') organization: ('as yet unclassified' basicRun description length with:descripti...etc... subclasses: nil name: #MooseCustomTask classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Moose-Core' traitComposition: {} localSelectors: nil
OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
OverviewPyramidMetrics class>>on: Receiver: OverviewPyramidMetrics Arguments and temporary variables: aMooseModel: a MooseModel #'verveine.extractor.java'(5820) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#ahh->(OverviewPyramidMetrics>>#ahh "a CompiledM...etc... format: 148 instanceVariables: #('nop' 'noc' 'nom' 'loc' 'cyclo' 'fanout' 'calls' 'andc' 'a...etc... organization: ('accessing' ahh: andc: calls: cyclo: fanout: loc: noc: nom: nop:...etc... subclasses: nil name: #OverviewPyramidMetrics classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Famix-Extensions' traitComposition: {} localSelectors: nil
--- The full stack --- FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods OrderedCollection>>do: FMMultivalueLink>>do: FAMIXMethod>>privateSureInvokedMethods [self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>cacheAt:ifAbsentPut: FAMIXMethod>>sureInvokedMethods FAMIXMethod>>invokedMethods [:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: [:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: [:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: OrderedCollection>>do: OrderedCollection(Collection)>>inject:into: FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: FAMIXMethodGroup(MooseGroup)>>sum: [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: MooseCustomTask>>basicRun [:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress [result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>on:do: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>ensure: ProgressInitiationException>>defaultMorphicAction MorphicUIManager>>progressInitiationExceptionDefaultAction: ProgressInitiationException>>defaultAction UndefinedObject>>handleSignal: MethodContext(ContextPart)>>handleSignal: ProgressInitiationException(Exception)>>signal ProgressInitiationException>>display:at:from:to:during: ProgressInitiationException class>>display:at:from:to:during: MorphicUIManager>>displayProgress:at:from:to:during: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress BlockClosure>>ensure: MooseCustomTask(MooseTask)>>runWithProgress MooseCustomTask class>>runWithProgress:description:length: OverviewPyramidMetrics>>model: OverviewPyramidMetrics class>>on:
- - - - - - - - - - - - - - - - - -
[OverviewPyramidMetrics on: self] in MooseModel>>overviewPyramidMetrics SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>propertyAt:ifAbsentPut: MooseModel>>overviewPyramidMetrics OverviewPyramid>>initializeWith: OverviewPyramid class>>on: MooseModel>>viewOverviewPyramidMap [:x | self perform: eachPragma selector] in [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)] in [:eachClass | categorized := (Pragma allNamed: #menuItem:category: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)]. simple := (Pragma allNamed: #menuItem: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1)]. categorized , simple] in MooseModel(Object)>>mooseFinderActions BlockClosure>>glamourValueWithArgs: GLMGenericAction(GLMAction)>>actOn: [:ann | ann action actOn: aPresentation] in GLMMorphicListRenderer(GLMMorphicWidgetRenderer)>>installActionsOnUI:fromPresentation: [:each | answer := each valueWithArguments: anArray] in ActionSequence>>valueWithArguments: ActionSequence(SequenceableCollection)>>do: ActionSequence>>valueWithArguments: [:class :actions | (class handles: announcement) ifTrue: [actions valueWithArguments: (Array with: announcement)]] in GLMAnnouncer>>announce: [:assoc | aBlock value: assoc key value: assoc value] in IdentityDictionary(Dictionary)>>keysAndValuesDo: [:each | each ifNotNil: [aBlock value: each]] in IdentityDictionary(Dictionary)>>associationsDo: Array(SequenceableCollection)>>do: IdentityDictionary(Dictionary)>>associationsDo: IdentityDictionary(Dictionary)>>keysAndValuesDo: GLMAnnouncer>>announce: GLMTreeMorphModel>>announce: GLMTreeMorphNodeModel>>executeMenuAction: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: MouseButtonEvent>>sentTo: ToggleMenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: ToggleMenuItemMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuMorph(Morph)>>processEvent:using: MenuMorph(Morph)>>processEvent: MenuMorph>>handleFocusEvent: [ActiveHand := self. ActiveEvent := anEvent. result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear: [aBlock value] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [[World doOneCycle. Processor yield. false] whileFalse. nil] in Project class>>spawnNewProcess [self value. Processor terminateActive] in BlockClosure>>newProcess
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"What is more important: To be happy, or to make happy?"
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Hi Stef,
Thanks for letting us know. It would be even more useful if you would tell us what the problems were and how to reproduce them.
Cheers, Doru
On 24 May 2011, at 21:27, Stéphane Ducasse wrote:
just for your info. I will not use a Java model for my presentation friday because there are DNU popping up a lot. In 10 min clicking I got at least 3 or 4 bugs.
Stef
On May 24, 2011, at 3:35 PM, Tudor Girba wrote:
Could you please provide a link to the MSE file so that we can reproduce the problem?
Cheers, Doru
On 24 May 2011, at 15:22, Stéphane Ducasse wrote:
From: ss To: Pharo-project@lists.gforge.inria.fr Subject: [BUG]FAMIXEnum(Object)>>doesNotUnderstand: #lookUp:
here insert explanation of what you were doing, suspect changes you've made and so forth.
24 May 2011 3:22:18 pm
VM: Mac OS - intel - 1067 - Croquet Closure Cog VM [CoInterpreter VMMaker-oscog.51] Moose Suite 4.4 Image: Pharo1.2.1 [Latest update: #12345]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/ducasse/Workspace/FirstCircle/Moose/StartUp-ClearVue/2011-05-27-Aix-Stef/Moose.app/Contents/Resources Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/ducasse/Library/Preferences/Squeak/Internet/My Squeak
FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: Receiver: Planet in ad_hoc (Type) Arguments and temporary variables: aMessage: lookUp: 'radius()' exception: MessageNotUnderstood: FAMIXEnum>>lookUp: resumeValue: nil Receiver's instance variables: mooseID: 2324 state: a MooseDefaultState sourceAnchor: nil sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'Planet' isStub: false receivingInvocations: an Array(main -> Planet#values() (Invocation)) modifiers: a Set(#isFinal #isPublic) parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() subInheritances: #() methods: an Array(Planet>>surfaceWeight(double) (Method) Planet>>toString() (Me...etc... container: ad_hoc (Namespace) superInheritances: #() attributes: an Array(Planet.radius (Attribute) Planet.mass (Attribute) Planet.G...etc... values: an Array(a FAMIXEnumValue #JUPITER a FAMIXEnumValue #SATURN a FAMIXEnum...etc...
[:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: sureInvokedMtdsSet: surfaceGravity -> self#radius() (Invocation) each: a Set() invokedMtd: nil Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
OrderedCollection>>do: Receiver: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#r...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... index: 3 Receiver's instance variables: array: an Array(nil nil surfaceGravity -> self#radius() (Invocation) surfaceGra...etc... firstIndex: 3 lastIndex: 5
FMMultivalueLink>>do: Receiver: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#radius() (Inv...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... Receiver's instance variables: values: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfa...etc... owner: Planet>>surfaceGravity() (Method) opposite: #sender:
FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: outgoingInvo: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGrav...etc... sureInvokedMtdsSet: a Set() Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
SmallDictionary>>at:ifAbsentPut: Receiver: a SmallDictionary() Arguments and temporary variables: key: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] index: 0 Receiver's instance variables: keys: #(nil nil) values: #(nil nil) size: 0
MooseDefaultState>>cacheAt:ifAbsentPut: Receiver: a MooseDefaultState Arguments and temporary variables: name: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] Receiver's instance variables: attributes: an Array(#privateModel->a MooseModel #'verveine.extractor.java'(582...etc... entity: Planet>>surfaceGravity() (Method) propertyCache: a SmallDictionary('CYCLO'->1 'NOS'->4 #LOC->3) queryCache: a SmallDictionary()
FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
FAMIXMethod>>invokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: each: Planet>>surfaceGravity() (Method) Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
[:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: 442 sum: Planet>>surfaceGravity() (Method) each: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: binaryBlock: Planet>>surfaceGravity() (Method) nextValue: [:sum :each | sum + (aSymbolOrBlock value: each)] each: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection>>do: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: aBlock: [:each | nextValue := binaryBlock value: nextValue value: each] index: 408 Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: thisValue: 0 binaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] nextValue: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: neutral: 0 aBinaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
MooseCustomTask>>basicRun Receiver: a MooseCustomTask Arguments and temporary variables:
Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: [:barValArg | | barVal return newBarSize | barVal := barValArg. retur...etc... bar: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>on:do: Receiver: [result := workBlock value: progress] Arguments and temporary variables: exception: ProgressNotification handlerAction: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph un...etc... handlerActive: true Receiver's instance variables: outerContext: [[result := workBlock value: progress] on: ProgressNotification...etc... startpc: 83 numArgs: 0
[[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>ensure: Receiver: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extr...etc... Arguments and temporary variables: aBlock: [SystemProgressMorph close: progress] complete: nil returnValue: nil Receiver's instance variables: outerContext: ProgressInitiationException>>defaultMorphicAction startpc: 77 numArgs: 0
ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
MorphicUIManager>>progressInitiationExceptionDefaultAction: Receiver: a MorphicUIManager Arguments and temporary variables: anException: ProgressInitiationException: Receiver's instance variables: interactiveParser: nil
ProgressInitiationException>>defaultAction Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
UndefinedObject>>handleSignal: Receiver: nil Arguments and temporary variables: exception: ProgressInitiationException: Receiver's instance variables: nil
MethodContext(ContextPart)>>handleSignal: Receiver: BlockClosure>>on:do: Arguments and temporary variables: exception: ProgressInitiationException: val: nil Receiver's instance variables: sender: PasteUpMorph>>becomeActiveDuring: pc: 17 stackp: 3 method: (BlockClosure>>#on:do: "a CompiledMethod(25427968)") closureOrNil: nil receiver: [aBlock value]
ProgressInitiationException(Exception)>>signal Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException>>display:at:from:to:during: Receiver: ProgressInitiationException: Arguments and temporary variables: argString: 'OverviewPyramid - computing metrics' argPoint: 296@172 argMinVal: 1 argMaxVal: 11 argWorkBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException class>>display:at:from:to:during: Receiver: ProgressInitiationException Arguments and temporary variables: aString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: superclass: Exception methodDict: a MethodDictionary(#defaultAction->(ProgressInitiationException>>#d...etc... format: 150 instanceVariables: #('workBlock' 'maxVal' 'minVal' 'aPoint' 'progressTitle') organization: ('*Morphic' defaultMorphicAction) ('accessing' maxVal minVal poin...etc... subclasses: nil name: #ProgressInitiationException classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'UIManager-Support' traitComposition: {} localSelectors: nil
MorphicUIManager>>displayProgress:at:from:to:during: Receiver: a MorphicUIManager Arguments and temporary variables: titleString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: interactiveParser: nil
[self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
BlockClosure>>ensure: Receiver: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor...etc... Arguments and temporary variables: aBlock: [self tearDown] complete: nil returnValue: nil Receiver's instance variables: outerContext: MooseCustomTask(MooseTask)>>runWithProgress startpc: 65 numArgs: 0
MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
MooseCustomTask class>>runWithProgress:description:length: Receiver: MooseCustomTask Arguments and temporary variables: aBlock: [:bar | allModelMethods := aMooseModel allMethods select: [:each |...etc... aDescription: 'OverviewPyramid - computing metrics' aNumber: 11 Receiver's instance variables: superclass: MooseTask methodDict: a MethodDictionary(#basicRun->(MooseCustomTask>>#basicRun "a Compil...etc... format: 140 instanceVariables: #('computation' 'description' 'length') organization: ('as yet unclassified' basicRun description length with:descripti...etc... subclasses: nil name: #MooseCustomTask classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Moose-Core' traitComposition: {} localSelectors: nil
OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
OverviewPyramidMetrics class>>on: Receiver: OverviewPyramidMetrics Arguments and temporary variables: aMooseModel: a MooseModel #'verveine.extractor.java'(5820) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#ahh->(OverviewPyramidMetrics>>#ahh "a CompiledM...etc... format: 148 instanceVariables: #('nop' 'noc' 'nom' 'loc' 'cyclo' 'fanout' 'calls' 'andc' 'a...etc... organization: ('accessing' ahh: andc: calls: cyclo: fanout: loc: noc: nom: nop:...etc... subclasses: nil name: #OverviewPyramidMetrics classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Famix-Extensions' traitComposition: {} localSelectors: nil
--- The full stack --- FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods OrderedCollection>>do: FMMultivalueLink>>do: FAMIXMethod>>privateSureInvokedMethods [self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>cacheAt:ifAbsentPut: FAMIXMethod>>sureInvokedMethods FAMIXMethod>>invokedMethods [:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: [:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: [:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: OrderedCollection>>do: OrderedCollection(Collection)>>inject:into: FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: FAMIXMethodGroup(MooseGroup)>>sum: [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: MooseCustomTask>>basicRun [:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress [result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>on:do: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>ensure: ProgressInitiationException>>defaultMorphicAction MorphicUIManager>>progressInitiationExceptionDefaultAction: ProgressInitiationException>>defaultAction UndefinedObject>>handleSignal: MethodContext(ContextPart)>>handleSignal: ProgressInitiationException(Exception)>>signal ProgressInitiationException>>display:at:from:to:during: ProgressInitiationException class>>display:at:from:to:during: MorphicUIManager>>displayProgress:at:from:to:during: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress BlockClosure>>ensure: MooseCustomTask(MooseTask)>>runWithProgress MooseCustomTask class>>runWithProgress:description:length: OverviewPyramidMetrics>>model: OverviewPyramidMetrics class>>on:
- - - - - - - - - - - - - - - - - -
[OverviewPyramidMetrics on: self] in MooseModel>>overviewPyramidMetrics SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>propertyAt:ifAbsentPut: MooseModel>>overviewPyramidMetrics OverviewPyramid>>initializeWith: OverviewPyramid class>>on: MooseModel>>viewOverviewPyramidMap [:x | self perform: eachPragma selector] in [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)] in [:eachClass | categorized := (Pragma allNamed: #menuItem:category: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)]. simple := (Pragma allNamed: #menuItem: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1)]. categorized , simple] in MooseModel(Object)>>mooseFinderActions BlockClosure>>glamourValueWithArgs: GLMGenericAction(GLMAction)>>actOn: [:ann | ann action actOn: aPresentation] in GLMMorphicListRenderer(GLMMorphicWidgetRenderer)>>installActionsOnUI:fromPresentation: [:each | answer := each valueWithArguments: anArray] in ActionSequence>>valueWithArguments: ActionSequence(SequenceableCollection)>>do: ActionSequence>>valueWithArguments: [:class :actions | (class handles: announcement) ifTrue: [actions valueWithArguments: (Array with: announcement)]] in GLMAnnouncer>>announce: [:assoc | aBlock value: assoc key value: assoc value] in IdentityDictionary(Dictionary)>>keysAndValuesDo: [:each | each ifNotNil: [aBlock value: each]] in IdentityDictionary(Dictionary)>>associationsDo: Array(SequenceableCollection)>>do: IdentityDictionary(Dictionary)>>associationsDo: IdentityDictionary(Dictionary)>>keysAndValuesDo: GLMAnnouncer>>announce: GLMTreeMorphModel>>announce: GLMTreeMorphNodeModel>>executeMenuAction: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: MouseButtonEvent>>sentTo: ToggleMenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: ToggleMenuItemMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuMorph(Morph)>>processEvent:using: MenuMorph(Morph)>>processEvent: MenuMorph>>handleFocusEvent: [ActiveHand := self. ActiveEvent := anEvent. result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear: [aBlock value] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [[World doOneCycle. Processor yield. false] whileFalse. nil] in Project class>>spawnNewProcess [self value. Processor terminateActive] in BlockClosure>>newProcess
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"What is more important: To be happy, or to make happy?"
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"Presenting is storytelling."
On May 24, 2011, at 9:45 PM, Tudor Girba wrote:
Hi Stef,
Thanks for letting us know. It would be even more useful if you would tell us what the problems were and how to reproduce them.
I reported the pyramid. After there were in my flow so I closed them. Now I can take 10 min on browsing verveineJ model and produce them. I imagine that somebody has to use this interface. I think that we should all think if we want to succeed or not. I mean yes I can do what I'm told (cyrille), or do my experience (jannik), or fix mondrian (alex) but if nobody spend 1 hour to try to analyse a Java project then we will have bugs.
Stef
Cheers, Doru
On 24 May 2011, at 21:27, Stéphane Ducasse wrote:
just for your info. I will not use a Java model for my presentation friday because there are DNU popping up a lot. In 10 min clicking I got at least 3 or 4 bugs.
Stef
On May 24, 2011, at 3:35 PM, Tudor Girba wrote:
Could you please provide a link to the MSE file so that we can reproduce the problem?
Cheers, Doru
On 24 May 2011, at 15:22, Stéphane Ducasse wrote:
From: ss To: Pharo-project@lists.gforge.inria.fr Subject: [BUG]FAMIXEnum(Object)>>doesNotUnderstand: #lookUp:
here insert explanation of what you were doing, suspect changes you've made and so forth.
24 May 2011 3:22:18 pm
VM: Mac OS - intel - 1067 - Croquet Closure Cog VM [CoInterpreter VMMaker-oscog.51] Moose Suite 4.4 Image: Pharo1.2.1 [Latest update: #12345]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/ducasse/Workspace/FirstCircle/Moose/StartUp-ClearVue/2011-05-27-Aix-Stef/Moose.app/Contents/Resources Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/ducasse/Library/Preferences/Squeak/Internet/My Squeak
FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: Receiver: Planet in ad_hoc (Type) Arguments and temporary variables: aMessage: lookUp: 'radius()' exception: MessageNotUnderstood: FAMIXEnum>>lookUp: resumeValue: nil Receiver's instance variables: mooseID: 2324 state: a MooseDefaultState sourceAnchor: nil sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'Planet' isStub: false receivingInvocations: an Array(main -> Planet#values() (Invocation)) modifiers: a Set(#isFinal #isPublic) parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() subInheritances: #() methods: an Array(Planet>>surfaceWeight(double) (Method) Planet>>toString() (Me...etc... container: ad_hoc (Namespace) superInheritances: #() attributes: an Array(Planet.radius (Attribute) Planet.mass (Attribute) Planet.G...etc... values: an Array(a FAMIXEnumValue #JUPITER a FAMIXEnumValue #SATURN a FAMIXEnum...etc...
[:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: sureInvokedMtdsSet: surfaceGravity -> self#radius() (Invocation) each: a Set() invokedMtd: nil Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
OrderedCollection>>do: Receiver: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#r...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... index: 3 Receiver's instance variables: array: an Array(nil nil surfaceGravity -> self#radius() (Invocation) surfaceGra...etc... firstIndex: 3 lastIndex: 5
FMMultivalueLink>>do: Receiver: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#radius() (Inv...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... Receiver's instance variables: values: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfa...etc... owner: Planet>>surfaceGravity() (Method) opposite: #sender:
FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: outgoingInvo: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGrav...etc... sureInvokedMtdsSet: a Set() Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
SmallDictionary>>at:ifAbsentPut: Receiver: a SmallDictionary() Arguments and temporary variables: key: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] index: 0 Receiver's instance variables: keys: #(nil nil) values: #(nil nil) size: 0
MooseDefaultState>>cacheAt:ifAbsentPut: Receiver: a MooseDefaultState Arguments and temporary variables: name: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] Receiver's instance variables: attributes: an Array(#privateModel->a MooseModel #'verveine.extractor.java'(582...etc... entity: Planet>>surfaceGravity() (Method) propertyCache: a SmallDictionary('CYCLO'->1 'NOS'->4 #LOC->3) queryCache: a SmallDictionary()
FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
FAMIXMethod>>invokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: each: Planet>>surfaceGravity() (Method) Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
[:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: 442 sum: Planet>>surfaceGravity() (Method) each: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: binaryBlock: Planet>>surfaceGravity() (Method) nextValue: [:sum :each | sum + (aSymbolOrBlock value: each)] each: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection>>do: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: aBlock: [:each | nextValue := binaryBlock value: nextValue value: each] index: 408 Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: thisValue: 0 binaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] nextValue: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: neutral: 0 aBinaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
MooseCustomTask>>basicRun Receiver: a MooseCustomTask Arguments and temporary variables:
Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: [:barValArg | | barVal return newBarSize | barVal := barValArg. retur...etc... bar: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>on:do: Receiver: [result := workBlock value: progress] Arguments and temporary variables: exception: ProgressNotification handlerAction: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph un...etc... handlerActive: true Receiver's instance variables: outerContext: [[result := workBlock value: progress] on: ProgressNotification...etc... startpc: 83 numArgs: 0
[[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>ensure: Receiver: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extr...etc... Arguments and temporary variables: aBlock: [SystemProgressMorph close: progress] complete: nil returnValue: nil Receiver's instance variables: outerContext: ProgressInitiationException>>defaultMorphicAction startpc: 77 numArgs: 0
ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
MorphicUIManager>>progressInitiationExceptionDefaultAction: Receiver: a MorphicUIManager Arguments and temporary variables: anException: ProgressInitiationException: Receiver's instance variables: interactiveParser: nil
ProgressInitiationException>>defaultAction Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
UndefinedObject>>handleSignal: Receiver: nil Arguments and temporary variables: exception: ProgressInitiationException: Receiver's instance variables: nil
MethodContext(ContextPart)>>handleSignal: Receiver: BlockClosure>>on:do: Arguments and temporary variables: exception: ProgressInitiationException: val: nil Receiver's instance variables: sender: PasteUpMorph>>becomeActiveDuring: pc: 17 stackp: 3 method: (BlockClosure>>#on:do: "a CompiledMethod(25427968)") closureOrNil: nil receiver: [aBlock value]
ProgressInitiationException(Exception)>>signal Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException>>display:at:from:to:during: Receiver: ProgressInitiationException: Arguments and temporary variables: argString: 'OverviewPyramid - computing metrics' argPoint: 296@172 argMinVal: 1 argMaxVal: 11 argWorkBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException class>>display:at:from:to:during: Receiver: ProgressInitiationException Arguments and temporary variables: aString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: superclass: Exception methodDict: a MethodDictionary(#defaultAction->(ProgressInitiationException>>#d...etc... format: 150 instanceVariables: #('workBlock' 'maxVal' 'minVal' 'aPoint' 'progressTitle') organization: ('*Morphic' defaultMorphicAction) ('accessing' maxVal minVal poin...etc... subclasses: nil name: #ProgressInitiationException classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'UIManager-Support' traitComposition: {} localSelectors: nil
MorphicUIManager>>displayProgress:at:from:to:during: Receiver: a MorphicUIManager Arguments and temporary variables: titleString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: interactiveParser: nil
[self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
BlockClosure>>ensure: Receiver: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor...etc... Arguments and temporary variables: aBlock: [self tearDown] complete: nil returnValue: nil Receiver's instance variables: outerContext: MooseCustomTask(MooseTask)>>runWithProgress startpc: 65 numArgs: 0
MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
MooseCustomTask class>>runWithProgress:description:length: Receiver: MooseCustomTask Arguments and temporary variables: aBlock: [:bar | allModelMethods := aMooseModel allMethods select: [:each |...etc... aDescription: 'OverviewPyramid - computing metrics' aNumber: 11 Receiver's instance variables: superclass: MooseTask methodDict: a MethodDictionary(#basicRun->(MooseCustomTask>>#basicRun "a Compil...etc... format: 140 instanceVariables: #('computation' 'description' 'length') organization: ('as yet unclassified' basicRun description length with:descripti...etc... subclasses: nil name: #MooseCustomTask classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Moose-Core' traitComposition: {} localSelectors: nil
OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
OverviewPyramidMetrics class>>on: Receiver: OverviewPyramidMetrics Arguments and temporary variables: aMooseModel: a MooseModel #'verveine.extractor.java'(5820) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#ahh->(OverviewPyramidMetrics>>#ahh "a CompiledM...etc... format: 148 instanceVariables: #('nop' 'noc' 'nom' 'loc' 'cyclo' 'fanout' 'calls' 'andc' 'a...etc... organization: ('accessing' ahh: andc: calls: cyclo: fanout: loc: noc: nom: nop:...etc... subclasses: nil name: #OverviewPyramidMetrics classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Famix-Extensions' traitComposition: {} localSelectors: nil
--- The full stack --- FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods OrderedCollection>>do: FMMultivalueLink>>do: FAMIXMethod>>privateSureInvokedMethods [self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>cacheAt:ifAbsentPut: FAMIXMethod>>sureInvokedMethods FAMIXMethod>>invokedMethods [:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: [:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: [:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: OrderedCollection>>do: OrderedCollection(Collection)>>inject:into: FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: FAMIXMethodGroup(MooseGroup)>>sum: [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: MooseCustomTask>>basicRun [:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress [result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>on:do: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>ensure: ProgressInitiationException>>defaultMorphicAction MorphicUIManager>>progressInitiationExceptionDefaultAction: ProgressInitiationException>>defaultAction UndefinedObject>>handleSignal: MethodContext(ContextPart)>>handleSignal: ProgressInitiationException(Exception)>>signal ProgressInitiationException>>display:at:from:to:during: ProgressInitiationException class>>display:at:from:to:during: MorphicUIManager>>displayProgress:at:from:to:during: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress BlockClosure>>ensure: MooseCustomTask(MooseTask)>>runWithProgress MooseCustomTask class>>runWithProgress:description:length: OverviewPyramidMetrics>>model: OverviewPyramidMetrics class>>on:
- - - - - - - - - - - - - - - - - -
[OverviewPyramidMetrics on: self] in MooseModel>>overviewPyramidMetrics SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>propertyAt:ifAbsentPut: MooseModel>>overviewPyramidMetrics OverviewPyramid>>initializeWith: OverviewPyramid class>>on: MooseModel>>viewOverviewPyramidMap [:x | self perform: eachPragma selector] in [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)] in [:eachClass | categorized := (Pragma allNamed: #menuItem:category: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)]. simple := (Pragma allNamed: #menuItem: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1)]. categorized , simple] in MooseModel(Object)>>mooseFinderActions BlockClosure>>glamourValueWithArgs: GLMGenericAction(GLMAction)>>actOn: [:ann | ann action actOn: aPresentation] in GLMMorphicListRenderer(GLMMorphicWidgetRenderer)>>installActionsOnUI:fromPresentation: [:each | answer := each valueWithArguments: anArray] in ActionSequence>>valueWithArguments: ActionSequence(SequenceableCollection)>>do: ActionSequence>>valueWithArguments: [:class :actions | (class handles: announcement) ifTrue: [actions valueWithArguments: (Array with: announcement)]] in GLMAnnouncer>>announce: [:assoc | aBlock value: assoc key value: assoc value] in IdentityDictionary(Dictionary)>>keysAndValuesDo: [:each | each ifNotNil: [aBlock value: each]] in IdentityDictionary(Dictionary)>>associationsDo: Array(SequenceableCollection)>>do: IdentityDictionary(Dictionary)>>associationsDo: IdentityDictionary(Dictionary)>>keysAndValuesDo: GLMAnnouncer>>announce: GLMTreeMorphModel>>announce: GLMTreeMorphNodeModel>>executeMenuAction: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: MouseButtonEvent>>sentTo: ToggleMenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: ToggleMenuItemMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuMorph(Morph)>>processEvent:using: MenuMorph(Morph)>>processEvent: MenuMorph>>handleFocusEvent: [ActiveHand := self. ActiveEvent := anEvent. result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear: [aBlock value] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [[World doOneCycle. Processor yield. false] whileFalse. nil] in Project class>>spawnNewProcess [self value. Processor terminateActive] in BlockClosure>>newProcess
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"What is more important: To be happy, or to make happy?"
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"Presenting is storytelling."
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Hi Stef,
On 24 May 2011, at 22:49, Stéphane Ducasse wrote:
On May 24, 2011, at 9:45 PM, Tudor Girba wrote:
Hi Stef,
Thanks for letting us know. It would be even more useful if you would tell us what the problems were and how to reproduce them.
I reported the pyramid. After there were in my flow so I closed them. Now I can take 10 min on browsing verveineJ model and produce them. I imagine that somebody has to use this interface. I think that we should all think if we want to succeed or not. I mean yes I can do what I'm told (cyrille), or do my experience (jannik), or fix mondrian (alex) but if nobody spend 1 hour to try to analyse a Java project then we will have bugs.
I know. There were recent changes that had unexpected effects and that were not captured in tests. This is not good and this is why I said that we should look into the API which seems to crash because of the methods that are in FAMIXClass instead of FAMIXType.
Cheers, Doru
Stef
Cheers, Doru
On 24 May 2011, at 21:27, Stéphane Ducasse wrote:
just for your info. I will not use a Java model for my presentation friday because there are DNU popping up a lot. In 10 min clicking I got at least 3 or 4 bugs.
Stef
On May 24, 2011, at 3:35 PM, Tudor Girba wrote:
Could you please provide a link to the MSE file so that we can reproduce the problem?
Cheers, Doru
On 24 May 2011, at 15:22, Stéphane Ducasse wrote:
From: ss To: Pharo-project@lists.gforge.inria.fr Subject: [BUG]FAMIXEnum(Object)>>doesNotUnderstand: #lookUp:
here insert explanation of what you were doing, suspect changes you've made and so forth.
24 May 2011 3:22:18 pm
VM: Mac OS - intel - 1067 - Croquet Closure Cog VM [CoInterpreter VMMaker-oscog.51] Moose Suite 4.4 Image: Pharo1.2.1 [Latest update: #12345]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/ducasse/Workspace/FirstCircle/Moose/StartUp-ClearVue/2011-05-27-Aix-Stef/Moose.app/Contents/Resources Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/ducasse/Library/Preferences/Squeak/Internet/My Squeak
FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: Receiver: Planet in ad_hoc (Type) Arguments and temporary variables: aMessage: lookUp: 'radius()' exception: MessageNotUnderstood: FAMIXEnum>>lookUp: resumeValue: nil Receiver's instance variables: mooseID: 2324 state: a MooseDefaultState sourceAnchor: nil sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'Planet' isStub: false receivingInvocations: an Array(main -> Planet#values() (Invocation)) modifiers: a Set(#isFinal #isPublic) parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() subInheritances: #() methods: an Array(Planet>>surfaceWeight(double) (Method) Planet>>toString() (Me...etc... container: ad_hoc (Namespace) superInheritances: #() attributes: an Array(Planet.radius (Attribute) Planet.mass (Attribute) Planet.G...etc... values: an Array(a FAMIXEnumValue #JUPITER a FAMIXEnumValue #SATURN a FAMIXEnum...etc...
[:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: sureInvokedMtdsSet: surfaceGravity -> self#radius() (Invocation) each: a Set() invokedMtd: nil Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
OrderedCollection>>do: Receiver: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#r...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... index: 3 Receiver's instance variables: array: an Array(nil nil surfaceGravity -> self#radius() (Invocation) surfaceGra...etc... firstIndex: 3 lastIndex: 5
FMMultivalueLink>>do: Receiver: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGravity -> self#radius() (Inv...etc... Arguments and temporary variables: aBlock: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd :=...etc... Receiver's instance variables: values: an OrderedCollection(surfaceGravity -> self#radius() (Invocation) surfa...etc... owner: Planet>>surfaceGravity() (Method) opposite: #sender:
FAMIXMethod>>privateSureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables: outgoingInvo: an Array(surfaceGravity -> self#radius() (Invocation) surfaceGrav...etc... sureInvokedMtdsSet: a Set() Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
SmallDictionary>>at:ifAbsentPut: Receiver: a SmallDictionary() Arguments and temporary variables: key: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] index: 0 Receiver's instance variables: keys: #(nil nil) values: #(nil nil) size: 0
MooseDefaultState>>cacheAt:ifAbsentPut: Receiver: a MooseDefaultState Arguments and temporary variables: name: #sureInvokedMethods aBlock: [self privateSureInvokedMethods] Receiver's instance variables: attributes: an Array(#privateModel->a MooseModel #'verveine.extractor.java'(582...etc... entity: Planet>>surfaceGravity() (Method) propertyCache: a SmallDictionary('CYCLO'->1 'NOS'->4 #LOC->3) queryCache: a SmallDictionary()
FAMIXMethod>>sureInvokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
FAMIXMethod>>invokedMethods Receiver: Planet>>surfaceGravity() (Method) Arguments and temporary variables:
Receiver's instance variables: mooseID: 3985 state: a MooseDefaultState sourceAnchor: a FAMIXFileAnchor #'/Users/ducasse/Workspace/FirstCircle/Moose/St...etc... sourceLanguage: nil comments: #() declaredSourceLanguage: nil name: 'surfaceGravity' isStub: false receivingInvocations: #() modifiers: a Set() parentPackage: nil outgoingReferences: #() types: #() incomingReferences: #() outgoingInvocations: an Array(surfaceGravity -> self#radius() (Invocation) surf...etc... incomingInvocations: an Array(surfaceWeight -> self#surfaceGravity() (Invocatio...etc... localVariables: #() parameters: #() signature: 'surfaceGravity()' accesses: an Array(surfaceGravity -> G (Access)) declaredType: double (Type) kind: nil parentType: Planet in ad_hoc (Type)
[:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: each: Planet>>surfaceGravity() (Method) Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
[:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: 442 sum: Planet>>surfaceGravity() (Method) each: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: binaryBlock: Planet>>surfaceGravity() (Method) nextValue: [:sum :each | sum + (aSymbolOrBlock value: each)] each: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection>>do: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: aBlock: [:each | nextValue := binaryBlock value: nextValue value: each] index: 408 Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
OrderedCollection(Collection)>>inject:into: Receiver: an OrderedCollection(Dictionary>>Dictionary(Repository) (Method) VerveineVisitor>>endVisit...etc... Arguments and temporary variables: thisValue: 0 binaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] nextValue: #(442) Receiver's instance variables: array: an Array(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil...etc... firstIndex: 333 lastIndex: 570
FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: neutral: 0 aBinaryBlock: [:sum :each | sum + (aSymbolOrBlock value: each)] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
FAMIXMethodGroup(MooseGroup)>>sum: Receiver: Group (238 FAMIXMethods) Arguments and temporary variables: aSymbolOrBlock: [:each | each invokedMethods size] Receiver's instance variables: mooseID: 13709 state: a MooseDefaultState storage: a MooseGroupRuntimeStorage(Dictionary>>Dictionary(Repository) (Method)...etc...
[:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
MooseCustomTask>>basicRun Receiver: a MooseCustomTask Arguments and temporary variables:
Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: [:barValArg | | barVal return newBarSize | barVal := barValArg. retur...etc... bar: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
[result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>on:do: Receiver: [result := workBlock value: progress] Arguments and temporary variables: exception: ProgressNotification handlerAction: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph un...etc... handlerActive: true Receiver's instance variables: outerContext: [[result := workBlock value: progress] on: ProgressNotification...etc... startpc: 83 numArgs: 0
[[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
BlockClosure>>ensure: Receiver: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extr...etc... Arguments and temporary variables: aBlock: [SystemProgressMorph close: progress] complete: nil returnValue: nil Receiver's instance variables: outerContext: ProgressInitiationException>>defaultMorphicAction startpc: 77 numArgs: 0
ProgressInitiationException>>defaultMorphicAction Receiver: ProgressInitiationException: Arguments and temporary variables: progress: [:barValArg | | barVal return newBarSize | barVal := barValArg. ret...etc... result: #(nil) Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
MorphicUIManager>>progressInitiationExceptionDefaultAction: Receiver: a MorphicUIManager Arguments and temporary variables: anException: ProgressInitiationException: Receiver's instance variables: interactiveParser: nil
ProgressInitiationException>>defaultAction Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
UndefinedObject>>handleSignal: Receiver: nil Arguments and temporary variables: exception: ProgressInitiationException: Receiver's instance variables: nil
MethodContext(ContextPart)>>handleSignal: Receiver: BlockClosure>>on:do: Arguments and temporary variables: exception: ProgressInitiationException: val: nil Receiver's instance variables: sender: PasteUpMorph>>becomeActiveDuring: pc: 17 stackp: 3 method: (BlockClosure>>#on:do: "a CompiledMethod(25427968)") closureOrNil: nil receiver: [aBlock value]
ProgressInitiationException(Exception)>>signal Receiver: ProgressInitiationException: Arguments and temporary variables:
Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException>>display:at:from:to:during: Receiver: ProgressInitiationException: Arguments and temporary variables: argString: 'OverviewPyramid - computing metrics' argPoint: 296@172 argMinVal: 1 argMaxVal: 11 argWorkBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: messageText: nil tag: nil signalContext: ProgressInitiationException(Exception)>>signal handlerContext: nil outerContext: nil workBlock: [:bar | progBar := bar. result := self basicRun] maxVal: 11 minVal: 1 aPoint: 296@172 progressTitle: 'OverviewPyramid - computing metrics'
ProgressInitiationException class>>display:at:from:to:during: Receiver: ProgressInitiationException Arguments and temporary variables: aString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: superclass: Exception methodDict: a MethodDictionary(#defaultAction->(ProgressInitiationException>>#d...etc... format: 150 instanceVariables: #('workBlock' 'maxVal' 'minVal' 'aPoint' 'progressTitle') organization: ('*Morphic' defaultMorphicAction) ('accessing' maxVal minVal poin...etc... subclasses: nil name: #ProgressInitiationException classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'UIManager-Support' traitComposition: {} localSelectors: nil
MorphicUIManager>>displayProgress:at:from:to:during: Receiver: a MorphicUIManager Arguments and temporary variables: titleString: 'OverviewPyramid - computing metrics' aPoint: 296@172 minVal: 1 maxVal: 11 workBlock: [:bar | progBar := bar. result := self basicRun] Receiver's instance variables: interactiveParser: nil
[self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
BlockClosure>>ensure: Receiver: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor...etc... Arguments and temporary variables: aBlock: [self tearDown] complete: nil returnValue: nil Receiver's instance variables: outerContext: MooseCustomTask(MooseTask)>>runWithProgress startpc: 65 numArgs: 0
MooseCustomTask(MooseTask)>>runWithProgress Receiver: a MooseCustomTask Arguments and temporary variables: result: #(nil) Receiver's instance variables: progBar: [:barValArg | | barVal return newBarSize | barVal := barValArg. retu...etc... nb: 8 computation: [:bar | allModelMethods := aMooseModel allMethods select: [:e...etc... description: 'OverviewPyramid - computing metrics' length: 11
MooseCustomTask class>>runWithProgress:description:length: Receiver: MooseCustomTask Arguments and temporary variables: aBlock: [:bar | allModelMethods := aMooseModel allMethods select: [:each |...etc... aDescription: 'OverviewPyramid - computing metrics' aNumber: 11 Receiver's instance variables: superclass: MooseTask methodDict: a MethodDictionary(#basicRun->(MooseCustomTask>>#basicRun "a Compil...etc... format: 140 instanceVariables: #('computation' 'description' 'length') organization: ('as yet unclassified' basicRun description length with:descripti...etc... subclasses: nil name: #MooseCustomTask classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Moose-Core' traitComposition: {} localSelectors: nil
OverviewPyramidMetrics>>model: Receiver: an OverviewPyramidMetrics Arguments and temporary variables: <<error during printing> Receiver's instance variables: nop: 0 noc: 27 nom: 238 loc: 4230 cyclo: 760 fanout: 81 calls: nil andc: nil ahh: nil
OverviewPyramidMetrics class>>on: Receiver: OverviewPyramidMetrics Arguments and temporary variables: aMooseModel: a MooseModel #'verveine.extractor.java'(5820) Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#ahh->(OverviewPyramidMetrics>>#ahh "a CompiledM...etc... format: 148 instanceVariables: #('nop' 'noc' 'nom' 'loc' 'cyclo' 'fanout' 'calls' 'andc' 'a...etc... organization: ('accessing' ahh: andc: calls: cyclo: fanout: loc: noc: nom: nop:...etc... subclasses: nil name: #OverviewPyramidMetrics classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Famix-Extensions' traitComposition: {} localSelectors: nil
--- The full stack --- FAMIXEnum(Object)>>doesNotUnderstand: #lookUp: [:each | | invokedMtd | each isASureInvocation ifTrue: [invokedMtd := each getReceivingFAMIXClass lookUp: each signature. invokedMtd isNil ifFalse: [(invokedMtd isAbstract or: [invokedMtd = self]) ifFalse: [sureInvokedMtdsSet add: invokedMtd]]]] in FAMIXMethod>>privateSureInvokedMethods OrderedCollection>>do: FMMultivalueLink>>do: FAMIXMethod>>privateSureInvokedMethods [self privateSureInvokedMethods] in FAMIXMethod>>sureInvokedMethods SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>cacheAt:ifAbsentPut: FAMIXMethod>>sureInvokedMethods FAMIXMethod>>invokedMethods [:each | each invokedMethods size] in [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: [:sum :each | sum + (aSymbolOrBlock value: each)] in FAMIXMethodGroup(MooseGroup)>>sum: [:each | nextValue := binaryBlock value: nextValue value: each] in OrderedCollection(Collection)>>inject:into: OrderedCollection>>do: OrderedCollection(Collection)>>inject:into: FAMIXMethodGroup(MooseAbstractGroup)>>inject:into: FAMIXMethodGroup(MooseGroup)>>sum: [:bar | allModelMethods := aMooseModel allMethods select: [:each | each isStub not]. bar increment. allModelClasses := aMooseModel allModelClasses. bar increment. nop := aMooseModel allModelPackages size. bar increment. noc := allModelClasses size. bar increment. nom := allModelMethods size. bar increment. loc := allModelMethods sum: #numberOfLinesOfCode. bar increment. cyclo := allModelMethods sum: #cyclomaticComplexity. bar increment. fanout := allModelClasses sum: #fanOut. bar increment. calls := allModelMethods sum: [:each | each invokedMethods size]. bar increment. andc := (allModelClasses sum: [:class | class directSubclasses size]) / noc. bar increment. ahh := allModelClasses average: #hierarchyNestingLevel. bar increment] in OverviewPyramidMetrics>>model: MooseCustomTask>>basicRun [:bar | progBar := bar. result := self basicRun] in [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress [result := workBlock value: progress] in [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>on:do: [[result := workBlock value: progress] on: ProgressNotification do: [:ex | ex extraParam isString ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put: ex extraParam]. ex resume]] in ProgressInitiationException>>defaultMorphicAction BlockClosure>>ensure: ProgressInitiationException>>defaultMorphicAction MorphicUIManager>>progressInitiationExceptionDefaultAction: ProgressInitiationException>>defaultAction UndefinedObject>>handleSignal: MethodContext(ContextPart)>>handleSignal: ProgressInitiationException(Exception)>>signal ProgressInitiationException>>display:at:from:to:during: ProgressInitiationException class>>display:at:from:to:during: MorphicUIManager>>displayProgress:at:from:to:during: [self setUp. nb := 0. UIManager default displayProgress: self description at: Sensor cursorPoint from: 1 to: self length during: [:bar | progBar := bar. result := self basicRun]] in MooseCustomTask(MooseTask)>>runWithProgress BlockClosure>>ensure: MooseCustomTask(MooseTask)>>runWithProgress MooseCustomTask class>>runWithProgress:description:length: OverviewPyramidMetrics>>model: OverviewPyramidMetrics class>>on:
- - - - - - - - - - - - - - - - - -
[OverviewPyramidMetrics on: self] in MooseModel>>overviewPyramidMetrics SmallDictionary>>at:ifAbsentPut: MooseDefaultState>>propertyAt:ifAbsentPut: MooseModel>>overviewPyramidMetrics OverviewPyramid>>initializeWith: OverviewPyramid class>>on: MooseModel>>viewOverviewPyramidMap [:x | self perform: eachPragma selector] in [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)] in [:eachClass | categorized := (Pragma allNamed: #menuItem:category: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1); category: (eachPragma argumentAt: 2)]. simple := (Pragma allNamed: #menuItem: in: eachClass) collect: [:eachPragma | GLMGenericAction new action: [:x | self perform: eachPragma selector]; title: (eachPragma argumentAt: 1)]. categorized , simple] in MooseModel(Object)>>mooseFinderActions BlockClosure>>glamourValueWithArgs: GLMGenericAction(GLMAction)>>actOn: [:ann | ann action actOn: aPresentation] in GLMMorphicListRenderer(GLMMorphicWidgetRenderer)>>installActionsOnUI:fromPresentation: [:each | answer := each valueWithArguments: anArray] in ActionSequence>>valueWithArguments: ActionSequence(SequenceableCollection)>>do: ActionSequence>>valueWithArguments: [:class :actions | (class handles: announcement) ifTrue: [actions valueWithArguments: (Array with: announcement)]] in GLMAnnouncer>>announce: [:assoc | aBlock value: assoc key value: assoc value] in IdentityDictionary(Dictionary)>>keysAndValuesDo: [:each | each ifNotNil: [aBlock value: each]] in IdentityDictionary(Dictionary)>>associationsDo: Array(SequenceableCollection)>>do: IdentityDictionary(Dictionary)>>associationsDo: IdentityDictionary(Dictionary)>>keysAndValuesDo: GLMAnnouncer>>announce: GLMTreeMorphModel>>announce: GLMTreeMorphNodeModel>>executeMenuAction: [| selArgCount | (selArgCount := selector numArgs) = 0 ifTrue: [target perform: selector] ifFalse: [selArgCount = arguments size ifTrue: [target perform: selector withArguments: arguments] ifFalse: [target perform: selector withArguments: (arguments copyWith: evt)]]] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: BlockClosure>>ensure: CursorWithMask(Cursor)>>showWhile: ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent: ToggleMenuItemMorph(MenuItemMorph)>>mouseUp: ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp: MouseButtonEvent>>sentTo: ToggleMenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: ToggleMenuItemMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuMorph(Morph)>>processEvent:using: MenuMorph(Morph)>>processEvent: MenuMorph>>handleFocusEvent: [ActiveHand := self. ActiveEvent := anEvent. result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self))] in HandMorph>>sendFocusEvent:to:clear: [aBlock value] in PasteUpMorph>>becomeActiveDuring: BlockClosure>>on:do: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendMouseEvent: HandMorph>>handleEvent: HandMorph>>processEvents [:h | ActiveHand := h. h processEvents. ActiveHand := nil] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [[World doOneCycle. Processor yield. false] whileFalse. nil] in Project class>>spawnNewProcess [self value. Processor terminateActive] in BlockClosure>>newProcess
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"What is more important: To be happy, or to make happy?"
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"Presenting is storytelling."
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"Every successful trip needs a suitable vehicle."
I reported the pyramid. After there were in my flow so I closed them. Now I can take 10 min on browsing verveineJ model and produce them. I imagine that somebody has to use this interface. I think that we should all think if we want to succeed or not. I mean yes I can do what I'm told (cyrille), or do my experience (jannik), or fix mondrian (alex) but if nobody spend 1 hour to try to analyse a Java project then we will have bugs.
I do use Moose, and Usman and Andre too. But we use it to compute metrics, very little to browse source code.
and last time we used it was a month ago (ICSM deadline ...) and we used the version before changes to the meta-model, the one that worked.
since then we had significant changes to Famix (this is why Jannik asked for a 4.0 release) that left things in an unstable state. Problem lies somewhere in underestimating the impact of the changes to Famix. It should probably have been considered a development version so that it is clearer what one was dealing with.
nicolas
Hi,
On 25 May 2011, at 09:08, Nicolas Anquetil wrote:
I reported the pyramid. After there were in my flow so I closed them. Now I can take 10 min on browsing verveineJ model and produce them. I imagine that somebody has to use this interface. I think that we should all think if we want to succeed or not. I mean yes I can do what I'm told (cyrille), or do my experience (jannik), or fix mondrian (alex) but if nobody spend 1 hour to try to analyse a Java project then we will have bugs.
I do use Moose, and Usman and Andre too. But we use it to compute metrics, very little to browse source code.
and last time we used it was a month ago (ICSM deadline ...) and we used the version before changes to the meta-model, the one that worked.
since then we had significant changes to Famix (this is why Jannik asked for a 4.0 release) that left things in an unstable state. Problem lies somewhere in underestimating the impact of the changes to Famix. It should probably have been considered a development version so that it is clearer what one was dealing with.
The issue is like I mentioned before: The Cook API is broken and needs revision. The larger problem is that we do not have tests that capture the problems.
Cheers, Doru
nicolas _______________________________________________ Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"One cannot do more than one can do."
We will fix that. I will generate some bugs :)
Stef
On May 25, 2011, at 9:23 AM, Tudor Girba wrote:
Hi,
On 25 May 2011, at 09:08, Nicolas Anquetil wrote:
I reported the pyramid. After there were in my flow so I closed them. Now I can take 10 min on browsing verveineJ model and produce them. I imagine that somebody has to use this interface. I think that we should all think if we want to succeed or not. I mean yes I can do what I'm told (cyrille), or do my experience (jannik), or fix mondrian (alex) but if nobody spend 1 hour to try to analyse a Java project then we will have bugs.
I do use Moose, and Usman and Andre too. But we use it to compute metrics, very little to browse source code.
and last time we used it was a month ago (ICSM deadline ...) and we used the version before changes to the meta-model, the one that worked.
since then we had significant changes to Famix (this is why Jannik asked for a 4.0 release) that left things in an unstable state. Problem lies somewhere in underestimating the impact of the changes to Famix. It should probably have been considered a development version so that it is clearer what one was dealing with.
The issue is like I mentioned before: The Cook API is broken and needs revision. The larger problem is that we do not have tests that capture the problems.
Cheers, Doru
nicolas _______________________________________________ Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
In the meantime, I will write some tests.
Doru
On 25 May 2011, at 09:50, Stéphane Ducasse wrote:
We will fix that. I will generate some bugs :)
Stef
On May 25, 2011, at 9:23 AM, Tudor Girba wrote:
Hi,
On 25 May 2011, at 09:08, Nicolas Anquetil wrote:
I reported the pyramid. After there were in my flow so I closed them. Now I can take 10 min on browsing verveineJ model and produce them. I imagine that somebody has to use this interface. I think that we should all think if we want to succeed or not. I mean yes I can do what I'm told (cyrille), or do my experience (jannik), or fix mondrian (alex) but if nobody spend 1 hour to try to analyse a Java project then we will have bugs.
I do use Moose, and Usman and Andre too. But we use it to compute metrics, very little to browse source code.
and last time we used it was a month ago (ICSM deadline ...) and we used the version before changes to the meta-model, the one that worked.
since then we had significant changes to Famix (this is why Jannik asked for a 4.0 release) that left things in an unstable state. Problem lies somewhere in underestimating the impact of the changes to Famix. It should probably have been considered a development version so that it is clearer what one was dealing with.
The issue is like I mentioned before: The Cook API is broken and needs revision. The larger problem is that we do not have tests that capture the problems.
Cheers, Doru
nicolas _______________________________________________ Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"Every thing should have the right to be different."
since then we had significant changes to Famix (this is why Jannik asked for a 4.0 release) that left things in an unstable state. Problem lies somewhere in underestimating the impact of the changes to Famix. It should probably have been considered a development version so that it is clearer what one was dealing with.
The issue is like I mentioned before: The Cook API is broken and needs revision. The larger problem is that we do not have tests that capture the problems.
Maybe we should consider retiring Moose Cook and migrating to Moose Chef?
nicolas
Yes, this is the idea. Now we just have to do it :)
Doru
On May 30, 2011, at 9:55, Nicolas Anquetil nicolas.anquetil@inria.fr wrote:
since then we had significant changes to Famix (this is why Jannik asked for a 4.0 release) that left things in an unstable state. Problem lies somewhere in underestimating the impact of the changes to Famix. It should probably have been considered a development version so that it is clearer what one was dealing with.
The issue is like I mentioned before: The Cook API is broken and needs revision. The larger problem is that we do not have tests that capture the problems.
Maybe we should consider retiring Moose Cook and migrating to Moose Chef?
nicolas _______________________________________________ Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev