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(a)tudorgirba.com>
À: "Moose-related development" <moose-dev(a)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(a)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(a)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(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
_______________________________________________
Moose-dev mailing list
Moose-dev(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
--
www.tudorgirba.com
"Every successful trip needs a suitable vehicle."