diff --git a/README.md b/README.md index 8fb78e7c..9b62b7ee 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ A Smalltalk implementation of the Babylonian Programming System. ## How to install -1. Get [a recent Squeak][squeakorg] +1. Get [a recent trunk Squeak][squeakorg] 2. Load [Metacello][metacello] 3. Finally, load Babylonian/S with the following command: @@ -15,11 +15,6 @@ Metacello new repository: 'github://hpi-swa-lab/babylonian-programming-smalltalk:main/packages'; load. ``` -4. (Recommended) Disable the preference for notifications on saving methods with styles. This prevents that you will be asked whether you want to save style information whenever you save a method with probes. - -```Smalltalk -Preferences disable: #confirmFirstUseOfStyle. -``` ## Current State 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..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,16 +12,16 @@ 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 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/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 a588f74f..0fd23097 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json @@ -6,10 +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", + "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/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/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 0170b617..e741bbcb 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", @@ -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/methodProperties.json b/packages/Babylonian-Core.package/BPAnnotation.class/methodProperties.json index c8ae160c..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:" : "jb 1/10/2022 19:20", + "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/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..442a0b8a --- /dev/null +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/addProbe..st @@ -0,0 +1,10 @@ +actions +addProbe: aProbe + + nameToProbesDict at: aProbe assignedClassName + 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/at..st b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/at..st new file mode 100644 index 00000000..fa57f84f --- /dev/null +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/at..st @@ -0,0 +1,4 @@ +accessing +at: aClassName + + ^ nameToProbesDict at: aClassName \ 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..7e8930e8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/instance/removeProbe..st @@ -0,0 +1,8 @@ +actions +removeProbe: aProbe + + nameToProbesDict at: aProbe assignedClassName + 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 new file mode 100644 index 00000000..ed306ec6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPClassNameToInstanceProbes.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + "clear" : "joabe 9/28/2023 12:59", + "default" : "joabe 9/28/2023 12:57" }, + "instance" : { + "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 10/5/2023 17:47" } } 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/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/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..6a60304e --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/asMorph.st @@ -0,0 +1,7 @@ +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/assignedClassName..st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName..st new file mode 100644 index 00000000..ce428841 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName..st @@ -0,0 +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 new file mode 100644 index 00000000..72a04577 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/assignedClassName.st @@ -0,0 +1,4 @@ +accessing +assignedClassName + + ^ assignedClassName \ No newline at end of file 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/deleteLinkedProbes.st b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/deleteLinkedProbes.st new file mode 100644 index 00000000..8ac1def4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/deleteLinkedProbes.st @@ -0,0 +1,11 @@ +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 new file mode 100644 index 00000000..b0347ba3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/instrumentationCallFor..st @@ -0,0 +1,8 @@ +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. + ((self linkedProbes gather: [:probe | probe id]) joinSeparatedBy: ' . ')} \ 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/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 new file mode 100644 index 00000000..da5e9857 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/probeTypeTag.st @@ -0,0 +1,4 @@ +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 new file mode 100644 index 00000000..18baafbf --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/removeFromMethod..st @@ -0,0 +1,4 @@ +initialize-release +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..a584d519 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName..st @@ -0,0 +1,4 @@ +accessing +variableName: aString + + 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 new file mode 100644 index 00000000..28a76450 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/instance/variableName.st @@ -0,0 +1,4 @@ +accessing +variableName + + ^ self enclosedExpressionSource \ 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..5eb06d6a --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/methodProperties.json @@ -0,0 +1,18 @@ +{ + "class" : { + "annotationTag" : "joabe 9/25/2023 17:30" }, + "instance" : { + "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/6/2023 14:40", + "initialize" : "joabe 10/4/2023 15:33", + "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", + "removeFromMethod:" : "joabe 9/27/2023 16:43", + "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 new file mode 100644 index 00000000..f53092e1 --- /dev/null +++ b/packages/Babylonian-Core.package/BPInstanceVariableProbe.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Babylonian-Core-Annotations", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "assignedClassName", + "linkedProbes" ], + "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-Core.package/BPTraceValue.class/instance/allBabylonianInternalClasses.st b/packages/Babylonian-Core.package/BPTraceValue.class/instance/allBabylonianInternalClasses.st new file mode 100644 index 00000000..657b195c --- /dev/null +++ b/packages/Babylonian-Core.package/BPTraceValue.class/instance/allBabylonianInternalClasses.st @@ -0,0 +1,8 @@ +private +allBabylonianInternalClasses + ^ #('Babylonian-Core' 'Babylonian-Compiler' 'Babylonian-UI' 'Babylonian-ProbeLog') + inject: OrderedCollection new + into: [:theClasses :aPackage | + theClasses, (PackageOrganizer default packageNamed: aPackage + ifPresent: [:thePackage | thePackage classes] + ifAbsent: [#()])]. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTraceValue.class/methodProperties.json b/packages/Babylonian-Core.package/BPTraceValue.class/methodProperties.json index a73dc3a1..5632283d 100644 --- a/packages/Babylonian-Core.package/BPTraceValue.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTraceValue.class/methodProperties.json @@ -5,6 +5,7 @@ "ignoredMessagesInStack" : "pre 9/27/2023 14:34", "value:identityHash:stack:" : "pre 10/12/2020 17:57" }, "instance" : { + "allBabylonianInternalClasses" : "joabe 7/2/2023 23:54", "asValueMorph" : "jb 5/20/2021 01:00", "belongingAnnotation" : "lu 1/31/2022 16:59", "belongingAnnotationId" : "lu 12/1/2021 07:32", 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-ExampleMining.package/BPExampleMorph.extension/instance/updateMorphs.st b/packages/Babylonian-ExampleMining.package/BPExampleMorph.extension/instance/updateMorphs.st deleted file mode 100644 index f879c586..00000000 --- a/packages/Babylonian-ExampleMining.package/BPExampleMorph.extension/instance/updateMorphs.st +++ /dev/null @@ -1,15 +0,0 @@ -*Babylonian-ExampleMining-Core-override -updateMorphs - - self removeAllMorphs. - - self - addActivationButtonMorph; - addCollapseButtonMorph; - addAssertResultButtonMorph; - addLoaderIconHolder; - addExampleNameMorph; - addMenuButtonMorph; - addExampleSpecificMorphs; - addRecordAndMinimizeButtonMorph; - addDeleteButtonMorph. \ No newline at end of file diff --git a/packages/Babylonian-ExampleMining.package/BPExampleMorph.extension/methodProperties.json b/packages/Babylonian-ExampleMining.package/BPExampleMorph.extension/methodProperties.json index 0f35f8e5..7d62659b 100644 --- a/packages/Babylonian-ExampleMining.package/BPExampleMorph.extension/methodProperties.json +++ b/packages/Babylonian-ExampleMining.package/BPExampleMorph.extension/methodProperties.json @@ -3,5 +3,4 @@ }, "instance" : { "addRecordAndMinimizeButtonMorph" : "joabe 7/6/2023 22:32", - "recordAndMinimizeButtonClicked" : "joabe 7/6/2023 22:32", - "updateMorphs" : "joabe 7/6/2023 22:35" } } + "recordAndMinimizeButtonClicked" : "joabe 7/6/2023 22:32" } } diff --git a/packages/Babylonian-ExampleMining.package/BPExamplesMorph.extension/instance/initialize.st b/packages/Babylonian-ExampleMining.package/BPExamplesMorph.extension/instance/initialize.st deleted file mode 100644 index 948dde6b..00000000 --- a/packages/Babylonian-ExampleMining.package/BPExamplesMorph.extension/instance/initialize.st +++ /dev/null @@ -1,27 +0,0 @@ -*Babylonian-ExampleMining-Core-override -initialize - - super initialize. - - self - color: Color transparent; - borderWidth: (PluggableButtonMorph basicNew userInterfaceTheme borderWidth); - borderColor: self class textColor. - - self - changeTableLayout; - hResizing: #rigid; - listDirection: #topToBottom; - cellInset: 1. - - self addCollapsedExamplesMorph. - - self - addButtonBar; - addCreateExampleButtonLabeled: 'add example' selector: #addExampleButtonClicked; - addCreateExampleButtonLabeled: '| add script example' selector: #addScriptExampleButtonClicked; - addCreateExampleButtonLabeled: '| add referencing example' selector: #addReferencingExampleButtonClicked; - addCreateExampleButtonLabeled: '| add TestCaseExample' selector: #addTestCaseExampleButtonClicked; - addCreateExampleButtonLabeled: '| add recorded example' selector: #addRecordedExampleButtonClicked. - - BPExamples value addDependent: self. \ No newline at end of file diff --git a/packages/Babylonian-ExampleMining.package/BPExamplesMorph.extension/methodProperties.json b/packages/Babylonian-ExampleMining.package/BPExamplesMorph.extension/methodProperties.json index 96b923e4..2f9d72cb 100644 --- a/packages/Babylonian-ExampleMining.package/BPExamplesMorph.extension/methodProperties.json +++ b/packages/Babylonian-ExampleMining.package/BPExamplesMorph.extension/methodProperties.json @@ -6,6 +6,5 @@ "addRecordedExampleButtonClicked" : "joabe 7/6/2023 22:36", "addTestCaseExampleButtonClicked" : "joabe 7/6/2023 22:45", "containsTestMethod" : "joabe 7/6/2023 22:44", - "initialize" : "joabe 7/6/2023 22:43", "openRecordingTool" : "joabe 7/6/2023 22:37", "openSearchTool" : "joabe 7/6/2023 22:37" } } diff --git a/packages/Babylonian-ExampleMining.package/BPMethodExampleMorph.extension/instance/addArgumentScriptMorphs.st b/packages/Babylonian-ExampleMining.package/BPMethodExampleMorph.extension/instance/addArgumentScriptMorphs.st deleted file mode 100644 index 1e554e0c..00000000 --- a/packages/Babylonian-ExampleMining.package/BPMethodExampleMorph.extension/instance/addArgumentScriptMorphs.st +++ /dev/null @@ -1,32 +0,0 @@ -*Babylonian-ExampleMining-Core-override -addArgumentScriptMorphs - - | editField container | - self example argumentNames withIndexDo: [:argumentName :index | - container := self newLabelContainerMorph: (argumentName , ': '). - - editField := self - editFieldStyledInitialContent: (self example argumentScriptStringAt: index) - onChange: [:str | - self example argumentScripts at: index put: str. - self codeContentChanged] - onAccept: [:str | - self acceptChangesAtSource. - false "Do not continue handling this morphs edit"]. - editField - balloonText: 'write code that instantiates the argument'; - width: 240. - container addMorphBack: editField. - - "Live specimen editing" - ((self example argumentScripts at: index) isLiveSpecimenReference) - ifTrue: [container addMorphBack: (self newSpecimenEditingButtonFor: (self example argumentScripts at: index))]. - - "Live specimen selection" - container addMorphBack: (self newSpecimenSelectionButtonOnClick: [ - self selectLiveSpecimen: (self example liveSpecimenAt: index) then: [:specimen | - self example argumentScripts at: index put: specimen. - self codeContentChanged. - editField setText: (self example argumentScriptStringAt: index)]]). - - exampleSpecificMorphs addMorphBack: container]. \ No newline at end of file diff --git a/packages/Babylonian-ExampleMining.package/BPMethodExampleMorph.extension/instance/addReceiverConstructorMorph.st b/packages/Babylonian-ExampleMining.package/BPMethodExampleMorph.extension/instance/addReceiverConstructorMorph.st deleted file mode 100644 index 1a33fac2..00000000 --- a/packages/Babylonian-ExampleMining.package/BPMethodExampleMorph.extension/instance/addReceiverConstructorMorph.st +++ /dev/null @@ -1,32 +0,0 @@ -*Babylonian-ExampleMining-Core-override -addReceiverConstructorMorph - - | container editField | - container := self newLabelContainerMorph: 'self: '. - - editField := (self - editFieldStyledInitialContent: self example receiverConstructorString - onChange: [:str | - self example receiverConstructor: str. - self codeContentChanged] - onAccept: [:str | - self acceptChangesAtSource]). - editField - balloonText: 'Write code that instantiates the receiver. -You can also provide a selector that will be called on the -class-side of this class to create a receiver object.'; - width: 240. - container addMorphBack: editField. - - "Live specimen editing" - (self example receiverConstructor isLiveSpecimenReference) - ifTrue: [container addMorphBack: (self newSpecimenEditingButtonFor: self example receiverConstructor)]. - - "Live specimen selection" - container addMorphBack: (self newSpecimenSelectionButtonOnClick: [ - self selectLiveSpecimen: self example receiverConstructorLiveSpecimen then: [:specimen |. - self example receiverConstructor: specimen. - self codeContentChanged. - editField setText: self example receiverConstructorString]]). - - exampleSpecificMorphs addMorphBack: container. \ No newline at end of file diff --git a/packages/Babylonian-ExampleMining.package/BPMethodExampleMorph.extension/methodProperties.json b/packages/Babylonian-ExampleMining.package/BPMethodExampleMorph.extension/methodProperties.json index 33670c07..413ec341 100644 --- a/packages/Babylonian-ExampleMining.package/BPMethodExampleMorph.extension/methodProperties.json +++ b/packages/Babylonian-ExampleMining.package/BPMethodExampleMorph.extension/methodProperties.json @@ -2,6 +2,4 @@ "class" : { }, "instance" : { - "addArgumentScriptMorphs" : "joabe 7/6/2023 22:59", - "addReceiverConstructorMorph" : "joabe 7/6/2023 22:51", "newSpecimenEditingButtonFor:" : "ek 7/24/2023 18:34" } } diff --git a/packages/Babylonian-ProbeLog.package/BPSwimlaneLineMorph.class/instance/fontColor.st b/packages/Babylonian-ProbeLog.package/BPSwimlaneLineMorph.class/instance/fontColor.st new file mode 100644 index 00000000..18c7fd77 --- /dev/null +++ b/packages/Babylonian-ProbeLog.package/BPSwimlaneLineMorph.class/instance/fontColor.st @@ -0,0 +1,4 @@ +constants +fontColor + + ^ PluggableTextMorph basicNew userInterfaceTheme textColor \ No newline at end of file diff --git a/packages/Babylonian-ProbeLog.package/BPSwimlaneLineMorph.class/methodProperties.json b/packages/Babylonian-ProbeLog.package/BPSwimlaneLineMorph.class/methodProperties.json index c89c8788..771f6232 100644 --- a/packages/Babylonian-ProbeLog.package/BPSwimlaneLineMorph.class/methodProperties.json +++ b/packages/Babylonian-ProbeLog.package/BPSwimlaneLineMorph.class/methodProperties.json @@ -9,6 +9,7 @@ "colorFor:" : "lu 3/7/2022 19:27", "containingSwimlane:" : "lu 3/7/2022 18:35", "context:" : "joabe 5/9/2023 17:41", + "fontColor" : "lu 3/7/2022 00:44", "fontHeight" : "lu 3/7/2022 00:37", "haltButtonClicked" : "lu 3/7/2022 18:35", "iconSize" : "lu 3/7/2022 00:37", 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 69e5da6b..89364519 100644 --- a/packages/Babylonian-Tests.package/BPTestExamplesClass.class/methodProperties.json +++ b/packages/Babylonian-Tests.package/BPTestExamplesClass.class/methodProperties.json @@ -9,8 +9,13 @@ "instance" : { "+" : "pre 7/1/2019 14:23", "addAndLog:" : "pre 5/3/2021 10:36", - "binarySearchIn:theElement:" : "ek 9/29/2023 09:13", + "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/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/BPExampleMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json index aa903b3b..04db2b0d 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json @@ -40,7 +40,7 @@ "openExampleInProbeLog" : "joabe 5/9/2023 17:37", "openInProbeLogClicked" : "joabe 5/9/2023 17:34", "removeButtonClicked" : "jb 1/10/2022 19:46", - "step" : "joabe 8/9/2023 13:56", + "step" : "joabe 9/28/2022 22:58", "textEmphasis" : "pre 9/30/2020 10:35", "timeoutButtonClicked" : "joabe 9/27/2022 22:35", "updateAssertResultIcon" : "jb 12/30/2021 22:33", 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/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 new file mode 100644 index 00000000..7321b409 --- /dev/null +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/instance/removeButtonClicked.st @@ -0,0 +1,11 @@ +actions +removeButtonClicked + + self annotation deleteLinkedProbes. + + BPClassNameToInstanceProbes value removeProbe: self annotation. + + self containingBrowser removeAnnotations: {self annotation}. + + + \ 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/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 new file mode 100644 index 00000000..47b7eae5 --- /dev/null +++ b/packages/Babylonian-UI.package/BPInstanceVariableProbeMorph.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + }, + "instance" : { + "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", + "wantsMethodReference" : "joabe 10/7/2023 20:28" } } 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/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/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" } } 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/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 d872c408..0d6bc62d 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", - "visualizeButtonClickedFor:" : "pre 5/27/2021 12:06" } } + "valuesMorphClass" : "joabe 10/6/2023 11:19", + "visualizeButtonClickedFor:" : "joabe 10/16/2023 15:31" } } 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/BPStyler.class/instance/applyInstanceProbeIn.for..st b/packages/Babylonian-UI.package/BPStyler.class/instance/applyInstanceProbeIn.for..st new file mode 100644 index 00000000..798a844a --- /dev/null +++ b/packages/Babylonian-UI.package/BPStyler.class/instance/applyInstanceProbeIn.for..st @@ -0,0 +1,13 @@ +private +applyInstanceProbeIn: aPreformattedText for: anInstanceProbe + + | interval | + interval := (aPreformattedText string + allRangesOfRegexMatches: '(''| )', anInstanceProbe variableName, '(''| )') first. + + aPreformattedText + 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..5872cb36 --- /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 + applyInstanceProbeIn: 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..c682ebec 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", + "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 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", "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/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/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/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/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 811617ec..25c8df6d 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json @@ -15,4 +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" } } + "updateTraces" : "joabe 10/7/2023 20:30", + "valuesMorphClass" : "joabe 10/6/2023 11:20", + "wantsMethodReference" : "joabe 10/7/2023 20:28" } } 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" } } 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..46f64855 --- /dev/null +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalOfVariableNameIn.having..st @@ -0,0 +1,21 @@ +*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 | | 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/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..574784ed --- /dev/null +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/determineIntervalToAnnotateFor.in..st @@ -0,0 +1,23 @@ +*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. + sourceMap := currentCompiledMethod ifNotNil: [currentCompiledMethod bpSourceMap] ifNil: [self bpClassDeclarationSourceMap]. + result := self + 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. + \ 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..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. - 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 2879bbc4..a7d846b3 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,11 @@ *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 := self determineIntervalToAnnotateFor: interval forNodes: anAnnotation canBeAnnotatedTo. + | 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 textMorph addMorph: newMorph. \ No newline at end of file + + anAnnotation isInstanceVariableProbe + 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/doAddAnnotationMorphToMethod.in..st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/doAddAnnotationMorphToMethod.in..st new file mode 100644 index 00000000..d1c2387a --- /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 textMorph 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..91449aa3 --- /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) 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/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/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 70532448..c07f70f3 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json +++ b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json @@ -5,23 +5,30 @@ "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 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", - "doAddAnnotation:in:" : "pre 9/28/2023 13:58", + "doAddAnnotation:in:" : "joabe 10/4/2023 16:16", + "doAddAnnotationMorphToMethod:in:" : "joabe 10/7/2023 20:20", + "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", @@ -35,5 +42,6 @@ "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", - "saveMethodWithExamplesWith:" : "pre 8/6/2019 13:57" } } + "saveMethodWithExamples" : "joabe 9/22/2023 22:57", + "saveMethodWithExamplesWith:" : "pre 8/6/2019 13:57", + "styleText:in:referencing:" : "joabe 10/5/2023 12:24" } } 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" } }