From 0938dfa2b0282fa2c728d696bb3e0f3a8aef4651 Mon Sep 17 00:00:00 2001 From: Joana Be Date: Tue, 22 Aug 2023 22:33:24 +0200 Subject: [PATCH 01/13] Enter commit log message here From 0c0758f80f07e66330c20a656d8d4163f8a5766f Mon Sep 17 00:00:00 2001 From: Joana Be Date: Tue, 22 Aug 2023 22:33:42 +0200 Subject: [PATCH 02/13] Revert "Enter commit log message here" This reverts commit 0938dfa "Enter commit log message here" From e47ec04d28c488fa49ed3aae97d2daa51868461f Mon Sep 17 00:00:00 2001 From: Joana Be Date: Thu, 21 Sep 2023 22:21:32 +0200 Subject: [PATCH 03/13] Adds Instance Probe class and interval determination for it --- .../BPInstanceVariableProbe.class/README.md | 0 .../instance/canBeAnnotatedTo.st | 4 ++ .../instance/isInstanceVariableProbe.st | 4 ++ .../instance/wantsMetaClassIndication.st | 4 ++ .../methodProperties.json | 7 ++++ .../properties.json | 14 +++++++ .../instance/isInstanceVariableProbe.st | 4 ++ .../BPProbe.class/methodProperties.json | 1 + .../instance/addProbeToSelection.st | 4 +- ...westUsefulAncestorFor.canBeAnnotatedTo..st | 28 ++++++++++++++ .../instance/bpClassDeclarationSourceMap.st | 11 ++++++ ...termineIntervalOfVariableNameIn.having..st | 20 ++++++++++ ...etermineIntervalToAnnotateFor.forNodes..st | 37 ------------------- .../determineIntervalToAnnotateFor.in..st | 24 ++++++++++++ .../instance/determineMessageSendNodeIn..st | 2 +- .../instance/doAddAnnotation.in..st | 2 +- .../methodProperties.json | 11 ++++-- 17 files changed, 133 insertions(+), 44 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/README.md create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/canBeAnnotatedTo.st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/isInstanceVariableProbe.st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/wantsMetaClassIndication.st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPProbe.class/instance/isInstanceVariableProbe.st create mode 100644 packages/Babylonian-UI.package/CodeHolder.extension/instance/allAndLowestUsefulAncestorFor.canBeAnnotatedTo..st create mode 100644 packages/Babylonian-UI.package/CodeHolder.extension/instance/bpClassDeclarationSourceMap.st create mode 100644 packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st delete mode 100644 packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalToAnnotateFor.forNodes..st create mode 100644 packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalToAnnotateFor.in..st diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/README.md b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/canBeAnnotatedTo.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/canBeAnnotatedTo.st new file mode 100644 index 00000000..9fed5d69 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/canBeAnnotatedTo.st @@ -0,0 +1,4 @@ +ui +canBeAnnotatedTo + + ^ #(stringLiteral) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/isInstanceVariableProbe.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/isInstanceVariableProbe.st new file mode 100644 index 00000000..43f7d173 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/isInstanceVariableProbe.st @@ -0,0 +1,4 @@ +testing +isInstanceVariableProbe + + ^ true \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/wantsMetaClassIndication.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/wantsMetaClassIndication.st new file mode 100644 index 00000000..3711a64c --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/wantsMetaClassIndication.st @@ -0,0 +1,4 @@ +accessing +wantsMetaClassIndication + + ^ false \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json new file mode 100644 index 00000000..77640a59 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "canBeAnnotatedTo" : "joabe 9/21/2023 21:08", + "isInstanceVariableProbe" : "joabe 9/21/2023 21:18", + "wantsMetaClassIndication" : "joabe 9/21/2023 21:08" } } diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json new file mode 100644 index 00000000..35ee499a --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Annotations", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPInstanceVariableProbe", + "pools" : [ + ], + "super" : "BPProbe", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPProbe.class/instance/isInstanceVariableProbe.st b/packages/Babylonian-Core.package/BPProbe.class/instance/isInstanceVariableProbe.st new file mode 100644 index 00000000..69d46050 --- /dev/null +++ b/packages/Babylonian-Core.package/BPProbe.class/instance/isInstanceVariableProbe.st @@ -0,0 +1,4 @@ +testing +isInstanceVariableProbe + + ^ false \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPProbe.class/methodProperties.json b/packages/Babylonian-Core.package/BPProbe.class/methodProperties.json index 0ee8a46f..ccb35037 100644 --- a/packages/Babylonian-Core.package/BPProbe.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPProbe.class/methodProperties.json @@ -13,6 +13,7 @@ "hasExpression" : "pre 6/7/2021 16:52", "hasLabel" : "lu 5/20/2021 15:14", "instrumentationCallFor:" : "pre 1/10/2023 17:33", + "isInstanceVariableProbe" : "joabe 9/21/2023 21:18", "isProbe" : "pre 7/3/2019 11:12", "isTemporaryProbe" : "pre 9/2/2022 14:40", "label" : "joabe 5/9/2023 17:37", diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/addProbeToSelection.st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/addProbeToSelection.st index e25f3f65..d710ec51 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/addProbeToSelection.st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/addProbeToSelection.st @@ -1,5 +1,7 @@ *Babylonian-UI-annotations addProbeToSelection - self addAnnotationAtSelection: BPProbe new. + self editSelection == #editClass + ifTrue: [self addAnnotationAtSelection: BPInstanceVariableProbe new] + ifFalse: [self addAnnotationAtSelection: BPProbe new] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/allAndLowestUsefulAncestorFor.canBeAnnotatedTo..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/allAndLowestUsefulAncestorFor.canBeAnnotatedTo..st new file mode 100644 index 00000000..b042bffd --- /dev/null +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/allAndLowestUsefulAncestorFor.canBeAnnotatedTo..st @@ -0,0 +1,28 @@ +*Babylonian-UI-private +allAndLowestUsefulAncestorFor: aListOfNodes canBeAnnotatedTo: aListOfKeywords + + "This is necessary as we do only assume that the last node is the lowest one, not that + the rest of the nodes is necessarily ordered according to the tree" + | ancestors lowestCommonAncestorIndex parents | + parents := aListOfNodes collect: [:allNodes | {allNodes last} , allNodes last allParents]. + + "This is a naiive approach but is fine as the trees are not that deep." + lowestCommonAncestorIndex := parents first findFirst: [:n | parents second includes: n]. + lowestCommonAncestorIndex = 0 ifTrue: [self error: 'broken tree, no common root found']. + + ancestors := parents first + copyFrom: lowestCommonAncestorIndex + to: parents first size. + + "This is not enough yet, we have the list of AST nodes covering the selected interval + and their full ranges, but these nodes could be nonsensical to annotate." + ^ {ancestors. ancestors + detect: [:n | aListOfKeywords includes: n ruleName] + ifNone: ["This can happen if users selected more than one statement, + we now have to search for the first statement below the current index" + (parents first first: lowestCommonAncestorIndex) reverse + detect: [:n | aListOfKeywords includes: n ruleName] + ifNone: ["Try it again for the end of the interval" + (parents second copyUpTo: (parents first at: lowestCommonAncestorIndex)) reverse + detect: [:n | aListOfKeywords includes: n ruleName] + ifNone: [nil "There really is nothing to annotate"]]]}. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/bpClassDeclarationSourceMap.st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/bpClassDeclarationSourceMap.st new file mode 100644 index 00000000..d742a5b1 --- /dev/null +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/bpClassDeclarationSourceMap.st @@ -0,0 +1,11 @@ +*Babylonian-UI-private +bpClassDeclarationSourceMap + + | result map | + result := BPSmalltalkGrammar + match: self contents + startingFrom: #KeywordMessageSend. + result succeeded ifFalse: [self haltOnce. ^ #()]. + map := (BPSmalltalkGrammar semanticAction: BPSourceMapping new) + createSourceMapFor: result cst. + ^ map \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st new file mode 100644 index 00000000..d3c19ef8 --- /dev/null +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st @@ -0,0 +1,20 @@ +*Babylonian-UI-private +determineIntervalOfVariableNameIn: anInterval having: aTopologicalCollectionOfAncestors + + | lowestKeywordMessageSegment selectedText | + + lowestKeywordMessageSegment := aTopologicalCollectionOfAncestors + detect: [:n | n ruleName = #KeywordMessageSegment] + ifNone: [^ nil]. + + ((self contents atAll: lowestKeywordMessageSegment children first interval) ~= 'instanceVariableNames:') ifTrue: [^ nil]. + + selectedText := (self contents atAll: anInterval) withBlanksTrimmed. + + ^ self selectedClassOrMetaClass instVarNames + detect: [:aVariable | aVariable = selectedText] + ifFound: [:matchingVariable | | start | + start := self contents findString: matchingVariable. + ^ Interval from: start to: start + matchingVariable size] + + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalToAnnotateFor.forNodes..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalToAnnotateFor.forNodes..st deleted file mode 100644 index 2826f102..00000000 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalToAnnotateFor.forNodes..st +++ /dev/null @@ -1,37 +0,0 @@ -*Babylonian-UI-private -determineIntervalToAnnotateFor: anInterval forNodes: nodeList - - "This determines the interval to annotate for a selected interval. - The selected interval can also be a 0 width selection. - If there is not valid interval this method will return nil." - - | nodes parents lowestCommonAncestorIndex ancestors lowestUsefulAncestor | - self bpEnsureContentsAndSelectedMessage. - - nodes := currentCompiledMethod bpSourceMap atAll: {anInterval start. anInterval stop}. - "This is necessary as we do only assume that the last node is the lowest one, not that - the rest of the nodes is necessarily ordered according to the tree" - parents := nodes collect: [:allNodes | {allNodes last} , allNodes last allParents]. - - "This is a naiive approach but is fine as the trees are not that deep." - lowestCommonAncestorIndex := ""parents first findFirst: [:n | parents second includes: n]"". - lowestCommonAncestorIndex = 0 ifTrue: [self error: 'broken tree, no common root found']. - - ancestors := parents first - copyFrom: lowestCommonAncestorIndex - to: parents first size. - - "This is not enough yet, we have the list of AST nodes covering the selected interval - and their full ranges, but these nodes could be nonsensical to annotate." - lowestUsefulAncestor := ""ancestors"" - detect: [:n | nodeList includes: n ruleName] - ifNone: ["This can happen if users selected more than one statement, - we now have to search for the first statement below the current index" - (parents first first: lowestCommonAncestorIndex) reverse - detect: [:n | nodeList includes: n ruleName] - ifNone: ["Try it again for the end of the interval" - (parents second copyUpTo: (parents first at: lowestCommonAncestorIndex)) reverse - detect: [:n | nodeList includes: n ruleName] - ifNone: [^ nil "There really is nothing to annotate"]]]. - - ^ ""lowestUsefulAncestor"" interval \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalToAnnotateFor.in..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalToAnnotateFor.in..st new file mode 100644 index 00000000..d539f4ec --- /dev/null +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalToAnnotateFor.in..st @@ -0,0 +1,24 @@ +*Babylonian-UI-private +determineIntervalToAnnotateFor: anAnnotation in: anInterval + + | result sourceMap | + "This determines the interval to annotate for a selected interval. + The selected interval can also be a 0 width selection. + If there is not valid interval this method will return nil." + + self bpEnsureContentsAndSelectedMessage. + self halt. + sourceMap := currentCompiledMethod ifNotNil: [currentCompiledMethod bpSourceMap] ifNil: [self bpClassDeclarationSourceMap]. + result := self + allAndLowestUsefulAncestorFor: (sourceMap atAll: anInterval) + canBeAnnotatedTo: anAnnotation canBeAnnotatedTo. + result second ifNil: [^ nil]. + + anAnnotation isInstanceVariableProbe ifFalse: [^ result second interval]. + + (self editSelection == #editClass and: [self metaClassIndicated == anAnnotation wantsMetaClassIndication]) ifFalse: [^ nil]. + + ^ self + determineIntervalOfVariableNameIn: anInterval + having: result first. + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineMessageSendNodeIn..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineMessageSendNodeIn..st index 4308d873..19739da7 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineMessageSendNodeIn..st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineMessageSendNodeIn..st @@ -3,7 +3,7 @@ determineMessageSendNodeIn: anInterval | nodes messageSendRuleNames lowestMessageSend | self bpEnsureContentsAndSelectedMessage. - + self flag: #todo. "will break for instance probes jb" nodes := currentCompiledMethod bpSourceMap at: anInterval start. messageSendRuleNames := #(ExpressionOperandCascade ExpressionUnaryCascade ExpressionBinaryCascade UnaryMessageSend BinaryMessageSend KeywordMessageSend). ^ lowestMessageSend := nodes reversed diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotation.in..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotation.in..st index 19f06976..9aa8179c 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotation.in..st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotation.in..st @@ -2,7 +2,7 @@ doAddAnnotation: anAnnotation in: interval "Separated from addAnotationIn: to allow for multiple annotations to be added without saving first." | text actualInterval newMorph | - actualInterval := self determineIntervalToAnnotateFor: interval forNodes: anAnnotation canBeAnnotatedTo. + actualInterval := self determineIntervalToAnnotateFor: anAnnotation in: interval. actualInterval ifNil: [self codeTextMorph textMorph flash. ^ self]. anAnnotation methodReference: self methodReference. text := self codeTextMorph text. diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json index 0e3c72e1..ca85a0a2 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json +++ b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json @@ -5,23 +5,26 @@ "addAnnotation:in:" : "pre 8/17/2023 11:49", "addAnnotationAtSelection:" : "pre 7/23/2022 20:17", "addAssertionToSelection" : "pre 11/13/2019 17:37", - "addProbeToSelection" : "pre 8/6/2019 16:11", + "addProbeToSelection" : "joabe 9/21/2023 21:38", "addProfilingProbeToSelection" : "pre 11/29/2022 16:32", "addReplacementToSelection" : "pre 11/14/2019 15:50", "addSliderToSelection" : "pre 9/22/2020 18:27", "addTypeProbeToSelection" : "pre 11/30/2022 09:40", + "allAndLowestUsefulAncestorFor:canBeAnnotatedTo:" : "joabe 9/21/2023 20:26", "annotationsInSelection" : "pre 11/8/2019 12:05", "bindingOf:" : "pre 5/3/2021 14:26", + "bpClassDeclarationSourceMap" : "joabe 9/21/2023 17:59", "bpEnsureContentsAndSelectedMessage" : "pre 9/1/2022 22:03", "browseActualImplementers" : "pre 9/2/2022 15:27", "codePaneMenuAnnotationItems:" : "pre 11/30/2022 09:40", "codePaneMenuBPTracingItems:" : "pre 9/2/2022 15:06", "compiledMethod" : "ct 3/30/2022 16:48", "determineIntervalOfReceiver:" : "pre 9/2/2022 14:29", - "determineIntervalToAnnotateFor:forNodes:" : "pre 9/1/2022 22:03", - "determineMessageSendNodeIn:" : "pre 9/2/2022 14:06", + "determineIntervalOfVariableNameIn:having:" : "joabe 9/21/2023 21:40", + "determineIntervalToAnnotateFor:in:" : "joabe 9/21/2023 21:29", + "determineMessageSendNodeIn:" : "joabe 9/21/2023 21:31", "determineSelectorOfMessageSend:" : "pre 9/2/2022 14:49", - "doAddAnnotation:in:" : "pre 8/17/2023 11:48", + "doAddAnnotation:in:" : "joabe 9/21/2023 21:28", "doBrowseActualImplementersFromProbe:andSelector:" : "pre 9/2/2022 15:54", "doItReceiver" : "ct 3/30/2022 16:48", "exampleForEvaluation" : "ct 8/18/2021 23:15", From 8c847c6911cba1d668380e517e79fa1ef6b5a748 Mon Sep 17 00:00:00 2001 From: Joana Be Date: Thu, 28 Sep 2023 13:09:06 +0200 Subject: [PATCH 04/13] Adds global dict to keep track of probes --- ...nstrumentedVersionOf.basedOn.noPattern..st | 18 +++++++++++++ .../instance/compileCue.noPattern.ifFail..st | 4 +-- .../instance/compileInstrumentedVersionOf..st | 10 ++++++- ...compileInstrumentedVersionOf.noPattern..st | 27 +++++++++++++++++++ .../BPCompiler.class/methodProperties.json | 6 +++-- ...sageSend.startTag.actualMessage.endTag..st | 2 +- .../instance/bpTemporaryProbe.with..st | 2 +- .../methodProperties.json | 2 +- .../README.md | 0 .../class/clear.st | 4 +++ .../class/default.st | 4 +++ .../instance/addProbe..st | 9 +++++++ .../instance/initialize.st | 5 ++++ .../instance/nameToProbesDict.st | 4 +++ .../instance/removeProbe..st | 6 +++++ .../methodProperties.json | 9 +++++++ .../properties.json | 14 ++++++++++ .../class/annotationTag.st | 4 +++ .../instance/asMorph.st | 9 +++++++ .../instance/className..st | 3 +++ .../instance/className.st | 3 +++ .../instance/instrumentationCallFor..st | 5 ++++ .../instance/probeTypeTag.st | 4 +++ .../instance/removeFromMethod..st | 4 +++ .../instance/variableName..st | 4 +++ .../instance/variableName.st | 4 +++ .../methodProperties.json | 10 ++++++- .../properties.json | 3 ++- .../bpTraceVariable.forProbe.inContext..st | 12 +++++++++ .../Object.extension/methodProperties.json | 1 + .../README.md | 0 .../instance/removeButtonClicked.st | 6 +++++ .../instance/step.st | 17 ++++++++++++ .../methodProperties.json | 6 +++++ .../properties.json | 14 ++++++++++ .../instance/emphasizeScanner..st | 1 + .../methodProperties.json | 2 +- ...termineIntervalOfVariableNameIn.having..st | 6 +++-- .../determineIntervalToAnnotateFor.in..st | 7 +++-- .../instance/doAddAnnotation.in..st | 16 ++++------- .../doAddAnnotationMorphToMethod.in..st | 14 ++++++++++ .../doAddInstanceProbeToRegistry.nameIn..st | 8 ++++++ .../instance/saveMethodWithExamples.st | 2 +- .../methodProperties.json | 10 ++++--- 44 files changed, 268 insertions(+), 33 deletions(-) create mode 100644 packages/Babylonian-Compiler.package/BPCompiler.class/instance/backgroundCompileInstrumentedVersionOf.basedOn.noPattern..st create mode 100644 packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf.noPattern..st create mode 100644 packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/README.md create mode 100644 packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/class/clear.st create mode 100644 packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/class/default.st create mode 100644 packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st create mode 100644 packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/initialize.st create mode 100644 packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/nameToProbesDict.st create mode 100644 packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st create mode 100644 packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/class/annotationTag.st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/asMorph.st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className..st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className.st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/instrumentationCallFor..st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/probeTypeTag.st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/removeFromMethod..st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName..st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName.st create mode 100644 packages/Babylonian-Core.package/Object.extension/instance/bpTraceVariable.forProbe.inContext..st create mode 100644 packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/README.md create mode 100644 packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st create mode 100644 packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/step.st create mode 100644 packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/properties.json create mode 100644 packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotationMorphToMethod.in..st create mode 100644 packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddInstanceProbeToRegistry.nameIn..st diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/backgroundCompileInstrumentedVersionOf.basedOn.noPattern..st b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/backgroundCompileInstrumentedVersionOf.basedOn.noPattern..st new file mode 100644 index 00000000..f043b700 --- /dev/null +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/backgroundCompileInstrumentedVersionOf.basedOn.noPattern..st @@ -0,0 +1,18 @@ +private +backgroundCompileInstrumentedVersionOf: aCue basedOn: parseResult noPattern: aBoolean + + | instrumentedResult newCode | + self halt. + newCode := self rewriteToSource: parseResult. + SystemChangeNotifier uniqueInstance doSilently: [ + "Wann ist aCue getClass compile nicht mit BPCompiler?" + instrumentedResult := + aCue getClass newCompiler compileCue: (CompilationCue + source: newCode + class: aCue getClass + environment: aCue environment + requestor: nil) + noPattern: aBoolean + ifFail: [^nil] ]. + "instrumentedResult := aCue getClass compile: newCode]." + \ No newline at end of file diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileCue.noPattern.ifFail..st b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileCue.noPattern.ifFail..st index b0dd38f6..27c551bd 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileCue.noPattern.ifFail..st +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileCue.noPattern.ifFail..st @@ -17,11 +17,11 @@ compileCue: aCueWithStyledSource noPattern: aBoolean ifFail: failBlock source: bpUnstyledSource readStream context: aCueWithStyledSource context receiver: aCueWithStyledSource receiver - class: aCueWithStyledSource getClass + class: aCueWithStyledSource getClass environment: aCueWithStyledSource environment requestor: aCueWithStyledSource requestor. originalMethodNode := super compileCue: unstyledCue noPattern: aBoolean ifFail: failBlock. - + bpUnstyledSource := originalMethodNode sourceText asString. (self methodSourceRequiresBPLayers: bpUnstyledSource) ifTrue: [ (self compileInstrumentedVersionOf: aCueWithStyledSource) ifFalse: failBlock]. diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf..st b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf..st index 0cf5268d..5a762a6c 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf..st +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf..st @@ -11,7 +11,15 @@ compileInstrumentedVersionOf: aCue ifTrue: [ self backgroundCompileInstrumentedVersionOf: aCue basedOn: parseResult. ^ true] - ifFalse: [^ false]. + ifFalse: [ + "das oben schlägt fehl, weil er keine methoddeclaration findet" + "hier ist die cue kaputt, weil er keine class zuweisen kann. doch nochmal + ne andere compile version, die speziell für editclass zurechtgeschnitten ist?" + parseResult := PEGParserBPSmalltalk new + match: originalCode + startingFrom: #KeywordMessageSend. + parseResult succeeded ifTrue: [self backgroundCompileInstrumentedVersionOf: aCue basedOn: parseResult. + ^ true] ifFalse: [^false]]. diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf.noPattern..st b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf.noPattern..st new file mode 100644 index 00000000..36d4d590 --- /dev/null +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf.noPattern..st @@ -0,0 +1,27 @@ +private +compileInstrumentedVersionOf: aCue noPattern: aBoolean + + | originalCode parseResult startingFrom | + "We do not serialize the examples into the instrumented method as + they only 'live' in the base method." + originalCode := aCue sourceStream contents asBPSourceWithoutExamples. + startingFrom := aBoolean + ifFalse: [#MethodDeclaration] + ifTrue: [#KeywordMessageSend]. + + parseResult := PEGParserBPSmalltalk new + match: originalCode + startingFrom: startingFrom. + + parseResult succeeded + ifTrue: [ + self + backgroundCompileInstrumentedVersionOf: aCue + basedOn: parseResult + noPattern: aBoolean. + ^ true] + ifFalse: [^false]. + + + + \ No newline at end of file diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json b/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json index a588f74f..c8f79d3c 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json @@ -6,8 +6,10 @@ "instance" : { "annotationKeywords" : "pre 11/8/2019 20:29", "backgroundCompileInstrumentedVersionOf:basedOn:" : "pre 10/12/2020 15:36", - "compileCue:noPattern:ifFail:" : "pre 7/20/2022 16:41", - "compileInstrumentedVersionOf:" : "jb 9/9/2021 17:31", + "backgroundCompileInstrumentedVersionOf:basedOn:noPattern:" : "joabe 9/26/2023 16:07", + "compileCue:noPattern:ifFail:" : "joabe 9/27/2023 16:14", + "compileInstrumentedVersionOf:" : "joabe 9/22/2023 23:28", + "compileInstrumentedVersionOf:noPattern:" : "joabe 9/26/2023 15:54", "keywords" : "pre 11/30/2022 09:33", "methodSourceRequiresBPLayers:" : "pre 11/11/2019 15:49", "parse:" : "pre 5/3/2021 15:01", diff --git a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/AnnotatedKeywordMessageSend.startTag.actualMessage.endTag..st b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/AnnotatedKeywordMessageSend.startTag.actualMessage.endTag..st index 86102354..b5a7a993 100644 --- a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/AnnotatedKeywordMessageSend.startTag.actualMessage.endTag..st +++ b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/AnnotatedKeywordMessageSend.startTag.actualMessage.endTag..st @@ -1,4 +1,4 @@ grammar rules AnnotatedKeywordMessageSend: aNode startTag: startTag actualMessage: message endTag: endTag - ^ self rewriteNode: message withTag: startTag \ No newline at end of file + ^ self rewriteNode: message withTag: startTag \ No newline at end of file diff --git a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/bpTemporaryProbe.with..st b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/bpTemporaryProbe.with..st index cd34d7b5..55fba210 100644 --- a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/bpTemporaryProbe.with..st +++ b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/bpTemporaryProbe.with..st @@ -1,4 +1,4 @@ -as yet unclassified +rewrite rules bpTemporaryProbe: annotation with: originalExpressionSourceNode ^ annotation instrumentationCallFor: (self value: originalExpressionSourceNode) \ No newline at end of file diff --git a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json index 0170b617..76ed7905 100644 --- a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json +++ b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json @@ -6,7 +6,7 @@ "AnnotatedBinaryMessageSend:startTag:actualMessage:endTag:" : "pre 3/5/2020 16:30", "AnnotatedBlockLiteral:startTag:actualBlock:endTag:" : "pre 9/1/2022 20:34", "AnnotatedExpression:startTag:actualExpression:endTag:" : "pre 1/24/2020 17:26", - "AnnotatedKeywordMessageSend:startTag:actualMessage:endTag:" : "pre 3/5/2020 16:30", + "AnnotatedKeywordMessageSend:startTag:actualMessage:endTag:" : "joabe 9/25/2023 19:01", "AnnotatedMessageChain:startTag:actualMessage:endTag:" : "pre 4/29/2020 17:01", "AnnotatedOperand:startTag:actualOperand:endTag:" : "pre 3/5/2020 17:37", "AnnotatedStatement:startTag:actualStatement:endTag:" : "jb 12/3/2020 22:36", diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/README.md b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/class/clear.st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/class/clear.st new file mode 100644 index 00000000..69bd3313 --- /dev/null +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/class/clear.st @@ -0,0 +1,4 @@ +class initialization +clear + + DefaultValue := nil \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/class/default.st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/class/default.st new file mode 100644 index 00000000..d950aeb4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/class/default.st @@ -0,0 +1,4 @@ +accessing +default + + ^ DefaultValue ifNil: [DefaultValue := self new] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st new file mode 100644 index 00000000..e04b5877 --- /dev/null +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st @@ -0,0 +1,9 @@ +as yet unclassified +addProbe: aProbe + + nameToProbesDict at: aProbe className + ifPresent: [:registeredProbes | registeredProbes add: aProbe] + ifAbsent: [ | k | + k := KeyedSet keyBlock: [ :each | each variableName ]. + nameToProbesDict at: aProbe className put: k] + \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/initialize.st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/initialize.st new file mode 100644 index 00000000..d5cc716d --- /dev/null +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/initialize.st @@ -0,0 +1,5 @@ +initialize-release +initialize + + super initialize. + nameToProbesDict := Dictionary new. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/nameToProbesDict.st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/nameToProbesDict.st new file mode 100644 index 00000000..3b42976d --- /dev/null +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/nameToProbesDict.st @@ -0,0 +1,4 @@ +accessing +nameToProbesDict + + ^ nameToProbesDict \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st new file mode 100644 index 00000000..e0484392 --- /dev/null +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st @@ -0,0 +1,6 @@ +as yet unclassified +removeProbe: aProbe + + nameToProbesDict at: aProbe className + ifPresent: [:registeredProbes | registeredProbes remove: aProbe] + \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/methodProperties.json b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/methodProperties.json new file mode 100644 index 00000000..90daebc9 --- /dev/null +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + "clear" : "joabe 9/28/2023 12:59", + "default" : "joabe 9/28/2023 12:57" }, + "instance" : { + "addProbe:" : "joabe 9/28/2023 13:05", + "initialize" : "joabe 9/27/2023 16:33", + "nameToProbesDict" : "joabe 9/28/2023 12:59", + "removeProbe:" : "joabe 9/27/2023 17:19" } } diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/properties.json b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/properties.json new file mode 100644 index 00000000..546f51eb --- /dev/null +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Tracing", + "classinstvars" : [ + ], + "classvars" : [ + "DefaultValue" ], + "commentStamp" : "", + "instvars" : [ + "nameToProbesDict" ], + "name" : "BPClassNameToInstanceProbes", + "pools" : [ + ], + "super" : "DynamicVariable", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/class/annotationTag.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/class/annotationTag.st new file mode 100644 index 00000000..0ef10469 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/class/annotationTag.st @@ -0,0 +1,4 @@ +constants +annotationTag + + ^ 'bpInstanceProbe' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/asMorph.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/asMorph.st new file mode 100644 index 00000000..937e2b7d --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/asMorph.st @@ -0,0 +1,9 @@ +morphic +asMorph + + | newMorph | + newMorph := BPInstanceVariableProbeMorph new + annotation: self; + yourself. + self updateTextAnchorPropertiesOf: newMorph. + ^ newMorph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className..st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className..st new file mode 100644 index 00000000..19023ac0 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className..st @@ -0,0 +1,3 @@ +accessing +className: aString + className := aString \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className.st new file mode 100644 index 00000000..08d21063 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className.st @@ -0,0 +1,3 @@ +accessing +className + ^ className \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/instrumentationCallFor..st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/instrumentationCallFor..st new file mode 100644 index 00000000..a4a182fd --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/instrumentationCallFor..st @@ -0,0 +1,5 @@ +as yet unclassified +instrumentationCallFor: actualEnclosedExpressionSource + + ^ '(self bpTraceVariable: [{1}] forProbe: {2} inContext: thisContext)' + format: {actualEnclosedExpressionSource . self id} \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/probeTypeTag.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/probeTypeTag.st new file mode 100644 index 00000000..148987e6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/probeTypeTag.st @@ -0,0 +1,4 @@ +as yet unclassified +probeTypeTag + + ^ 'bpInstanceProbe' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/removeFromMethod..st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/removeFromMethod..st new file mode 100644 index 00000000..40ad5f67 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/removeFromMethod..st @@ -0,0 +1,4 @@ +as yet unclassified +removeFromMethod: aCompiledMethod + + "do nothing" \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName..st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName..st new file mode 100644 index 00000000..bcffb8c4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName..st @@ -0,0 +1,4 @@ +accessing +variableName: aString + + variableName := aString \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName.st new file mode 100644 index 00000000..cd8d2993 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName.st @@ -0,0 +1,4 @@ +accessing +variableName + + ^ variableName \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json index 77640a59..c6954265 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json @@ -1,7 +1,15 @@ { "class" : { - }, + "annotationTag" : "joabe 9/25/2023 17:30" }, "instance" : { + "asMorph" : "joabe 9/21/2023 22:32", "canBeAnnotatedTo" : "joabe 9/21/2023 21:08", + "className" : "joabe 9/27/2023 17:16", + "className:" : "joabe 9/27/2023 17:16", + "instrumentationCallFor:" : "joabe 9/25/2023 18:43", "isInstanceVariableProbe" : "joabe 9/21/2023 21:18", + "probeTypeTag" : "joabe 9/25/2023 17:30", + "removeFromMethod:" : "joabe 9/27/2023 16:43", + "variableName" : "joabe 9/27/2023 16:52", + "variableName:" : "joabe 9/27/2023 16:52", "wantsMetaClassIndication" : "joabe 9/21/2023 21:08" } } diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json index 35ee499a..3d82397c 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json @@ -6,7 +6,8 @@ ], "commentStamp" : "", "instvars" : [ - ], + "variableName", + "className" ], "name" : "BPInstanceVariableProbe", "pools" : [ ], diff --git a/packages/Babylonian-Core.package/Object.extension/instance/bpTraceVariable.forProbe.inContext..st b/packages/Babylonian-Core.package/Object.extension/instance/bpTraceVariable.forProbe.inContext..st new file mode 100644 index 00000000..5b2eb2c1 --- /dev/null +++ b/packages/Babylonian-Core.package/Object.extension/instance/bpTraceVariable.forProbe.inContext..st @@ -0,0 +1,12 @@ +*Babylonian-Core +bpTraceVariable: aVariableName forProbe: probeId inContext: aContext + + + self halt. + ^ aVariableName value, ' ' + "^ #bpInstrumented withoutLayerDo: [ + BPActiveTracer value + trace: anObject + through: [:r | r] + forProbe: probeId + inContext: aContext]" \ No newline at end of file diff --git a/packages/Babylonian-Core.package/Object.extension/methodProperties.json b/packages/Babylonian-Core.package/Object.extension/methodProperties.json index 2940c610..a6d135d8 100644 --- a/packages/Babylonian-Core.package/Object.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/Object.extension/methodProperties.json @@ -13,4 +13,5 @@ "bpTrace:through:forProbe:inContext:" : "jb 11/29/2020 22:12", "bpTraceAssignmentOf:before:forProbe:inContext:" : "pre 7/6/2020 18:34", "bpTraceExecutionResult:" : "jb 12/30/2021 21:20", + "bpTraceVariable:forProbe:inContext:" : "joabe 9/27/2023 13:36", "isLiveSpecimenReference" : "pre 1/10/2023 16:16" } } diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/README.md b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st new file mode 100644 index 00000000..5e9e7b6f --- /dev/null +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st @@ -0,0 +1,6 @@ +as yet unclassified +removeButtonClicked + + super removeButtonClicked. + BPClassNameToInstanceProbes value removeProbe: self. + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/step.st b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/step.st new file mode 100644 index 00000000..c43d077e --- /dev/null +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/step.st @@ -0,0 +1,17 @@ +as yet unclassified +step + + | newTraces tracesChanged | + self resetHeight. + + "newTraces := self getTraces asIdentitySet. + tracesChanged := newTraces ~= displayedTraces. + + (allTracesCompleted not or: [tracesChanged]) ifTrue: [ + allTracesCompleted := newTraces + ifEmpty: [true] + ifNotEmpty: [:ts | ts allSatisfy: [:t | t hasTraceCompleted]]. + self updateFrom: (newTraces ifEmpty: [self emptyTraces]). + displayedTraces := newTraces]." + + "tracesChanged ifTrue: [self refreshTextComposition]." \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json new file mode 100644 index 00000000..0179c284 --- /dev/null +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "removeButtonClicked" : "joabe 9/27/2023 17:19", + "step" : "joabe 9/25/2023 18:34" } } diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/properties.json b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/properties.json new file mode 100644 index 00000000..6dc83484 --- /dev/null +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-Morphs", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPInstanceVariableProbeMorph", + "pools" : [ + ], + "super" : "BPProbeMorph", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPTextDecoration.class/instance/emphasizeScanner..st b/packages/Babylonian-UI.package/BPTextDecoration.class/instance/emphasizeScanner..st index 424817cf..9afaa8f6 100644 --- a/packages/Babylonian-UI.package/BPTextDecoration.class/instance/emphasizeScanner..st +++ b/packages/Babylonian-UI.package/BPTextDecoration.class/instance/emphasizeScanner..st @@ -2,6 +2,7 @@ accessing emphasizeScanner: scanner "Set the emphasis for text scanning" | emphasis | + emphasis := self anchoredMorph textEmphasis ifNil: [ self anchoredMorph visible ifTrue: [TextEmphasis underlined] diff --git a/packages/Babylonian-UI.package/BPTextDecoration.class/methodProperties.json b/packages/Babylonian-UI.package/BPTextDecoration.class/methodProperties.json index bc5dade6..c75102ed 100644 --- a/packages/Babylonian-UI.package/BPTextDecoration.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPTextDecoration.class/methodProperties.json @@ -3,7 +3,7 @@ "compilerClass" : "pre 11/8/2019 20:33" }, "instance" : { "emphasisCode" : "pre 11/8/2019 13:33", - "emphasizeScanner:" : "pre 9/2/2022 15:35", + "emphasizeScanner:" : "joabe 9/21/2023 22:56", "initialize" : "pre 7/19/2022 17:54", "isBPDecoration" : "pre 8/17/2023 08:37", "isOblivious" : "pre 7/9/2021 16:59", diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st index d3c19ef8..6dc34a4f 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st @@ -2,7 +2,7 @@ determineIntervalOfVariableNameIn: anInterval having: aTopologicalCollectionOfAncestors | lowestKeywordMessageSegment selectedText | - + lowestKeywordMessageSegment := aTopologicalCollectionOfAncestors detect: [:n | n ruleName = #KeywordMessageSegment] ifNone: [^ nil]. @@ -10,11 +10,13 @@ determineIntervalOfVariableNameIn: anInterval having: aTopologicalCollectionOfAn ((self contents atAll: lowestKeywordMessageSegment children first interval) ~= 'instanceVariableNames:') ifTrue: [^ nil]. selectedText := (self contents atAll: anInterval) withBlanksTrimmed. + self flag: #todo. "wenn es sowas wie aha und aha2 gibt, dann wird das falsch sein, wenn ich aha markiere + und aha2 als erstes kommt" ^ self selectedClassOrMetaClass instVarNames detect: [:aVariable | aVariable = selectedText] ifFound: [:matchingVariable | | start | start := self contents findString: matchingVariable. - ^ Interval from: start to: start + matchingVariable size] + ^ Interval from: start to: start + matchingVariable size - 1] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalToAnnotateFor.in..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalToAnnotateFor.in..st index d539f4ec..574784ed 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalToAnnotateFor.in..st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalToAnnotateFor.in..st @@ -7,18 +7,17 @@ determineIntervalToAnnotateFor: anAnnotation in: anInterval If there is not valid interval this method will return nil." self bpEnsureContentsAndSelectedMessage. - self halt. sourceMap := currentCompiledMethod ifNotNil: [currentCompiledMethod bpSourceMap] ifNil: [self bpClassDeclarationSourceMap]. result := self - allAndLowestUsefulAncestorFor: (sourceMap atAll: anInterval) + allAndLowestUsefulAncestorFor: (sourceMap atAll: {anInterval start. anInterval stop}) canBeAnnotatedTo: anAnnotation canBeAnnotatedTo. result second ifNil: [^ nil]. anAnnotation isInstanceVariableProbe ifFalse: [^ result second interval]. - + (self editSelection == #editClass and: [self metaClassIndicated == anAnnotation wantsMetaClassIndication]) ifFalse: [^ nil]. ^ self determineIntervalOfVariableNameIn: anInterval - having: result first. + having: result first. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotation.in..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotation.in..st index 9aa8179c..a19159cf 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotation.in..st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotation.in..st @@ -1,16 +1,10 @@ *Babylonian-UI-private doAddAnnotation: anAnnotation in: interval "Separated from addAnotationIn: to allow for multiple annotations to be added without saving first." - | text actualInterval newMorph | + | actualInterval | actualInterval := self determineIntervalToAnnotateFor: anAnnotation in: interval. actualInterval ifNil: [self codeTextMorph textMorph flash. ^ self]. - anAnnotation methodReference: self methodReference. - text := self codeTextMorph text. - newMorph := anAnnotation asMorph. - text - addAttribute: (BPTextDecoration new - anchoredMorph: newMorph; - yourself) - from: actualInterval start - to: actualInterval stop. - (self codeTextMorph) addMorph: newMorph. \ No newline at end of file + + anAnnotation isInstanceVariableProbe + ifTrue: [self doAddInstanceProbeToRegistry: anAnnotation nameIn: actualInterval] + ifFalse: [self doAddAnnotationMorphToMethod: anAnnotation in: actualInterval]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotationMorphToMethod.in..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotationMorphToMethod.in..st new file mode 100644 index 00000000..1f318cb1 --- /dev/null +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotationMorphToMethod.in..st @@ -0,0 +1,14 @@ +*Babylonian-UI-private +doAddAnnotationMorphToMethod: anAnnotation in: anInterval + + | text newMorph | + anAnnotation methodReference: self methodReference. + text := self codeTextMorph text. + newMorph := anAnnotation asMorph. + text + addAttribute: (BPTextDecoration new + anchoredMorph: newMorph; + yourself) + from: anInterval start + to: anInterval stop. + (self codeTextMorph) addMorph: newMorph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddInstanceProbeToRegistry.nameIn..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddInstanceProbeToRegistry.nameIn..st new file mode 100644 index 00000000..7b1e5217 --- /dev/null +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddInstanceProbeToRegistry.nameIn..st @@ -0,0 +1,8 @@ +*Babylonian-UI-private +doAddInstanceProbeToRegistry: anInstanceVariableProbe nameIn: anInterval + + anInstanceVariableProbe + variableName: (self codeTextMorph text atAll: {anInterval start. anInterval stop}); + className: (self selectedClass name). + BPClassNameToInstanceProbes value addProbe: anInstanceVariableProbe + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/saveMethodWithExamples.st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/saveMethodWithExamples.st index ae4de306..f831c874 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/saveMethodWithExamples.st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/saveMethodWithExamples.st @@ -1,6 +1,6 @@ *Babylonian-UI-private saveMethodWithExamples - + self codeTextMorph hasUnacceptedEdits: true; accept. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json index ca85a0a2..3adbe0ca 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json +++ b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json @@ -20,11 +20,13 @@ "codePaneMenuBPTracingItems:" : "pre 9/2/2022 15:06", "compiledMethod" : "ct 3/30/2022 16:48", "determineIntervalOfReceiver:" : "pre 9/2/2022 14:29", - "determineIntervalOfVariableNameIn:having:" : "joabe 9/21/2023 21:40", - "determineIntervalToAnnotateFor:in:" : "joabe 9/21/2023 21:29", + "determineIntervalOfVariableNameIn:having:" : "joabe 9/26/2023 11:33", + "determineIntervalToAnnotateFor:in:" : "joabe 9/26/2023 13:52", "determineMessageSendNodeIn:" : "joabe 9/21/2023 21:31", "determineSelectorOfMessageSend:" : "pre 9/2/2022 14:49", - "doAddAnnotation:in:" : "joabe 9/21/2023 21:28", + "doAddAnnotation:in:" : "joabe 9/27/2023 17:22", + "doAddAnnotationMorphToMethod:in:" : "joabe 9/27/2023 16:21", + "doAddInstanceProbeToRegistry:nameIn:" : "joabe 9/28/2023 13:06", "doBrowseActualImplementersFromProbe:andSelector:" : "pre 9/2/2022 15:54", "doItReceiver" : "ct 3/30/2022 16:48", "exampleForEvaluation" : "ct 8/18/2021 23:15", @@ -38,5 +40,5 @@ "removeReplacementFromSelection" : "pre 4/29/2020 19:07", "removeSelectedAnnotationsSatisfying:" : "pre 9/2/2022 14:42", "removeTypeProbeFromSelection" : "pre 11/30/2022 09:40", - "saveMethodWithExamples" : "jb 3/5/2022 15:02", + "saveMethodWithExamples" : "joabe 9/22/2023 22:57", "saveMethodWithExamplesWith:" : "pre 8/6/2019 13:57" } } From 0a4c68a816b44c3e8ac0322ae00990ba8f4d33fe Mon Sep 17 00:00:00 2001 From: Joana Be Date: Thu, 28 Sep 2023 15:55:53 +0200 Subject: [PATCH 05/13] Proper adding and removal of instance variable probe morphs --- .../instance/addProbe..st | 4 ++-- .../instance/at..st | 4 ++++ .../instance/removeProbe..st | 2 +- .../methodProperties.json | 5 +++-- .../instance/assignedClassName..st | 3 +++ .../instance/assignedClassName.st | 3 +++ .../instance/className..st | 3 --- .../instance/className.st | 3 --- .../instance/variableName..st | 2 +- .../instance/variableName.st | 2 +- .../methodProperties.json | 8 ++++---- .../properties.json | 3 +-- .../instance/removeButtonClicked.st | 5 ++++- .../methodProperties.json | 2 +- .../instance/applyInstanceVariableIn.for..st | 13 +++++++++++++ .../BPStyler.class/instance/formatNonMethod..st | 17 +++++++++++++++++ .../BPStyler.class/instance/privateFormat..st | 2 +- .../BPStyler.class/methodProperties.json | 4 +++- .../doAddInstanceProbeToRegistry.nameIn..st | 4 ++-- .../CodeHolder.extension/methodProperties.json | 2 +- 20 files changed, 65 insertions(+), 26 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/at..st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName..st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName.st delete mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className..st delete mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className.st create mode 100644 packages/Babylonian-UI.package/BPStyler.class/instance/applyInstanceVariableIn.for..st create mode 100644 packages/Babylonian-UI.package/BPStyler.class/instance/formatNonMethod..st diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st index e04b5877..0d68c602 100644 --- a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st @@ -1,9 +1,9 @@ as yet unclassified addProbe: aProbe - nameToProbesDict at: aProbe className + nameToProbesDict at: aProbe assignedClassName ifPresent: [:registeredProbes | registeredProbes add: aProbe] ifAbsent: [ | k | k := KeyedSet keyBlock: [ :each | each variableName ]. - nameToProbesDict at: aProbe className put: k] + nameToProbesDict at: aProbe assignedClassName put: k] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/at..st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/at..st new file mode 100644 index 00000000..d81a8005 --- /dev/null +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/at..st @@ -0,0 +1,4 @@ +as yet unclassified +at: aClassName + + ^ nameToProbesDict at: aClassName \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st index e0484392..9eca447e 100644 --- a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st @@ -1,6 +1,6 @@ as yet unclassified removeProbe: aProbe - nameToProbesDict at: aProbe className + nameToProbesDict at: aProbe assignedClassName ifPresent: [:registeredProbes | registeredProbes remove: aProbe] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/methodProperties.json b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/methodProperties.json index 90daebc9..dd4bd954 100644 --- a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/methodProperties.json @@ -3,7 +3,8 @@ "clear" : "joabe 9/28/2023 12:59", "default" : "joabe 9/28/2023 12:57" }, "instance" : { - "addProbe:" : "joabe 9/28/2023 13:05", + "addProbe:" : "joabe 9/28/2023 15:50", + "at:" : "joabe 9/28/2023 15:08", "initialize" : "joabe 9/27/2023 16:33", "nameToProbesDict" : "joabe 9/28/2023 12:59", - "removeProbe:" : "joabe 9/27/2023 17:19" } } + "removeProbe:" : "joabe 9/28/2023 15:47" } } diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName..st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName..st new file mode 100644 index 00000000..0ba85068 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName..st @@ -0,0 +1,3 @@ +accessing +assignedClassName: aString + assignedClassName := aString \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName.st new file mode 100644 index 00000000..bb613fb3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName.st @@ -0,0 +1,3 @@ +accessing +assignedClassName + ^ assignedClassName \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className..st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className..st deleted file mode 100644 index 19023ac0..00000000 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -className: aString - className := aString \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className.st deleted file mode 100644 index 08d21063..00000000 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/className.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -className - ^ className \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName..st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName..st index bcffb8c4..a584d519 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName..st +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName..st @@ -1,4 +1,4 @@ accessing variableName: aString - variableName := aString \ No newline at end of file + self enclosedExpressionSource: aString \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName.st index cd8d2993..28a76450 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName.st +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName.st @@ -1,4 +1,4 @@ accessing variableName - ^ variableName \ No newline at end of file + ^ self enclosedExpressionSource \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json index c6954265..41ceb980 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json @@ -3,13 +3,13 @@ "annotationTag" : "joabe 9/25/2023 17:30" }, "instance" : { "asMorph" : "joabe 9/21/2023 22:32", + "assignedClassName" : "joabe 9/28/2023 15:45", + "assignedClassName:" : "joabe 9/28/2023 15:46", "canBeAnnotatedTo" : "joabe 9/21/2023 21:08", - "className" : "joabe 9/27/2023 17:16", - "className:" : "joabe 9/27/2023 17:16", "instrumentationCallFor:" : "joabe 9/25/2023 18:43", "isInstanceVariableProbe" : "joabe 9/21/2023 21:18", "probeTypeTag" : "joabe 9/25/2023 17:30", "removeFromMethod:" : "joabe 9/27/2023 16:43", - "variableName" : "joabe 9/27/2023 16:52", - "variableName:" : "joabe 9/27/2023 16:52", + "variableName" : "joabe 9/28/2023 14:47", + "variableName:" : "joabe 9/28/2023 14:47", "wantsMetaClassIndication" : "joabe 9/21/2023 21:08" } } diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json index 3d82397c..acf4ba73 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json @@ -6,8 +6,7 @@ ], "commentStamp" : "", "instvars" : [ - "variableName", - "className" ], + "assignedClassName" ], "name" : "BPInstanceVariableProbe", "pools" : [ ], diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st index 5e9e7b6f..0a8e2a3b 100644 --- a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st @@ -1,6 +1,9 @@ as yet unclassified removeButtonClicked + "LSP violation here - but otherwise the removal of the morph won't happen... -jb" + BPClassNameToInstanceProbes value removeProbe: self annotation. super removeButtonClicked. - BPClassNameToInstanceProbes value removeProbe: self. + + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json index 0179c284..697b024f 100644 --- a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "removeButtonClicked" : "joabe 9/27/2023 17:19", + "removeButtonClicked" : "joabe 9/28/2023 15:54", "step" : "joabe 9/25/2023 18:34" } } diff --git a/packages/Babylonian-UI.package/BPStyler.class/instance/applyInstanceVariableIn.for..st b/packages/Babylonian-UI.package/BPStyler.class/instance/applyInstanceVariableIn.for..st new file mode 100644 index 00000000..28d09f99 --- /dev/null +++ b/packages/Babylonian-UI.package/BPStyler.class/instance/applyInstanceVariableIn.for..st @@ -0,0 +1,13 @@ +private +applyInstanceVariableIn: aPreformmattedText for: anInstanceProbe + + | interval | + interval := (aPreformmattedText string + allRangesOfRegexMatches: '(''| )', anInstanceProbe variableName, '(''| )') first. + + aPreformmattedText + addAttribute: (BPTextDecoration new + anchoredMorph: (self annotationMorphFor: anInstanceProbe); + yourself) + from: interval start + 1 + to: interval stop - 1. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPStyler.class/instance/formatNonMethod..st b/packages/Babylonian-UI.package/BPStyler.class/instance/formatNonMethod..st new file mode 100644 index 00000000..9dbbc255 --- /dev/null +++ b/packages/Babylonian-UI.package/BPStyler.class/instance/formatNonMethod..st @@ -0,0 +1,17 @@ +private +formatNonMethod: aText + + | allRangesSubclassRegex className formattedText | + allRangesSubclassRegex := aText string allRangesOfRegexMatches: 'subclass\: #\w+'. + allRangesSubclassRegex ifEmpty: [^ super privateFormat: aText]. + "We are in a class definition and may need to add Text Decorations + for Instance Variable Probes." + className := aText string atAll: (allRangesSubclassRegex first start + ('subclass: #' size) to: + allRangesSubclassRegex first stop ). + formattedText := super privateFormat: aText. + BPClassNameToInstanceProbes value nameToProbesDict at: className + ifPresent: [:probesSet | probesSet do: [:anInstanceProbe | + self + applyInstanceVariableIn: formattedText + for: anInstanceProbe]]. + ^ formattedText \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPStyler.class/instance/privateFormat..st b/packages/Babylonian-UI.package/BPStyler.class/instance/privateFormat..st index 4641f827..741a9667 100644 --- a/packages/Babylonian-UI.package/BPStyler.class/instance/privateFormat..st +++ b/packages/Babylonian-UI.package/BPStyler.class/instance/privateFormat..st @@ -2,7 +2,7 @@ private privateFormat: aText | parseResult | - self ifNoSelectedMethod: [^ super privateFormat: aText]. + self ifNoSelectedMethod: [ ^ self formatNonMethod: aText ]. parseResult := PEGParserBPSmalltalk new match: aText asString diff --git a/packages/Babylonian-UI.package/BPStyler.class/methodProperties.json b/packages/Babylonian-UI.package/BPStyler.class/methodProperties.json index c713aa8d..adc2318a 100644 --- a/packages/Babylonian-UI.package/BPStyler.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPStyler.class/methodProperties.json @@ -10,13 +10,15 @@ "annotationCanBePutInSidebar:" : "pre 12/16/2020 19:02", "annotationMorphFor:" : "pre 1/6/2021 17:40", "applyAnnotationsFrom:to:" : "pre 7/20/2022 16:03", + "applyInstanceVariableIn:for:" : "joabe 9/28/2023 15:19", "expressionSourceFor:from:at:" : "pre 7/20/2022 16:58", "extractIntervals" : "jb 12/3/2020 22:57", + "formatNonMethod:" : "joabe 9/28/2023 15:39", "hasExamplesMorph:" : "pre 7/20/2022 09:31", "ifNoSelectedMethod:" : "pre 3/19/2020 11:07", "insertExamplesMorphInto:" : "pre 7/20/2022 10:45", "isAlreadyAnnotatedExpressionAt:in:" : "pre 8/17/2023 08:38", - "privateFormat:" : "jb 12/3/2020 23:35", + "privateFormat:" : "joabe 9/28/2023 15:22", "reformat:basedOn:" : "pre 7/20/2022 16:59", "selectedMethod:" : "ct 8/20/2021 06:24", "textForAnnotation:from:at:" : "pre 7/20/2022 16:58", diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddInstanceProbeToRegistry.nameIn..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddInstanceProbeToRegistry.nameIn..st index 7b1e5217..1aba3766 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddInstanceProbeToRegistry.nameIn..st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddInstanceProbeToRegistry.nameIn..st @@ -2,7 +2,7 @@ doAddInstanceProbeToRegistry: anInstanceVariableProbe nameIn: anInterval anInstanceVariableProbe - variableName: (self codeTextMorph text atAll: {anInterval start. anInterval stop}); - className: (self selectedClass name). + variableName: (self codeTextMorph text atAll: anInterval); + assignedClassName: (self selectedClass name). BPClassNameToInstanceProbes value addProbe: anInstanceVariableProbe \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json index 3adbe0ca..8735dd17 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json +++ b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json @@ -26,7 +26,7 @@ "determineSelectorOfMessageSend:" : "pre 9/2/2022 14:49", "doAddAnnotation:in:" : "joabe 9/27/2023 17:22", "doAddAnnotationMorphToMethod:in:" : "joabe 9/27/2023 16:21", - "doAddInstanceProbeToRegistry:nameIn:" : "joabe 9/28/2023 13:06", + "doAddInstanceProbeToRegistry:nameIn:" : "joabe 9/28/2023 15:50", "doBrowseActualImplementersFromProbe:andSelector:" : "pre 9/2/2022 15:54", "doItReceiver" : "ct 3/30/2022 16:48", "exampleForEvaluation" : "ct 8/18/2021 23:15", From fd097576c58aedf91d1150fa1c3ec3dc20a5dbf7 Mon Sep 17 00:00:00 2001 From: Joana Be Date: Thu, 5 Oct 2023 17:35:39 +0200 Subject: [PATCH 06/13] Adds linked probes at right intervals and deletes them properly --- ...nstrumentedVersionOf.basedOn.noPattern..st | 18 ------------- .../instance/compileCue.noPattern.ifFail..st | 2 +- .../instance/compileInstrumentedVersionOf..st | 10 +------ ...compileInstrumentedVersionOf.noPattern..st | 27 ------------------- .../instance/rewriteToSource..st | 2 +- .../BPCompiler.class/methodProperties.json | 8 +++--- .../rewriteAssignmentNode.withTag..st | 11 +++++--- .../methodProperties.json | 2 +- .../instance/removeFromMethod..st | 2 +- .../BPAnnotation.class/methodProperties.json | 2 +- .../instance/deleteLinkedProbes.st | 10 +++++++ .../instance/initialize.st | 6 +++++ .../instance/instrumentationCallFor..st | 8 +++--- .../instance/linkedProbes.st | 4 +++ .../instance/probeTypeTag.st | 2 +- .../instance/removeFromMethod..st | 2 +- .../methodProperties.json | 5 +++- .../properties.json | 3 ++- ...bpExtractVariableAssignmentRangesNamed..st | 6 +++++ .../extractAssignmentIntervalsFrom.named..st | 19 +++++++++++++ .../methodProperties.json | 2 ++ .../instance/removeButtonClicked.st | 6 +++-- .../instance/step.st | 2 +- .../methodProperties.json | 4 +-- ...termineIntervalOfVariableNameIn.having..st | 8 +++--- .../instance/determineMessageSendNodeIn..st | 1 - .../instance/doAddAnnotation.in..st | 3 ++- .../doAddInstanceProbeToRegistry.nameIn..st | 2 +- .../instance/doAddLinkedAnnotationsFor..st | 9 +++++++ .../instance/doAddLinkedAnnotationsFor.in..st | 14 ++++++++++ .../instance/styleText.in.referencing..st | 13 +++++++++ .../methodProperties.json | 13 +++++---- 32 files changed, 135 insertions(+), 91 deletions(-) delete mode 100644 packages/Babylonian-Compiler.package/BPCompiler.class/instance/backgroundCompileInstrumentedVersionOf.basedOn.noPattern..st delete mode 100644 packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf.noPattern..st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/deleteLinkedProbes.st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/initialize.st create mode 100644 packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/linkedProbes.st create mode 100644 packages/Babylonian-Core.package/CompiledMethod.extension/instance/bpExtractVariableAssignmentRangesNamed..st create mode 100644 packages/Babylonian-Core.package/CompiledMethod.extension/instance/extractAssignmentIntervalsFrom.named..st create mode 100644 packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddLinkedAnnotationsFor..st create mode 100644 packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddLinkedAnnotationsFor.in..st create mode 100644 packages/Babylonian-UI.package/CodeHolder.extension/instance/styleText.in.referencing..st diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/backgroundCompileInstrumentedVersionOf.basedOn.noPattern..st b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/backgroundCompileInstrumentedVersionOf.basedOn.noPattern..st deleted file mode 100644 index f043b700..00000000 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/backgroundCompileInstrumentedVersionOf.basedOn.noPattern..st +++ /dev/null @@ -1,18 +0,0 @@ -private -backgroundCompileInstrumentedVersionOf: aCue basedOn: parseResult noPattern: aBoolean - - | instrumentedResult newCode | - self halt. - newCode := self rewriteToSource: parseResult. - SystemChangeNotifier uniqueInstance doSilently: [ - "Wann ist aCue getClass compile nicht mit BPCompiler?" - instrumentedResult := - aCue getClass newCompiler compileCue: (CompilationCue - source: newCode - class: aCue getClass - environment: aCue environment - requestor: nil) - noPattern: aBoolean - ifFail: [^nil] ]. - "instrumentedResult := aCue getClass compile: newCode]." - \ No newline at end of file diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileCue.noPattern.ifFail..st b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileCue.noPattern.ifFail..st index 27c551bd..5c7fe145 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileCue.noPattern.ifFail..st +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileCue.noPattern.ifFail..st @@ -12,7 +12,7 @@ compileCue: aCueWithStyledSource noPattern: aBoolean ifFail: failBlock inside the morph to re-fullfill that premise again during compilation." | originalMethodNode bpUnstyledSource unstyledCue | bpUnstyledSource := aCueWithStyledSource sourceStream contents asString. - + unstyledCue := CompilationCue source: bpUnstyledSource readStream context: aCueWithStyledSource context diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf..st b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf..st index 5a762a6c..0cf5268d 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf..st +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf..st @@ -11,15 +11,7 @@ compileInstrumentedVersionOf: aCue ifTrue: [ self backgroundCompileInstrumentedVersionOf: aCue basedOn: parseResult. ^ true] - ifFalse: [ - "das oben schlägt fehl, weil er keine methoddeclaration findet" - "hier ist die cue kaputt, weil er keine class zuweisen kann. doch nochmal - ne andere compile version, die speziell für editclass zurechtgeschnitten ist?" - parseResult := PEGParserBPSmalltalk new - match: originalCode - startingFrom: #KeywordMessageSend. - parseResult succeeded ifTrue: [self backgroundCompileInstrumentedVersionOf: aCue basedOn: parseResult. - ^ true] ifFalse: [^false]]. + ifFalse: [^ false]. diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf.noPattern..st b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf.noPattern..st deleted file mode 100644 index 36d4d590..00000000 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileInstrumentedVersionOf.noPattern..st +++ /dev/null @@ -1,27 +0,0 @@ -private -compileInstrumentedVersionOf: aCue noPattern: aBoolean - - | originalCode parseResult startingFrom | - "We do not serialize the examples into the instrumented method as - they only 'live' in the base method." - originalCode := aCue sourceStream contents asBPSourceWithoutExamples. - startingFrom := aBoolean - ifFalse: [#MethodDeclaration] - ifTrue: [#KeywordMessageSend]. - - parseResult := PEGParserBPSmalltalk new - match: originalCode - startingFrom: startingFrom. - - parseResult succeeded - ifTrue: [ - self - backgroundCompileInstrumentedVersionOf: aCue - basedOn: parseResult - noPattern: aBoolean. - ^ true] - ifFalse: [^false]. - - - - \ No newline at end of file diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/rewriteToSource..st b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/rewriteToSource..st index d80af367..a76e3222 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/rewriteToSource..st +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/rewriteToSource..st @@ -1,4 +1,4 @@ private rewriteToSource: parseResult - + ^ self rewriter value: parseResult \ No newline at end of file diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json b/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json index c8f79d3c..0fd23097 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json @@ -6,12 +6,10 @@ "instance" : { "annotationKeywords" : "pre 11/8/2019 20:29", "backgroundCompileInstrumentedVersionOf:basedOn:" : "pre 10/12/2020 15:36", - "backgroundCompileInstrumentedVersionOf:basedOn:noPattern:" : "joabe 9/26/2023 16:07", - "compileCue:noPattern:ifFail:" : "joabe 9/27/2023 16:14", - "compileInstrumentedVersionOf:" : "joabe 9/22/2023 23:28", - "compileInstrumentedVersionOf:noPattern:" : "joabe 9/26/2023 15:54", + "compileCue:noPattern:ifFail:" : "joabe 10/2/2023 12:53", + "compileInstrumentedVersionOf:" : "jb 9/9/2021 17:31", "keywords" : "pre 11/30/2022 09:33", "methodSourceRequiresBPLayers:" : "pre 11/11/2019 15:49", "parse:" : "pre 5/3/2021 15:01", - "rewriteToSource:" : "pre 8/17/2020 08:54", + "rewriteToSource:" : "joabe 10/2/2023 12:48", "rewriter" : "jb 12/7/2020 18:03" } } diff --git a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/rewriteAssignmentNode.withTag..st b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/rewriteAssignmentNode.withTag..st index 58b206ff..d664a70c 100644 --- a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/rewriteAssignmentNode.withTag..st +++ b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/rewriteAssignmentNode.withTag..st @@ -7,9 +7,12 @@ rewriteAssignmentNode: aNode withTag: aTag ^ annotationInformation isProbe ifFalse: [self rewriteNode: aNode withTag: aTag] ifTrue: ["To handle assignment probes" - annotationInformation := annotationInformation asAssignmentProbe. - "The following is a hack to some degree, but a separate semantic would be overkill here" - variableNames := aNode children first "NormalStatement" children first "AssignmentOperation*" children collect: [:assignment | - assignment children first interval contents]. + annotationInformation := annotationInformation asAssignmentProbe. + variableNames := (aNode children first ruleName = #AnnotatedStatement) + ifTrue: [ "Nested assignments" #()] + ifFalse: ["The following is a hack to some degree, but a separate semantic would be overkill here" + aNode children first "NormalStatement" + children first "AssignmentOperation*" + children collect: [:assignment |assignment children first interval contents]] . annotationInformation variableNames: variableNames. annotationInformation instrumentationCallFor: (self value: aNode)] \ No newline at end of file diff --git a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json index 76ed7905..e741bbcb 100644 --- a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json +++ b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json @@ -27,7 +27,7 @@ "nextBlockId" : "pre 1/27/2020 09:17", "nextProbeId" : "pre 5/10/2019 12:20", "rewriteArgumentNode:withTag:" : "pre 7/23/2022 15:41", - "rewriteAssignmentNode:withTag:" : "pre 7/6/2020 18:10", + "rewriteAssignmentNode:withTag:" : "joabe 10/4/2023 15:31", "rewriteCascadeNode:withTag:" : "pre 4/29/2020 17:05", "rewriteNode:withTag:" : "pre 9/25/2020 11:20", "value:" : "pre 9/25/2020 11:42", diff --git a/packages/Babylonian-Core.package/BPAnnotation.class/instance/removeFromMethod..st b/packages/Babylonian-Core.package/BPAnnotation.class/instance/removeFromMethod..st index b9d4b532..d81d818b 100644 --- a/packages/Babylonian-Core.package/BPAnnotation.class/instance/removeFromMethod..st +++ b/packages/Babylonian-Core.package/BPAnnotation.class/instance/removeFromMethod..st @@ -1,7 +1,7 @@ initialize-release removeFromMethod: aCompiledMethod - "Intended to delete annotations from outside a browser" + "Intended to delete annotations but not the enclosed expression from outside a browser" aCompiledMethod bpAnnotations detect: [:anAnnotation | anAnnotation id = self id ] ifFound: [:theAnnotationToRemove | | text startOfTag expressionStart replacementStart replacementEnd | diff --git a/packages/Babylonian-Core.package/BPAnnotation.class/methodProperties.json b/packages/Babylonian-Core.package/BPAnnotation.class/methodProperties.json index c8ae160c..b97893df 100644 --- a/packages/Babylonian-Core.package/BPAnnotation.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPAnnotation.class/methodProperties.json @@ -31,7 +31,7 @@ "morphClass" : "jb 3/5/2022 12:54", "otherInformation" : "pre 5/29/2019 10:59", "otherInformation:" : "jb 12/7/2020 18:06", - "removeFromMethod:" : "jb 1/10/2022 19:20", + "removeFromMethod:" : "joabe 10/5/2023 17:28", "startTag" : "pre 5/10/2021 09:44", "startTagSource" : "jb 12/7/2020 18:06", "startTagSource:" : "pre 5/29/2019 10:59", diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/deleteLinkedProbes.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/deleteLinkedProbes.st new file mode 100644 index 00000000..0fa79817 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/deleteLinkedProbes.st @@ -0,0 +1,10 @@ +initialize-release +deleteLinkedProbes + + | browser | + browser := BPBrowser open. + self linkedProbes do: [:aProbe | + browser browseReference: aProbe methodReference. + browser removeAnnotations: {aProbe}]. + + browser currentWindow delete. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/initialize.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/initialize.st new file mode 100644 index 00000000..2442703e --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/initialize.st @@ -0,0 +1,6 @@ +initialize-release +initialize + + super initialize. + + linkedProbes := OrderedCollection new. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/instrumentationCallFor..st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/instrumentationCallFor..st index a4a182fd..95c019d7 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/instrumentationCallFor..st +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/instrumentationCallFor..st @@ -1,5 +1,7 @@ -as yet unclassified +serialization instrumentationCallFor: actualEnclosedExpressionSource - ^ '(self bpTraceVariable: [{1}] forProbe: {2} inContext: thisContext)' - format: {actualEnclosedExpressionSource . self id} \ No newline at end of file + ^ '(self bpTraceVariable: [{1}] forProbe: {2} linked: \{{3}\} inContext: thisContext)' + format: {actualEnclosedExpressionSource . + self id. + ((self linkedProbes gather: [:probe | probe id]) joinSeparatedBy: ' . ')} \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/linkedProbes.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/linkedProbes.st new file mode 100644 index 00000000..c4809403 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/linkedProbes.st @@ -0,0 +1,4 @@ +accessing +linkedProbes + + ^ linkedProbes \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/probeTypeTag.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/probeTypeTag.st index 148987e6..da5e9857 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/probeTypeTag.st +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/probeTypeTag.st @@ -1,4 +1,4 @@ -as yet unclassified +serialization probeTypeTag ^ 'bpInstanceProbe' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/removeFromMethod..st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/removeFromMethod..st index 40ad5f67..18baafbf 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/removeFromMethod..st +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/removeFromMethod..st @@ -1,4 +1,4 @@ -as yet unclassified +initialize-release removeFromMethod: aCompiledMethod "do nothing" \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json index 41ceb980..cd4f0cee 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json @@ -6,8 +6,11 @@ "assignedClassName" : "joabe 9/28/2023 15:45", "assignedClassName:" : "joabe 9/28/2023 15:46", "canBeAnnotatedTo" : "joabe 9/21/2023 21:08", - "instrumentationCallFor:" : "joabe 9/25/2023 18:43", + "deleteLinkedProbes" : "joabe 10/5/2023 17:34", + "initialize" : "joabe 10/4/2023 15:33", + "instrumentationCallFor:" : "joabe 10/4/2023 15:37", "isInstanceVariableProbe" : "joabe 9/21/2023 21:18", + "linkedProbes" : "joabe 10/4/2023 15:33", "probeTypeTag" : "joabe 9/25/2023 17:30", "removeFromMethod:" : "joabe 9/27/2023 16:43", "variableName" : "joabe 9/28/2023 14:47", diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json index acf4ba73..f53092e1 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json @@ -6,7 +6,8 @@ ], "commentStamp" : "", "instvars" : [ - "assignedClassName" ], + "assignedClassName", + "linkedProbes" ], "name" : "BPInstanceVariableProbe", "pools" : [ ], diff --git a/packages/Babylonian-Core.package/CompiledMethod.extension/instance/bpExtractVariableAssignmentRangesNamed..st b/packages/Babylonian-Core.package/CompiledMethod.extension/instance/bpExtractVariableAssignmentRangesNamed..st new file mode 100644 index 00000000..b841f234 --- /dev/null +++ b/packages/Babylonian-Core.package/CompiledMethod.extension/instance/bpExtractVariableAssignmentRangesNamed..st @@ -0,0 +1,6 @@ +*Babylonian-Core +bpExtractVariableAssignmentRangesNamed: aVariableName + + ^ (self extractAssignmentIntervalsFrom: self parseTree named: aVariableName) flatten + + \ No newline at end of file diff --git a/packages/Babylonian-Core.package/CompiledMethod.extension/instance/extractAssignmentIntervalsFrom.named..st b/packages/Babylonian-Core.package/CompiledMethod.extension/instance/extractAssignmentIntervalsFrom.named..st new file mode 100644 index 00000000..103f7753 --- /dev/null +++ b/packages/Babylonian-Core.package/CompiledMethod.extension/instance/extractAssignmentIntervalsFrom.named..st @@ -0,0 +1,19 @@ +*Babylonian-Core +extractAssignmentIntervalsFrom: aRBNodeWithBody named: aVariableName + + "Private" + | currentIntervals nestedIntervals | + "No shadowing" + ((aRBNodeWithBody body temporaries collect: [:aVariableNode | aVariableNode token value]) + includes: aVariableName) ifTrue: [^ #()]. + + nestedIntervals := aRBNodeWithBody body statements select: [:aRBNode | aRBNode isBlock] + thenCollect: [:aBlockNode | self extractAssignmentIntervalsFrom: aBlockNode named: aVariableName]. + currentIntervals := aRBNodeWithBody body statements select: [:aRBNode | + aRBNode isAssignment and: [aRBNode variable token value = aVariableName]] + thenCollect: [:anAssignmentNode | + anAssignmentNode startWithoutParentheses@anAssignmentNode stopWithoutParentheses]. + + ^ currentIntervals, nestedIntervals + + \ No newline at end of file diff --git a/packages/Babylonian-Core.package/CompiledMethod.extension/methodProperties.json b/packages/Babylonian-Core.package/CompiledMethod.extension/methodProperties.json index 7b1f9357..28eb6b82 100644 --- a/packages/Babylonian-Core.package/CompiledMethod.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/CompiledMethod.extension/methodProperties.json @@ -5,10 +5,12 @@ "bpActiveExamples" : "pre 8/20/2020 15:51", "bpAnnotations" : "pre 6/24/2021 14:26", "bpExamples" : "pre 1/11/2023 15:01", + "bpExtractVariableAssignmentRangesNamed:" : "joabe 10/4/2023 14:47", "bpNewExampleFrom:" : "pre 5/10/2021 09:11", "bpRemoveExample:" : "pre 5/19/2021 21:35", "compiledMethod" : "pre 7/7/2020 15:39", "exampleInstanceName" : "pre 9/28/2021 16:22", + "extractAssignmentIntervalsFrom:named:" : "joabe 10/4/2023 14:21", "isBPInstalled" : "pre 1/11/2021 12:00", "isExampleInstanceMethod" : "pre 9/28/2021 16:00", "newExampleInstance" : "pre 9/28/2021 16:00" } } diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st index 0a8e2a3b..f1a92ae9 100644 --- a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st @@ -1,9 +1,11 @@ as yet unclassified removeButtonClicked - "LSP violation here - but otherwise the removal of the morph won't happen... -jb" + self annotation deleteLinkedProbes. + BPClassNameToInstanceProbes value removeProbe: self annotation. - super removeButtonClicked. + + self containingBrowser removeAnnotations: {self annotation}. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/step.st b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/step.st index c43d077e..e7a3bab8 100644 --- a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/step.st +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/step.st @@ -2,7 +2,7 @@ as yet unclassified step | newTraces tracesChanged | - self resetHeight. + "self resetHeight." "newTraces := self getTraces asIdentitySet. tracesChanged := newTraces ~= displayedTraces. diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json index 697b024f..be26d723 100644 --- a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "removeButtonClicked" : "joabe 9/28/2023 15:54", - "step" : "joabe 9/25/2023 18:34" } } + "removeButtonClicked" : "joabe 10/4/2023 16:22", + "step" : "joabe 10/4/2023 11:52" } } diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st index 6dc34a4f..9cdd27bc 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st @@ -12,11 +12,13 @@ determineIntervalOfVariableNameIn: anInterval having: aTopologicalCollectionOfAn selectedText := (self contents atAll: anInterval) withBlanksTrimmed. self flag: #todo. "wenn es sowas wie aha und aha2 gibt, dann wird das falsch sein, wenn ich aha markiere und aha2 als erstes kommt" + "restliches todo: test schreiben" ^ self selectedClassOrMetaClass instVarNames detect: [:aVariable | aVariable = selectedText] - ifFound: [:matchingVariable | | start | - start := self contents findString: matchingVariable. - ^ Interval from: start to: start + matchingVariable size - 1] + ifFound: [:matchingVariable | | interval | + "in case we have variables like 'foo2' and 'foo' we have to consider spaces or '' too" + interval := (self contents allRangesOfRegexMatches: '(''| )', matchingVariable, '(''| )') first. + ^ Interval from: (interval start + 1) to: (interval stop - 1)] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineMessageSendNodeIn..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineMessageSendNodeIn..st index 19739da7..bf83c13b 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineMessageSendNodeIn..st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineMessageSendNodeIn..st @@ -3,7 +3,6 @@ determineMessageSendNodeIn: anInterval | nodes messageSendRuleNames lowestMessageSend | self bpEnsureContentsAndSelectedMessage. - self flag: #todo. "will break for instance probes jb" nodes := currentCompiledMethod bpSourceMap at: anInterval start. messageSendRuleNames := #(ExpressionOperandCascade ExpressionUnaryCascade ExpressionBinaryCascade UnaryMessageSend BinaryMessageSend KeywordMessageSend). ^ lowestMessageSend := nodes reversed diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotation.in..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotation.in..st index a19159cf..a7d846b3 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotation.in..st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotation.in..st @@ -6,5 +6,6 @@ doAddAnnotation: anAnnotation in: interval actualInterval ifNil: [self codeTextMorph textMorph flash. ^ self]. anAnnotation isInstanceVariableProbe - ifTrue: [self doAddInstanceProbeToRegistry: anAnnotation nameIn: actualInterval] + ifTrue: [self doAddInstanceProbeToRegistry: anAnnotation nameIn: actualInterval. + self doAddLinkedAnnotationsFor: anAnnotation] ifFalse: [self doAddAnnotationMorphToMethod: anAnnotation in: actualInterval]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddInstanceProbeToRegistry.nameIn..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddInstanceProbeToRegistry.nameIn..st index 1aba3766..91449aa3 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddInstanceProbeToRegistry.nameIn..st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddInstanceProbeToRegistry.nameIn..st @@ -2,7 +2,7 @@ doAddInstanceProbeToRegistry: anInstanceVariableProbe nameIn: anInterval anInstanceVariableProbe - variableName: (self codeTextMorph text atAll: anInterval); + variableName: (self codeTextMorph text atAll: anInterval) asString; assignedClassName: (self selectedClass name). BPClassNameToInstanceProbes value addProbe: anInstanceVariableProbe \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddLinkedAnnotationsFor..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddLinkedAnnotationsFor..st new file mode 100644 index 00000000..cfe49da8 --- /dev/null +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddLinkedAnnotationsFor..st @@ -0,0 +1,9 @@ +*Babylonian-UI-private +doAddLinkedAnnotationsFor: anInstanceVariableProbe + + | allSenderMethods | + allSenderMethods := (self systemNavigation + allAccessesTo: anInstanceVariableProbe variableName + from: (Smalltalk bindingOf: (anInstanceVariableProbe assignedClassName asSymbol)) value). + + allSenderMethods collect: [:aMethodReference | self doAddLinkedAnnotationsFor: anInstanceVariableProbe in: aMethodReference]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddLinkedAnnotationsFor.in..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddLinkedAnnotationsFor.in..st new file mode 100644 index 00000000..0465ce44 --- /dev/null +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddLinkedAnnotationsFor.in..st @@ -0,0 +1,14 @@ +*Babylonian-UI-private +doAddLinkedAnnotationsFor: anInstanceVariableProbe in: aMethodReference + + | allRanges styledText | + allRanges := aMethodReference compiledMethod bpExtractVariableAssignmentRangesNamed: anInstanceVariableProbe variableName. + styledText := aMethodReference sourceCode. + + allRanges do: [:aRange | anInstanceVariableProbe linkedProbes add: + (self styleText: styledText in: aRange referencing: aMethodReference)]. + + allRanges ifNotEmpty: [SystemChangeNotifier uniqueInstance doSilently: + [aMethodReference actualClass + compile: (BPStyler new unstyledTextFrom: styledText) + classified: aMethodReference category]]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/styleText.in.referencing..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/styleText.in.referencing..st new file mode 100644 index 00000000..b62f06a7 --- /dev/null +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/styleText.in.referencing..st @@ -0,0 +1,13 @@ +*Babylonian-UI-private +styleText: aText in: aRange referencing: aMethodReference + + | linkedProbe | + self flag: #todo. "If assignment already has an annotation, re-use that one" + linkedProbe := BPProbe new methodReference: aMethodReference. + aText addAttribute: ( + BPTextDecoration new + anchoredMorph: linkedProbe asMorph; + yourself) + from: aRange x + to: aRange y. + ^ linkedProbe \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json index 8735dd17..f8fc798a 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json +++ b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json @@ -20,13 +20,15 @@ "codePaneMenuBPTracingItems:" : "pre 9/2/2022 15:06", "compiledMethod" : "ct 3/30/2022 16:48", "determineIntervalOfReceiver:" : "pre 9/2/2022 14:29", - "determineIntervalOfVariableNameIn:having:" : "joabe 9/26/2023 11:33", + "determineIntervalOfVariableNameIn:having:" : "joabe 10/2/2023 13:21", "determineIntervalToAnnotateFor:in:" : "joabe 9/26/2023 13:52", - "determineMessageSendNodeIn:" : "joabe 9/21/2023 21:31", + "determineMessageSendNodeIn:" : "joabe 10/2/2023 13:26", "determineSelectorOfMessageSend:" : "pre 9/2/2022 14:49", - "doAddAnnotation:in:" : "joabe 9/27/2023 17:22", + "doAddAnnotation:in:" : "joabe 10/4/2023 16:16", "doAddAnnotationMorphToMethod:in:" : "joabe 9/27/2023 16:21", - "doAddInstanceProbeToRegistry:nameIn:" : "joabe 9/28/2023 15:50", + "doAddInstanceProbeToRegistry:nameIn:" : "joabe 10/2/2023 16:07", + "doAddLinkedAnnotationsFor:" : "joabe 10/4/2023 16:18", + "doAddLinkedAnnotationsFor:in:" : "joabe 10/5/2023 12:25", "doBrowseActualImplementersFromProbe:andSelector:" : "pre 9/2/2022 15:54", "doItReceiver" : "ct 3/30/2022 16:48", "exampleForEvaluation" : "ct 8/18/2021 23:15", @@ -41,4 +43,5 @@ "removeSelectedAnnotationsSatisfying:" : "pre 9/2/2022 14:42", "removeTypeProbeFromSelection" : "pre 11/30/2022 09:40", "saveMethodWithExamples" : "joabe 9/22/2023 22:57", - "saveMethodWithExamplesWith:" : "pre 8/6/2019 13:57" } } + "saveMethodWithExamplesWith:" : "pre 8/6/2019 13:57", + "styleText:in:referencing:" : "joabe 10/5/2023 12:24" } } From 17cac43ba00b3af764d500dcb2bf12ab28ee09e4 Mon Sep 17 00:00:00 2001 From: Joana Be Date: Fri, 6 Oct 2023 11:25:33 +0200 Subject: [PATCH 07/13] Display trace values of linked probes as instance variable's trace --- .../instance/addProbe..st | 1 + .../instance/removeProbe..st | 4 +++- .../methodProperties.json | 4 ++-- .../instance/newValuesMorphTracing..st | 4 ---- .../instance/valuesMorphClass.st | 4 ++++ .../methodProperties.json | 4 ++-- .../instance/valuesMorphClass.st | 4 ++++ .../methodProperties.json | 3 ++- .../instance/linkedProbes.st | 4 ++++ .../instance/removeButtonClicked.st | 2 +- .../instance/step.st | 17 ----------------- .../updateExpressionMorphIfNecessary.st | 4 ++++ .../instance/valuesMorphClass.st | 4 ++++ .../methodProperties.json | 4 +++- .../README.md | 1 + .../instance/basicValuesFor..st | 5 +++++ .../methodProperties.json | 5 +++++ .../properties.json | 14 ++++++++++++++ .../instance/newValuesMorphTracing..st | 3 +-- .../instance/valuesMorphClass.st | 4 ++++ .../BPProbeMorph.class/methodProperties.json | 3 ++- .../instance/newValuesMorphTracing..st | 5 ----- .../instance/valuesMorphClass.st | 4 ++++ .../methodProperties.json | 4 ++-- .../instance/valuesMorphClass.st | 4 ++++ .../methodProperties.json | 3 ++- .../instance/newValuesMorphTracing..st | 5 ----- .../instance/valuesMorphClass.st | 4 ++++ .../methodProperties.json | 4 ++-- 29 files changed, 84 insertions(+), 47 deletions(-) delete mode 100644 packages/Babylonian-UI.package/BPAssertionMorph.class/instance/newValuesMorphTracing..st create mode 100644 packages/Babylonian-UI.package/BPAssertionMorph.class/instance/valuesMorphClass.st create mode 100644 packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valuesMorphClass.st create mode 100644 packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/linkedProbes.st delete mode 100644 packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/step.st create mode 100644 packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/updateExpressionMorphIfNecessary.st create mode 100644 packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/valuesMorphClass.st create mode 100644 packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/README.md create mode 100644 packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/instance/basicValuesFor..st create mode 100644 packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesMorphClass.st delete mode 100644 packages/Babylonian-UI.package/BPProfilingProbeMorph.class/instance/newValuesMorphTracing..st create mode 100644 packages/Babylonian-UI.package/BPProfilingProbeMorph.class/instance/valuesMorphClass.st create mode 100644 packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/valuesMorphClass.st delete mode 100644 packages/Babylonian-UI.package/BPTypeProbeMorph.class/instance/newValuesMorphTracing..st create mode 100644 packages/Babylonian-UI.package/BPTypeProbeMorph.class/instance/valuesMorphClass.st diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st index 0d68c602..82b0fe5a 100644 --- a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st @@ -5,5 +5,6 @@ addProbe: aProbe ifPresent: [:registeredProbes | registeredProbes add: aProbe] ifAbsent: [ | k | k := KeyedSet keyBlock: [ :each | each variableName ]. + k add: aProbe. nameToProbesDict at: aProbe assignedClassName put: k] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st index 9eca447e..405c92a9 100644 --- a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st @@ -2,5 +2,7 @@ as yet unclassified removeProbe: aProbe nameToProbesDict at: aProbe assignedClassName - ifPresent: [:registeredProbes | registeredProbes remove: aProbe] + ifPresent: [:registeredProbes | registeredProbes remove: aProbe. + registeredProbes ifEmpty: + [nameToProbesDict removeKey: aProbe assignedClassName]] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/methodProperties.json b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/methodProperties.json index dd4bd954..ed306ec6 100644 --- a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/methodProperties.json @@ -3,8 +3,8 @@ "clear" : "joabe 9/28/2023 12:59", "default" : "joabe 9/28/2023 12:57" }, "instance" : { - "addProbe:" : "joabe 9/28/2023 15:50", + "addProbe:" : "joabe 10/5/2023 18:01", "at:" : "joabe 9/28/2023 15:08", "initialize" : "joabe 9/27/2023 16:33", "nameToProbesDict" : "joabe 9/28/2023 12:59", - "removeProbe:" : "joabe 9/28/2023 15:47" } } + "removeProbe:" : "joabe 10/5/2023 17:47" } } diff --git a/packages/Babylonian-UI.package/BPAssertionMorph.class/instance/newValuesMorphTracing..st b/packages/Babylonian-UI.package/BPAssertionMorph.class/instance/newValuesMorphTracing..st deleted file mode 100644 index b3f74990..00000000 --- a/packages/Babylonian-UI.package/BPAssertionMorph.class/instance/newValuesMorphTracing..st +++ /dev/null @@ -1,4 +0,0 @@ -private - ui -newValuesMorphTracing: aTrace - - ^ BPAssertionValuesMorph newIn: self tracing: aTrace \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPAssertionMorph.class/instance/valuesMorphClass.st b/packages/Babylonian-UI.package/BPAssertionMorph.class/instance/valuesMorphClass.st new file mode 100644 index 00000000..e2dcaddd --- /dev/null +++ b/packages/Babylonian-UI.package/BPAssertionMorph.class/instance/valuesMorphClass.st @@ -0,0 +1,4 @@ +private - ui +valuesMorphClass + + ^ BPAssertionValuesMorph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPAssertionMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPAssertionMorph.class/methodProperties.json index 54cfe3f9..c0f4099e 100644 --- a/packages/Babylonian-UI.package/BPAssertionMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPAssertionMorph.class/methodProperties.json @@ -7,7 +7,7 @@ "initialize" : "jb 12/7/2020 19:01", "isAssertion" : "pre 11/18/2019 11:50", "isProbe" : "pre 11/18/2019 12:31", - "newValuesMorphTracing:" : "joabe 7/1/2023 17:03", "relevantTracesOf:do:" : "pre 5/3/2021 10:46", "updateAssertionFieldsMorph" : "pre 2/22/2021 12:24", - "updateFrom:" : "joabe 7/1/2023 17:05" } } + "updateFrom:" : "joabe 7/1/2023 17:05", + "valuesMorphClass" : "joabe 10/6/2023 11:21" } } diff --git a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valuesMorphClass.st b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valuesMorphClass.st new file mode 100644 index 00000000..9e59f861 --- /dev/null +++ b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valuesMorphClass.st @@ -0,0 +1,4 @@ +private - ui +valuesMorphClass + + ^ BPAssignmentValuesMorph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json index f71c1686..80ef954f 100644 --- a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json @@ -2,4 +2,5 @@ "class" : { }, "instance" : { - "updateExpressionMorphIfNecessary" : "pre 6/7/2021 16:37" } } + "updateExpressionMorphIfNecessary" : "pre 6/7/2021 16:37", + "valuesMorphClass" : "joabe 10/6/2023 11:21" } } diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/linkedProbes.st b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/linkedProbes.st new file mode 100644 index 00000000..a12608a7 --- /dev/null +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/linkedProbes.st @@ -0,0 +1,4 @@ +accessing +linkedProbes + + ^ self annotation linkedProbes \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st index f1a92ae9..7321b409 100644 --- a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st @@ -1,4 +1,4 @@ -as yet unclassified +actions removeButtonClicked self annotation deleteLinkedProbes. diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/step.st b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/step.st deleted file mode 100644 index e7a3bab8..00000000 --- a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/step.st +++ /dev/null @@ -1,17 +0,0 @@ -as yet unclassified -step - - | newTraces tracesChanged | - "self resetHeight." - - "newTraces := self getTraces asIdentitySet. - tracesChanged := newTraces ~= displayedTraces. - - (allTracesCompleted not or: [tracesChanged]) ifTrue: [ - allTracesCompleted := newTraces - ifEmpty: [true] - ifNotEmpty: [:ts | ts allSatisfy: [:t | t hasTraceCompleted]]. - self updateFrom: (newTraces ifEmpty: [self emptyTraces]). - displayedTraces := newTraces]." - - "tracesChanged ifTrue: [self refreshTextComposition]." \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/updateExpressionMorphIfNecessary.st b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/updateExpressionMorphIfNecessary.st new file mode 100644 index 00000000..497eeb4d --- /dev/null +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/updateExpressionMorphIfNecessary.st @@ -0,0 +1,4 @@ +private - ui +updateExpressionMorphIfNecessary + + "Expressions can not be put on instance variable probes currently --jb, pre" \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/valuesMorphClass.st b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/valuesMorphClass.st new file mode 100644 index 00000000..20f8e652 --- /dev/null +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/valuesMorphClass.st @@ -0,0 +1,4 @@ +private - ui +valuesMorphClass + + ^ BPInstanceVariableValuesMorph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json index be26d723..51640f17 100644 --- a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json @@ -2,5 +2,7 @@ "class" : { }, "instance" : { + "linkedProbes" : "joabe 10/6/2023 11:13", "removeButtonClicked" : "joabe 10/4/2023 16:22", - "step" : "joabe 10/4/2023 11:52" } } + "updateExpressionMorphIfNecessary" : "joabe 10/6/2023 10:34", + "valuesMorphClass" : "joabe 10/6/2023 11:21" } } diff --git a/packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/README.md b/packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/README.md new file mode 100644 index 00000000..0e10ccce --- /dev/null +++ b/packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/README.md @@ -0,0 +1 @@ +Collect traces values not for the given probe id, but the linked probe ids in chronological order \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/instance/basicValuesFor..st b/packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/instance/basicValuesFor..st new file mode 100644 index 00000000..87bf8d4e --- /dev/null +++ b/packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/instance/basicValuesFor..st @@ -0,0 +1,5 @@ +accessing +basicValuesFor: aTrace + + ^ ((self probeMorph linkedProbes collect: [:aLinkedProbe | aTrace valuesForProbeId: aLinkedProbe id]) flatten) + sorted: [:aTraceValue | aTraceValue chronologicalPosition] ascending \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/methodProperties.json new file mode 100644 index 00000000..ca1a1c38 --- /dev/null +++ b/packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "basicValuesFor:" : "joabe 10/6/2023 11:23" } } diff --git a/packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/properties.json b/packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/properties.json new file mode 100644 index 00000000..1c6c80a1 --- /dev/null +++ b/packages/Babylonian-UI.package/BPInstanceVariableValuesMorph.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-Morphs", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "joabe 10/6/2023 11:11", + "instvars" : [ + ], + "name" : "BPInstanceVariableValuesMorph", + "pools" : [ + ], + "super" : "BPValuesMorph", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newValuesMorphTracing..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newValuesMorphTracing..st index 0a548403..8fb4369e 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newValuesMorphTracing..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newValuesMorphTracing..st @@ -1,5 +1,4 @@ private - ui newValuesMorphTracing: aTrace - - ^ BPValuesMorph newIn: self tracing: aTrace \ No newline at end of file + ^ self valuesMorphClass newIn: self tracing: aTrace \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesMorphClass.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesMorphClass.st new file mode 100644 index 00000000..9b2ecec8 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesMorphClass.st @@ -0,0 +1,4 @@ +private - ui +valuesMorphClass + + ^ BPValuesMorph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json index d872c408..5d06b57c 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json @@ -22,7 +22,7 @@ "newLabelMorph" : "joabe 5/9/2023 17:35", "newLineMorphFor:" : "joabe 7/2/2023 16:33", "newScrollPane" : "pre 1/6/2021 10:50", - "newValuesMorphTracing:" : "joabe 7/1/2023 17:02", + "newValuesMorphTracing:" : "joabe 10/6/2023 11:20", "newVisualizeButtonFor:" : "jb 10/28/2021 18:57", "noValuesTextFor:" : "joabe 5/31/2023 19:34", "relevantTracesOf:do:" : "pre 5/3/2021 10:46", @@ -34,4 +34,5 @@ "updateLabelMorphIfNecessary" : "jb 10/28/2021 18:25", "updateResultsFrom:" : "joabe 7/1/2023 17:10", "updateVisualizationMorphInside:over:for:" : "pre 5/26/2021 20:43", + "valuesMorphClass" : "joabe 10/6/2023 11:19", "visualizeButtonClickedFor:" : "pre 5/27/2021 12:06" } } diff --git a/packages/Babylonian-UI.package/BPProfilingProbeMorph.class/instance/newValuesMorphTracing..st b/packages/Babylonian-UI.package/BPProfilingProbeMorph.class/instance/newValuesMorphTracing..st deleted file mode 100644 index 78c9befe..00000000 --- a/packages/Babylonian-UI.package/BPProfilingProbeMorph.class/instance/newValuesMorphTracing..st +++ /dev/null @@ -1,5 +0,0 @@ -private - ui -newValuesMorphTracing: aTrace - - - ^ BPProfilingValuesMorph newIn: self tracing: aTrace \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProfilingProbeMorph.class/instance/valuesMorphClass.st b/packages/Babylonian-UI.package/BPProfilingProbeMorph.class/instance/valuesMorphClass.st new file mode 100644 index 00000000..395c1b20 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProfilingProbeMorph.class/instance/valuesMorphClass.st @@ -0,0 +1,4 @@ +private - ui +valuesMorphClass + + ^ BPProfilingValuesMorph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProfilingProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPProfilingProbeMorph.class/methodProperties.json index b5dc3f21..128f6e46 100644 --- a/packages/Babylonian-UI.package/BPProfilingProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPProfilingProbeMorph.class/methodProperties.json @@ -4,6 +4,6 @@ "instance" : { "annotationLabel" : "pre 11/29/2022 16:35", "isProfilingProbe" : "pre 11/29/2022 16:34", - "newValuesMorphTracing:" : "joabe 7/1/2023 17:03", "standardDeviation:" : "pre 11/30/2022 10:12", - "updateFrom:" : "joabe 7/1/2023 17:05" } } + "updateFrom:" : "joabe 7/1/2023 17:05", + "valuesMorphClass" : "joabe 10/6/2023 11:22" } } diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/valuesMorphClass.st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/valuesMorphClass.st new file mode 100644 index 00000000..1557d156 --- /dev/null +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/valuesMorphClass.st @@ -0,0 +1,4 @@ +private - ui +valuesMorphClass + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json index eec4bbe2..ee660648 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json @@ -14,4 +14,5 @@ "step" : "pre 1/11/2021 13:59", "stepTime" : "pre 8/20/2020 17:35", "update:" : "jb 12/7/2020 19:00", - "updateFrom:" : "jb 12/7/2020 19:00" } } + "updateFrom:" : "jb 12/7/2020 19:00", + "valuesMorphClass" : "joabe 10/6/2023 11:20" } } diff --git a/packages/Babylonian-UI.package/BPTypeProbeMorph.class/instance/newValuesMorphTracing..st b/packages/Babylonian-UI.package/BPTypeProbeMorph.class/instance/newValuesMorphTracing..st deleted file mode 100644 index 5af76578..00000000 --- a/packages/Babylonian-UI.package/BPTypeProbeMorph.class/instance/newValuesMorphTracing..st +++ /dev/null @@ -1,5 +0,0 @@ -private - ui -newValuesMorphTracing: aTrace - - - ^ BPTypeValuesMorph newIn: self tracing: aTrace \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPTypeProbeMorph.class/instance/valuesMorphClass.st b/packages/Babylonian-UI.package/BPTypeProbeMorph.class/instance/valuesMorphClass.st new file mode 100644 index 00000000..81851d0a --- /dev/null +++ b/packages/Babylonian-UI.package/BPTypeProbeMorph.class/instance/valuesMorphClass.st @@ -0,0 +1,4 @@ +private - ui +valuesMorphClass + + ^ BPTypeValuesMorph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPTypeProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPTypeProbeMorph.class/methodProperties.json index ae69f83f..3f085622 100644 --- a/packages/Babylonian-UI.package/BPTypeProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPTypeProbeMorph.class/methodProperties.json @@ -4,5 +4,5 @@ "instance" : { "annotationLabel" : "pre 11/30/2022 09:34", "isTypeProbe" : "pre 11/30/2022 09:36", - "newValuesMorphTracing:" : "joabe 7/1/2023 17:04", - "updateFrom:" : "joabe 7/1/2023 17:05" } } + "updateFrom:" : "joabe 7/1/2023 17:05", + "valuesMorphClass" : "joabe 10/6/2023 11:22" } } From 6a288f6a5dac68c38d755713c72b710a7bb73da6 Mon Sep 17 00:00:00 2001 From: Joana Be Date: Fri, 6 Oct 2023 11:54:18 +0200 Subject: [PATCH 08/13] Fixes step of all probes --- .../BPTraceBasedMorph.class/instance/step.st | 3 ++- .../BPTraceBasedMorph.class/methodProperties.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/step.st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/step.st index 5c2d58ab..aa5d4d45 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/step.st +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/step.st @@ -2,7 +2,8 @@ stepping and presenter step | newTraces tracesChanged | - self methodReference ifNil: [^ false]. + "Ugly to have subclass specific condition here, but needed to avoid step method duplication - jb" + (self methodReference isNil and: [self annotation isInstanceVariableProbe not]) ifTrue: [^ false]. self resetHeight. newTraces := self getTraces asIdentitySet. diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json index ee660648..82d8cc88 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json @@ -11,7 +11,7 @@ "newWidgetsMorph" : "pre 11/23/2020 13:43", "removeLinesWithoutCurrentTrace:" : "jb 12/7/2020 19:00", "resetHeight" : "pre 1/11/2021 13:59", - "step" : "pre 1/11/2021 13:59", + "step" : "joabe 10/6/2023 11:32", "stepTime" : "pre 8/20/2020 17:35", "update:" : "jb 12/7/2020 19:00", "updateFrom:" : "jb 12/7/2020 19:00", From 2bc6f0adaec444600a5b0b65424bf31042edb6d0 Mon Sep 17 00:00:00 2001 From: Joana Bergsiek Date: Sat, 7 Oct 2023 19:21:19 +0200 Subject: [PATCH 09/13] Adds test and deletes comments --- .../instance/removeFromMethod..st | 2 +- .../BPAnnotation.class/methodProperties.json | 2 +- .../instance/addProbe..st | 2 +- .../instance/at..st | 2 +- .../instance/removeProbe..st | 2 +- .../instance/asMorph.st | 4 +--- .../instance/assignedClassName..st | 1 + .../instance/assignedClassName.st | 1 + .../instance/deleteLinkedProbes.st | 1 + .../instance/instrumentationCallFor..st | 1 + .../methodProperties.json | 10 +++++----- .../bpTraceVariable.forProbe.inContext..st | 12 ------------ .../Object.extension/methodProperties.json | 1 - .../testCorrectIntervalForInstanceVariable.st | 2 ++ ...valForExistingVariableAndPerfectSelection.st | 5 +++++ ...orExistingVariableIgnoresSpaceInSelection.st | 5 +++++ ...ervalForExistingVariableButWrongSelection.st | 5 +++++ ...ractsCorrectInstanceVariableProbeInterval.st | 2 ++ ...stHasCorrectInstanceVariableProbeInterval.st | 2 ++ .../BPBrowserTest.class/methodProperties.json | 6 ++++++ .../testExtractVariableAssignmentIntervals.st | 5 +++++ ...tingLeftHandOfDoubleNestedAssignmentProbe.st | 13 +++++++++++++ ...tingLeftHandOfTripleNestedAssignmentProbe.st | 13 +++++++++++++ .../BPCompilerTest.class/methodProperties.json | 3 +++ .../instance/testNestedAnnotatedAssignments.st | 17 +++++++++++++++++ .../methodProperties.json | 1 + .../BPTestExamplesClass.class/instance/foo..st | 3 +++ .../BPTestExamplesClass.class/instance/foo.st | 3 +++ .../BPTestExamplesClass.class/instance/foo2..st | 3 +++ .../BPTestExamplesClass.class/instance/foo2.st | 3 +++ .../instance/methodSettingInstanceVars.st | 17 +++++++++++++++++ .../methodProperties.json | 5 +++++ .../BPTestExamplesClass.class/properties.json | 3 ++- ...eIn.for..st => applyInstanceProbeIn.for..st} | 6 +++--- .../BPStyler.class/instance/formatNonMethod..st | 2 +- .../BPStyler.class/methodProperties.json | 4 ++-- ...determineIntervalOfVariableNameIn.having..st | 3 --- .../CodeHolder.extension/methodProperties.json | 2 +- 38 files changed, 137 insertions(+), 37 deletions(-) delete mode 100644 packages/Babylonian-Core.package/Object.extension/instance/bpTraceVariable.forProbe.inContext..st create mode 100644 packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testCorrectIntervalForInstanceVariable.st create mode 100644 packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testDeterminesCorrectIntervalForExistingVariableAndPerfectSelection.st create mode 100644 packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testDeterminesCorrectIntervalForExistingVariableIgnoresSpaceInSelection.st create mode 100644 packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testDeterminesNoIntervalForExistingVariableButWrongSelection.st create mode 100644 packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testExtractsCorrectInstanceVariableProbeInterval.st create mode 100644 packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testHasCorrectInstanceVariableProbeInterval.st create mode 100644 packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testExtractVariableAssignmentIntervals.st create mode 100644 packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingLeftHandOfDoubleNestedAssignmentProbe.st create mode 100644 packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingLeftHandOfTripleNestedAssignmentProbe.st create mode 100644 packages/Babylonian-Tests.package/BPSmalltalkGrammarTest.class/instance/testNestedAnnotatedAssignments.st create mode 100644 packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo..st create mode 100644 packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo.st create mode 100644 packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo2..st create mode 100644 packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo2.st create mode 100644 packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/methodSettingInstanceVars.st rename packages/Babylonian-UI.package/BPStyler.class/instance/{applyInstanceVariableIn.for..st => applyInstanceProbeIn.for..st} (68%) diff --git a/packages/Babylonian-Core.package/BPAnnotation.class/instance/removeFromMethod..st b/packages/Babylonian-Core.package/BPAnnotation.class/instance/removeFromMethod..st index d81d818b..b9d4b532 100644 --- a/packages/Babylonian-Core.package/BPAnnotation.class/instance/removeFromMethod..st +++ b/packages/Babylonian-Core.package/BPAnnotation.class/instance/removeFromMethod..st @@ -1,7 +1,7 @@ initialize-release removeFromMethod: aCompiledMethod - "Intended to delete annotations but not the enclosed expression from outside a browser" + "Intended to delete annotations from outside a browser" aCompiledMethod bpAnnotations detect: [:anAnnotation | anAnnotation id = self id ] ifFound: [:theAnnotationToRemove | | text startOfTag expressionStart replacementStart replacementEnd | diff --git a/packages/Babylonian-Core.package/BPAnnotation.class/methodProperties.json b/packages/Babylonian-Core.package/BPAnnotation.class/methodProperties.json index b97893df..2ae977a7 100644 --- a/packages/Babylonian-Core.package/BPAnnotation.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPAnnotation.class/methodProperties.json @@ -31,7 +31,7 @@ "morphClass" : "jb 3/5/2022 12:54", "otherInformation" : "pre 5/29/2019 10:59", "otherInformation:" : "jb 12/7/2020 18:06", - "removeFromMethod:" : "joabe 10/5/2023 17:28", + "removeFromMethod:" : "joabe 10/6/2023 14:28", "startTag" : "pre 5/10/2021 09:44", "startTagSource" : "jb 12/7/2020 18:06", "startTagSource:" : "pre 5/29/2019 10:59", diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st index 82b0fe5a..442a0b8a 100644 --- a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st @@ -1,4 +1,4 @@ -as yet unclassified +actions addProbe: aProbe nameToProbesDict at: aProbe assignedClassName diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/at..st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/at..st index d81a8005..fa57f84f 100644 --- a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/at..st +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/at..st @@ -1,4 +1,4 @@ -as yet unclassified +accessing at: aClassName ^ nameToProbesDict at: aClassName \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st index 405c92a9..7e8930e8 100644 --- a/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st @@ -1,4 +1,4 @@ -as yet unclassified +actions removeProbe: aProbe nameToProbesDict at: aProbe assignedClassName diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/asMorph.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/asMorph.st index 937e2b7d..6a60304e 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/asMorph.st +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/asMorph.st @@ -2,8 +2,6 @@ morphic asMorph | newMorph | - newMorph := BPInstanceVariableProbeMorph new - annotation: self; - yourself. + newMorph := BPInstanceVariableProbeMorph new annotation: self; yourself. self updateTextAnchorPropertiesOf: newMorph. ^ newMorph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName..st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName..st index 0ba85068..ce428841 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName..st +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName..st @@ -1,3 +1,4 @@ accessing assignedClassName: aString + assignedClassName := aString \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName.st index bb613fb3..72a04577 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName.st +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName.st @@ -1,3 +1,4 @@ accessing assignedClassName + ^ assignedClassName \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/deleteLinkedProbes.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/deleteLinkedProbes.st index 0fa79817..8ac1def4 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/deleteLinkedProbes.st +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/deleteLinkedProbes.st @@ -3,6 +3,7 @@ deleteLinkedProbes | browser | browser := BPBrowser open. + self linkedProbes do: [:aProbe | browser browseReference: aProbe methodReference. browser removeAnnotations: {aProbe}]. diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/instrumentationCallFor..st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/instrumentationCallFor..st index 95c019d7..b0347ba3 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/instrumentationCallFor..st +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/instrumentationCallFor..st @@ -1,6 +1,7 @@ serialization instrumentationCallFor: actualEnclosedExpressionSource + "Currently not used as instance probes do not rewrite a class definition in which they exist" ^ '(self bpTraceVariable: [{1}] forProbe: {2} linked: \{{3}\} inContext: thisContext)' format: {actualEnclosedExpressionSource . self id. diff --git a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json index cd4f0cee..5eb06d6a 100644 --- a/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json @@ -2,13 +2,13 @@ "class" : { "annotationTag" : "joabe 9/25/2023 17:30" }, "instance" : { - "asMorph" : "joabe 9/21/2023 22:32", - "assignedClassName" : "joabe 9/28/2023 15:45", - "assignedClassName:" : "joabe 9/28/2023 15:46", + "asMorph" : "joabe 10/6/2023 14:43", + "assignedClassName" : "joabe 10/6/2023 14:40", + "assignedClassName:" : "joabe 10/6/2023 14:40", "canBeAnnotatedTo" : "joabe 9/21/2023 21:08", - "deleteLinkedProbes" : "joabe 10/5/2023 17:34", + "deleteLinkedProbes" : "joabe 10/6/2023 14:40", "initialize" : "joabe 10/4/2023 15:33", - "instrumentationCallFor:" : "joabe 10/4/2023 15:37", + "instrumentationCallFor:" : "joabe 10/7/2023 18:25", "isInstanceVariableProbe" : "joabe 9/21/2023 21:18", "linkedProbes" : "joabe 10/4/2023 15:33", "probeTypeTag" : "joabe 9/25/2023 17:30", diff --git a/packages/Babylonian-Core.package/Object.extension/instance/bpTraceVariable.forProbe.inContext..st b/packages/Babylonian-Core.package/Object.extension/instance/bpTraceVariable.forProbe.inContext..st deleted file mode 100644 index 5b2eb2c1..00000000 --- a/packages/Babylonian-Core.package/Object.extension/instance/bpTraceVariable.forProbe.inContext..st +++ /dev/null @@ -1,12 +0,0 @@ -*Babylonian-Core -bpTraceVariable: aVariableName forProbe: probeId inContext: aContext - - - self halt. - ^ aVariableName value, ' ' - "^ #bpInstrumented withoutLayerDo: [ - BPActiveTracer value - trace: anObject - through: [:r | r] - forProbe: probeId - inContext: aContext]" \ No newline at end of file diff --git a/packages/Babylonian-Core.package/Object.extension/methodProperties.json b/packages/Babylonian-Core.package/Object.extension/methodProperties.json index a6d135d8..2940c610 100644 --- a/packages/Babylonian-Core.package/Object.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/Object.extension/methodProperties.json @@ -13,5 +13,4 @@ "bpTrace:through:forProbe:inContext:" : "jb 11/29/2020 22:12", "bpTraceAssignmentOf:before:forProbe:inContext:" : "pre 7/6/2020 18:34", "bpTraceExecutionResult:" : "jb 12/30/2021 21:20", - "bpTraceVariable:forProbe:inContext:" : "joabe 9/27/2023 13:36", "isLiveSpecimenReference" : "pre 1/10/2023 16:16" } } diff --git a/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testCorrectIntervalForInstanceVariable.st b/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testCorrectIntervalForInstanceVariable.st new file mode 100644 index 00000000..38ea13ff --- /dev/null +++ b/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testCorrectIntervalForInstanceVariable.st @@ -0,0 +1,2 @@ +as yet unclassified +testCorrectIntervalForInstanceVariable \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testDeterminesCorrectIntervalForExistingVariableAndPerfectSelection.st b/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testDeterminesCorrectIntervalForExistingVariableAndPerfectSelection.st new file mode 100644 index 00000000..a3cafbe8 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testDeterminesCorrectIntervalForExistingVariableAndPerfectSelection.st @@ -0,0 +1,5 @@ +as yet unclassified +testDeterminesCorrectIntervalForExistingVariableAndPerfectSelection + + browser selectClassNamed: #BPTestExamplesClass. + self assert: (69 to: 71) equals: (browser determineIntervalToAnnotateFor: (BPInstanceVariableProbe new variableName: 'foo') in: (69 to: 71)) \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testDeterminesCorrectIntervalForExistingVariableIgnoresSpaceInSelection.st b/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testDeterminesCorrectIntervalForExistingVariableIgnoresSpaceInSelection.st new file mode 100644 index 00000000..f243a617 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testDeterminesCorrectIntervalForExistingVariableIgnoresSpaceInSelection.st @@ -0,0 +1,5 @@ +as yet unclassified +testDeterminesCorrectIntervalForExistingVariableIgnoresSpaceInSelection + + browser selectClassNamed: #BPTestExamplesClass. + self assert: (69 to: 71) equals: (browser determineIntervalToAnnotateFor: (BPInstanceVariableProbe new variableName: 'foo') in: (68 to: 71)) \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testDeterminesNoIntervalForExistingVariableButWrongSelection.st b/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testDeterminesNoIntervalForExistingVariableButWrongSelection.st new file mode 100644 index 00000000..3c548959 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testDeterminesNoIntervalForExistingVariableButWrongSelection.st @@ -0,0 +1,5 @@ +as yet unclassified +testDeterminesNoIntervalForExistingVariableButWrongSelection + + browser selectClassNamed: #BPTestExamplesClass. + self assert: nil equals: (browser determineIntervalToAnnotateFor: (BPInstanceVariableProbe new variableName: 'foo') in: (66 to: 71)) \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testExtractsCorrectInstanceVariableProbeInterval.st b/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testExtractsCorrectInstanceVariableProbeInterval.st new file mode 100644 index 00000000..1538476a --- /dev/null +++ b/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testExtractsCorrectInstanceVariableProbeInterval.st @@ -0,0 +1,2 @@ +as yet unclassified +testExtractsCorrectInstanceVariableProbeInterval \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testHasCorrectInstanceVariableProbeInterval.st b/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testHasCorrectInstanceVariableProbeInterval.st new file mode 100644 index 00000000..d797ab65 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPBrowserTest.class/instance/testHasCorrectInstanceVariableProbeInterval.st @@ -0,0 +1,2 @@ +as yet unclassified +testHasCorrectInstanceVariableProbeInterval \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPBrowserTest.class/methodProperties.json b/packages/Babylonian-Tests.package/BPBrowserTest.class/methodProperties.json index 28f6e295..4e50b92e 100644 --- a/packages/Babylonian-Tests.package/BPBrowserTest.class/methodProperties.json +++ b/packages/Babylonian-Tests.package/BPBrowserTest.class/methodProperties.json @@ -6,5 +6,11 @@ "setUp" : "jb 12/7/2020 19:05", "tearDown" : "lu 1/23/2022 21:25", "testClosesSidePane" : "joabe 5/9/2023 17:06", + "testCorrectIntervalForInstanceVariable" : "joabe 10/7/2023 18:44", "testDeleteMethod" : "jb 12/6/2021 22:32", + "testDeterminesCorrectIntervalForExistingVariableAndPerfectSelection" : "joabe 10/7/2023 19:03", + "testDeterminesCorrectIntervalForExistingVariableIgnoresSpaceInSelection" : "joabe 10/7/2023 19:03", + "testDeterminesNoIntervalForExistingVariableButWrongSelection" : "joabe 10/7/2023 19:04", + "testExtractsCorrectInstanceVariableProbeInterval" : "joabe 10/7/2023 18:41", + "testHasCorrectInstanceVariableProbeInterval" : "joabe 10/7/2023 18:43", "testOpensSidePane" : "joabe 5/9/2023 17:07" } } diff --git a/packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testExtractVariableAssignmentIntervals.st b/packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testExtractVariableAssignmentIntervals.st new file mode 100644 index 00000000..b217747f --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testExtractVariableAssignmentIntervals.st @@ -0,0 +1,5 @@ +tests +testExtractVariableAssignmentIntervals + + self assert: {76@83 . 139@146} + equals: ((BPTestExamplesClass >> #methodSettingInstanceVars) bpExtractVariableAssignmentRangesNamed: 'foo') \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingLeftHandOfDoubleNestedAssignmentProbe.st b/packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingLeftHandOfDoubleNestedAssignmentProbe.st new file mode 100644 index 00000000..a5e9c7b0 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingLeftHandOfDoubleNestedAssignmentProbe.st @@ -0,0 +1,13 @@ +tests +testRewritingLeftHandOfDoubleNestedAssignmentProbe + + self + assertCompilerRewrites: +'method + | variable | + """"variable := 2 raisedTo: 3"""".' + to: +'method + + | variable | +(self bpTraceAssignmentOf: [(self bpTraceAssignmentOf: [variable := 2 raisedTo: 3] before: {''variable'' . variable} forProbe: 1 inContext: thisContext)] before: {} forProbe: 2 inContext: thisContext).' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingLeftHandOfTripleNestedAssignmentProbe.st b/packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingLeftHandOfTripleNestedAssignmentProbe.st new file mode 100644 index 00000000..cd46ba10 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingLeftHandOfTripleNestedAssignmentProbe.st @@ -0,0 +1,13 @@ +tests +testRewritingLeftHandOfTripleNestedAssignmentProbe + + self + assertCompilerRewrites: +'method + | variable | + """"""variable := 2 raisedTo: 3"""""".' + to: +'method + + | variable | +(self bpTraceAssignmentOf: [(self bpTraceAssignmentOf: [(self bpTraceAssignmentOf: [variable := 2 raisedTo: 3] before: {''variable'' . variable} forProbe: 1 inContext: thisContext)] before: {} forProbe: 2 inContext: thisContext)] before: {} forProbe: 3 inContext: thisContext).' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCompilerTest.class/methodProperties.json b/packages/Babylonian-Tests.package/BPCompilerTest.class/methodProperties.json index 672aa4a7..91cc6c87 100644 --- a/packages/Babylonian-Tests.package/BPCompilerTest.class/methodProperties.json +++ b/packages/Babylonian-Tests.package/BPCompilerTest.class/methodProperties.json @@ -7,6 +7,7 @@ "setUp" : "jb 12/7/2020 19:06", "testCompileSilentlyAddsAnnotationsProperly" : "pre 7/22/2022 22:02", "testCompilerRecognizesMethodsThatRequireRecompilation" : "jb 12/7/2020 19:06", + "testExtractVariableAssignmentIntervals" : "joabe 10/7/2023 18:32", "testFromFormattedSourceCodeToAnnotatedSourceCode" : "pre 2/22/2021 18:03", "testRewritingBinaryMessageChainProbe" : "pre 2/22/2021 17:16", "testRewritingDoesNotAddTwoLayerPragmas" : "pre 7/23/2022 15:51", @@ -21,6 +22,8 @@ "testRewritingKeywordMessageUnaryReceiverProbe" : "jb 12/7/2020 19:06", "testRewritingLeftHandOfAssignmentProbe" : "pre 7/23/2022 15:51", "testRewritingLeftHandOfAssignmentProbeMultipleVariables" : "pre 7/23/2022 15:53", + "testRewritingLeftHandOfDoubleNestedAssignmentProbe" : "joabe 10/6/2023 14:27", + "testRewritingLeftHandOfTripleNestedAssignmentProbe" : "joabe 10/6/2023 14:27", "testRewritingNestedBlockAndMethodSlider" : "pre 7/23/2022 15:52", "testRewritingNestedBlockSlider" : "pre 7/23/2022 15:53", "testRewritingNestedReplacements" : "jb 12/7/2020 19:07", diff --git a/packages/Babylonian-Tests.package/BPSmalltalkGrammarTest.class/instance/testNestedAnnotatedAssignments.st b/packages/Babylonian-Tests.package/BPSmalltalkGrammarTest.class/instance/testNestedAnnotatedAssignments.st new file mode 100644 index 00000000..62adce24 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPSmalltalkGrammarTest.class/instance/testNestedAnnotatedAssignments.st @@ -0,0 +1,17 @@ +tests +testNestedAnnotatedAssignments + + startRule := #Statement. + + self + shouldParse: '""""variable := 2""""'; + shouldParse: 'variable := """"2""""'. + + self + shouldParse: '""""variable := 2""""' + to: #(Statement + (AnnotatedStatement + (expressionAnnotationStart '""') + (Statement + (AnnotatedStatement '""variable := 2""')) + (expressionAnnotationEnd '""'))). \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPSmalltalkGrammarTest.class/methodProperties.json b/packages/Babylonian-Tests.package/BPSmalltalkGrammarTest.class/methodProperties.json index d9cc360a..656689ff 100644 --- a/packages/Babylonian-Tests.package/BPSmalltalkGrammarTest.class/methodProperties.json +++ b/packages/Babylonian-Tests.package/BPSmalltalkGrammarTest.class/methodProperties.json @@ -21,6 +21,7 @@ "testGrammarParsesVariableNameCorrectly" : "jb 12/7/2020 19:09", "testMessageSendPartsCanBeAnnotated" : "pre 8/6/2021 18:37", "testMessageSendsCanBeAnnotated" : "jb 12/7/2020 19:09", + "testNestedAnnotatedAssignments" : "joabe 10/6/2023 14:22", "testNormalExpressionsStillWork" : "pre 5/10/2019 11:27", "testOtherCommentsAreStillComments" : "jb 12/7/2020 19:09", "testRegressionAnnotationBlock01" : "pre 9/1/2022 20:39", diff --git a/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo..st b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo..st new file mode 100644 index 00000000..2ac6c3f4 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo..st @@ -0,0 +1,3 @@ +accessing +foo: anObject + foo := anObject \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo.st b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo.st new file mode 100644 index 00000000..116f7e5b --- /dev/null +++ b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo.st @@ -0,0 +1,3 @@ +accessing +foo + ^ foo \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo2..st b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo2..st new file mode 100644 index 00000000..fdd7f57b --- /dev/null +++ b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo2..st @@ -0,0 +1,3 @@ +accessing +foo2: anObject + foo2 := anObject \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo2.st b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo2.st new file mode 100644 index 00000000..a69690b1 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/foo2.st @@ -0,0 +1,3 @@ +accessing +foo2 + ^ foo2 \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/methodSettingInstanceVars.st b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/methodSettingInstanceVars.st new file mode 100644 index 00000000..791ffb97 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/instance/methodSettingInstanceVars.st @@ -0,0 +1,17 @@ +example methods +methodSettingInstanceVars + + 'hello world'. + self foo; + foo2. + foo2 := 1. + foo := 2. + self foo2: 3. + self foo: 4. + [ |var| + var := 5. + foo := 6. + [ |foo foo2| + foo := 7. + foo2 := 8.]] + \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPTestExamplesClass.class/methodProperties.json b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/methodProperties.json index eaac63da..89364519 100644 --- a/packages/Babylonian-Tests.package/BPTestExamplesClass.class/methodProperties.json +++ b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/methodProperties.json @@ -10,7 +10,12 @@ "+" : "pre 7/1/2019 14:23", "addAndLog:" : "pre 5/3/2021 10:36", "binarySearchIn:theElement:" : "pre 8/21/2023 11:38", + "foo" : "joabe 10/7/2023 18:19", + "foo2" : "joabe 10/7/2023 18:19", + "foo2:" : "joabe 10/7/2023 18:19", + "foo:" : "joabe 10/7/2023 18:19", "methodOnlyWithExample" : "pre 11/18/2019 12:07", + "methodSettingInstanceVars" : "joabe 10/7/2023 18:21", "methodWithExampleCallingOnlyProbedMethod" : "jb 7/2/2021 00:56", "methodWithLiveSpecimen:" : "pre 9/30/2020 09:41", "methodWithMultipleAssertions" : "pre 7/15/2022 11:11", diff --git a/packages/Babylonian-Tests.package/BPTestExamplesClass.class/properties.json b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/properties.json index a659c8c5..dbdb1e6f 100644 --- a/packages/Babylonian-Tests.package/BPTestExamplesClass.class/properties.json +++ b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/properties.json @@ -6,7 +6,8 @@ ], "commentStamp" : "", "instvars" : [ - ], + "foo2", + "foo" ], "name" : "BPTestExamplesClass", "pools" : [ ], diff --git a/packages/Babylonian-UI.package/BPStyler.class/instance/applyInstanceVariableIn.for..st b/packages/Babylonian-UI.package/BPStyler.class/instance/applyInstanceProbeIn.for..st similarity index 68% rename from packages/Babylonian-UI.package/BPStyler.class/instance/applyInstanceVariableIn.for..st rename to packages/Babylonian-UI.package/BPStyler.class/instance/applyInstanceProbeIn.for..st index 28d09f99..798a844a 100644 --- a/packages/Babylonian-UI.package/BPStyler.class/instance/applyInstanceVariableIn.for..st +++ b/packages/Babylonian-UI.package/BPStyler.class/instance/applyInstanceProbeIn.for..st @@ -1,11 +1,11 @@ private -applyInstanceVariableIn: aPreformmattedText for: anInstanceProbe +applyInstanceProbeIn: aPreformattedText for: anInstanceProbe | interval | - interval := (aPreformmattedText string + interval := (aPreformattedText string allRangesOfRegexMatches: '(''| )', anInstanceProbe variableName, '(''| )') first. - aPreformmattedText + aPreformattedText addAttribute: (BPTextDecoration new anchoredMorph: (self annotationMorphFor: anInstanceProbe); yourself) diff --git a/packages/Babylonian-UI.package/BPStyler.class/instance/formatNonMethod..st b/packages/Babylonian-UI.package/BPStyler.class/instance/formatNonMethod..st index 9dbbc255..5872cb36 100644 --- a/packages/Babylonian-UI.package/BPStyler.class/instance/formatNonMethod..st +++ b/packages/Babylonian-UI.package/BPStyler.class/instance/formatNonMethod..st @@ -12,6 +12,6 @@ formatNonMethod: aText BPClassNameToInstanceProbes value nameToProbesDict at: className ifPresent: [:probesSet | probesSet do: [:anInstanceProbe | self - applyInstanceVariableIn: formattedText + applyInstanceProbeIn: formattedText for: anInstanceProbe]]. ^ formattedText \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPStyler.class/methodProperties.json b/packages/Babylonian-UI.package/BPStyler.class/methodProperties.json index adc2318a..c682ebec 100644 --- a/packages/Babylonian-UI.package/BPStyler.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPStyler.class/methodProperties.json @@ -10,10 +10,10 @@ "annotationCanBePutInSidebar:" : "pre 12/16/2020 19:02", "annotationMorphFor:" : "pre 1/6/2021 17:40", "applyAnnotationsFrom:to:" : "pre 7/20/2022 16:03", - "applyInstanceVariableIn:for:" : "joabe 9/28/2023 15:19", + "applyInstanceProbeIn:for:" : "joabe 10/7/2023 19:09", "expressionSourceFor:from:at:" : "pre 7/20/2022 16:58", "extractIntervals" : "jb 12/3/2020 22:57", - "formatNonMethod:" : "joabe 9/28/2023 15:39", + "formatNonMethod:" : "joabe 10/7/2023 19:09", "hasExamplesMorph:" : "pre 7/20/2022 09:31", "ifNoSelectedMethod:" : "pre 3/19/2020 11:07", "insertExamplesMorphInto:" : "pre 7/20/2022 10:45", diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st index 9cdd27bc..46f64855 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st @@ -10,9 +10,6 @@ determineIntervalOfVariableNameIn: anInterval having: aTopologicalCollectionOfAn ((self contents atAll: lowestKeywordMessageSegment children first interval) ~= 'instanceVariableNames:') ifTrue: [^ nil]. selectedText := (self contents atAll: anInterval) withBlanksTrimmed. - self flag: #todo. "wenn es sowas wie aha und aha2 gibt, dann wird das falsch sein, wenn ich aha markiere - und aha2 als erstes kommt" - "restliches todo: test schreiben" ^ self selectedClassOrMetaClass instVarNames detect: [:aVariable | aVariable = selectedText] diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json index f8fc798a..9304aa05 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json +++ b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json @@ -20,7 +20,7 @@ "codePaneMenuBPTracingItems:" : "pre 9/2/2022 15:06", "compiledMethod" : "ct 3/30/2022 16:48", "determineIntervalOfReceiver:" : "pre 9/2/2022 14:29", - "determineIntervalOfVariableNameIn:having:" : "joabe 10/2/2023 13:21", + "determineIntervalOfVariableNameIn:having:" : "joabe 10/7/2023 19:17", "determineIntervalToAnnotateFor:in:" : "joabe 9/26/2023 13:52", "determineMessageSendNodeIn:" : "joabe 10/2/2023 13:26", "determineSelectorOfMessageSend:" : "pre 9/2/2022 14:49", From 086a4d048f7cac3e538953c6a91bcd1a88e5bcef Mon Sep 17 00:00:00 2001 From: Joana Be Date: Sat, 7 Oct 2023 20:31:11 +0200 Subject: [PATCH 10/13] Resolve merge conflict in step method --- .../instance/wantsMethodReference.st | 4 ++++ .../BPInstanceVariableProbeMorph.class/methodProperties.json | 3 ++- .../BPTraceBasedMorph.class/instance/updateTraces.st | 2 +- .../BPTraceBasedMorph.class/instance/wantsMethodReference.st | 4 ++++ .../BPTraceBasedMorph.class/methodProperties.json | 5 +++-- 5 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/wantsMethodReference.st create mode 100644 packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/wantsMethodReference.st diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/wantsMethodReference.st b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/wantsMethodReference.st new file mode 100644 index 00000000..ce142ede --- /dev/null +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/wantsMethodReference.st @@ -0,0 +1,4 @@ +accessing +wantsMethodReference + + ^ false \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json index 51640f17..47b7eae5 100644 --- a/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json @@ -5,4 +5,5 @@ "linkedProbes" : "joabe 10/6/2023 11:13", "removeButtonClicked" : "joabe 10/4/2023 16:22", "updateExpressionMorphIfNecessary" : "joabe 10/6/2023 10:34", - "valuesMorphClass" : "joabe 10/6/2023 11:21" } } + "valuesMorphClass" : "joabe 10/6/2023 11:21", + "wantsMethodReference" : "joabe 10/7/2023 20:28" } } diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/updateTraces.st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/updateTraces.st index fe2f10e2..abb8355e 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/updateTraces.st +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/updateTraces.st @@ -2,7 +2,7 @@ stepping and presenter updateTraces | newTraces tracesChanged | - self methodReference ifNil: [^ false]. + (self methodReference isNil and: [self wantsMethodReference]) ifTrue: [^false]. self resetHeight. newTraces := self getTraces asIdentitySet. diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/wantsMethodReference.st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/wantsMethodReference.st new file mode 100644 index 00000000..15b8d846 --- /dev/null +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/wantsMethodReference.st @@ -0,0 +1,4 @@ +accessing +wantsMethodReference + + ^ true \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json index bdab324e..25c8df6d 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json @@ -15,5 +15,6 @@ "update:" : "pre 8/23/2023 10:56", "update:with:" : "pre 8/23/2023 10:49", "updateFrom:" : "jb 12/7/2020 19:00", - "updateTraces" : "pre 8/23/2023 10:53", - "valuesMorphClass" : "joabe 10/6/2023 11:20" } } + "updateTraces" : "joabe 10/7/2023 20:30", + "valuesMorphClass" : "joabe 10/6/2023 11:20", + "wantsMethodReference" : "joabe 10/7/2023 20:28" } } From 7a69c54ecf29d5f7b5dc4a7050fd8fa678e9a42c Mon Sep 17 00:00:00 2001 From: Joana Be Date: Mon, 16 Oct 2023 15:37:31 +0200 Subject: [PATCH 11/13] Fixes typo of legend wrapper --- .../BPProbeMorph.class/instance/visualizeButtonClickedFor..st | 2 +- .../BPProbeMorph.class/methodProperties.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/visualizeButtonClickedFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/visualizeButtonClickedFor..st index 66a35dec..9f2ff0c6 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/visualizeButtonClickedFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/visualizeButtonClickedFor..st @@ -5,7 +5,7 @@ visualizeButtonClickedFor: aTrace lineMorph := self ensureLineMorphFor: aTrace. scrollPane := (lineMorph submorphNamed: #scrollWrapper) submorphNamed: #scrollPane. - axisYNotationHolder := lineMorph submorphNamed: #axisYNotationHolder. + axisYNotationHolder := lineMorph submorphNamed: #bpLegendWrapper. axisYNotationMorph := lineMorph valueOfProperty: #bpAxisYNotationMorph. visualizationMorph := lineMorph valueOfProperty: #bpVisualizationMorph. valuesMorph := lineMorph valueOfProperty: #bpValuesMorph. diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json index 5d06b57c..0d6bc62d 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json @@ -35,4 +35,4 @@ "updateResultsFrom:" : "joabe 7/1/2023 17:10", "updateVisualizationMorphInside:over:for:" : "pre 5/26/2021 20:43", "valuesMorphClass" : "joabe 10/6/2023 11:19", - "visualizeButtonClickedFor:" : "pre 5/27/2021 12:06" } } + "visualizeButtonClickedFor:" : "joabe 10/16/2023 15:31" } } From 1105a3561fad71df8d6c87fcde569ee9f091caec Mon Sep 17 00:00:00 2001 From: Joana Be Date: Mon, 16 Oct 2023 15:56:12 +0200 Subject: [PATCH 12/13] readds deleted visualizationmorph method --- .../BPLineChart.class/class/supportedClass.st | 1 - .../BPLineChart.class/instance/visualizationMorph.st | 4 ++++ .../BPLineChart.class/methodProperties.json | 5 +++-- 3 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 packages/Babylonian-UI.package/BPLineChart.class/instance/visualizationMorph.st diff --git a/packages/Babylonian-UI.package/BPLineChart.class/class/supportedClass.st b/packages/Babylonian-UI.package/BPLineChart.class/class/supportedClass.st index 90d6cdf8..1b71109f 100644 --- a/packages/Babylonian-UI.package/BPLineChart.class/class/supportedClass.st +++ b/packages/Babylonian-UI.package/BPLineChart.class/class/supportedClass.st @@ -1,5 +1,4 @@ support supportedClass - ^ Number \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPLineChart.class/instance/visualizationMorph.st b/packages/Babylonian-UI.package/BPLineChart.class/instance/visualizationMorph.st new file mode 100644 index 00000000..8d82bf52 --- /dev/null +++ b/packages/Babylonian-UI.package/BPLineChart.class/instance/visualizationMorph.st @@ -0,0 +1,4 @@ +visualization +visualizationMorph + + ^ self newVisualizationMorph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPLineChart.class/methodProperties.json b/packages/Babylonian-UI.package/BPLineChart.class/methodProperties.json index ff08738b..1117eebb 100644 --- a/packages/Babylonian-UI.package/BPLineChart.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPLineChart.class/methodProperties.json @@ -1,7 +1,7 @@ { "class" : { "newWithValues:forMorph:" : "joabe 7/4/2023 11:37", - "supportedClass" : "jb 5/4/2021 17:26" }, + "supportedClass" : "joabe 10/16/2023 15:41" }, "instance" : { "datapointColorForValue:" : "jb 4/19/2021 23:14", "datapointDefaultColor" : "joabe 5/31/2023 19:21", @@ -19,4 +19,5 @@ "scaleLineColor" : "joabe 5/31/2023 19:17", "scaleLineWidth" : "jb 4/18/2021 03:45", "scaleYOffset" : "jb 4/19/2021 00:23", - "spaceBetweenPoints" : "pre 5/27/2021 11:59" } } + "spaceBetweenPoints" : "pre 5/27/2021 11:59", + "visualizationMorph" : "joabe 10/16/2023 15:54" } } From f37c8cffacd29dff0109702705c7ef694777ad79 Mon Sep 17 00:00:00 2001 From: Joana Be Date: Mon, 23 Oct 2023 13:08:39 +0200 Subject: [PATCH 13/13] Adds AST to baseline --- .../instance/baseline..st | 8 +++++++- .../methodProperties.json | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/instance/baseline..st b/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/instance/baseline..st index e97d0c88..7da6dd96 100644 --- a/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/instance/baseline..st +++ b/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/instance/baseline..st @@ -10,11 +10,17 @@ baseline: spec [ spec repository: 'github://hpi-swa/Ohm-S:master/packages' ]; baseline: 'PEG' with: [ spec repository: 'github://codeZeilen/peg_parser/packages' ]; + project: 'Refactoring-Core' with: + [ spec + className: 'ConfigurationOfRefactoringBrowser'; + repository: 'http://www.squeaksource.com/MetacelloRepository'; + loads: #('Core'); + version: '3.0']; package: 'IconsBase' with: [ spec repository: 'http://www.hpi.uni-potsdam.de/hirschfeld/squeaksource/SwaUtilities']; package: 'ContextS2-Core' with: [ spec repository: 'http://www.hpi.uni-potsdam.de/hirschfeld/squeaksource/ContextSTrunk' ]; - package: 'Babylonian-Core' with: [spec requires: #('Babylonian-Compiler' 'ContextS2-Core')]; + package: 'Babylonian-Core' with: [spec requires: #('Babylonian-Compiler' 'ContextS2-Core' 'Refactoring-Core')]; package: 'Babylonian-ProbeLog' with: [spec requires: #('Babylonian-Core' 'Babylonian-UI')]; package: 'Babylonian-ExampleMining' with: [spec requires: #('Babylonian-Core' 'Babylonian-UI')]; package: 'Babylonian-Compiler' with: [ diff --git a/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/methodProperties.json b/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/methodProperties.json index c916fd04..b3e06d89 100644 --- a/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/methodProperties.json +++ b/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "baseline:" : "joabe 7/11/2023 16:00", + "baseline:" : "joabe 10/23/2023 13:07", "postLoadCompiler" : "pre 2/22/2021 10:51", "postLoadTests" : "pre 7/7/2021 15:01", "postLoadUI" : "joabe 5/30/2023 16:58" } }