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(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
"Presenting is storytelling."
_______________________________________________
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."