Marcel Taeumel uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-mt.1364.mcz
==================== Summary ====================
Name: Kernel-mt.1364
Author: mt
Time: 16 December 2020, 9:33:32.156464 am
UUID: 138652b8-3f41-45fa-b272-13d99680d2d3
Ancestors: Kernel-dtl.1363
Changes default bytecode set to SistaV1. (This is a regression from when I enabled reset for all pragma preferences.)
=============== Diff against Kernel-dtl.1363 ===============
Item was changed:
----- Method: CompiledCode class>>preferredBytecodeSetEncoderClass (in category 'preferences') -----
preferredBytecodeSetEncoderClass
<preference: 'Preferred bytecode set encoder class'
category: 'Compiler'
description: 'The system supports up to two bytecode sets; select the preferred one to use here. See CompiledCode class variables PrimaryBytecodeSetEncoderClass and SecondaryBytecodeSetEncoderClass.'
type: #Class>
+ ^PreferredBytecodeSetEncoderClass ifNil: [SecondaryBytecodeSetEncoderClass]!
- ^PreferredBytecodeSetEncoderClass ifNil: [PrimaryBytecodeSetEncoderClass]!
Marcel Taeumel uploaded a new version of ToolBuilder-MVC to project The Trunk:
http://source.squeak.org/trunk/ToolBuilder-MVC-mt.62.mcz
==================== Summary ====================
Name: ToolBuilder-MVC-mt.62
Author: mt
Time: 16 December 2020, 9:06:17.554602 am
UUID: 7fbc702d-3163-5441-a7ec-66fd8e9055e3
Ancestors: ToolBuilder-MVC-mt.61
Tool components (or widgets) can be built without a parent (e.g. window) present.
Makes MVCToolBuilderTests green again.
=============== Diff against ToolBuilder-MVC-mt.61 ===============
Item was changed:
----- Method: MVCToolBuilder>>setFrame:in: (in category 'private') -----
setFrame: fractionsRectangleOrLayoutFrame in: widget
| win |
fractionsRectangleOrLayoutFrame ifNil: [
"Translate subviews to position the viewport of each subView relative to
the widget window origin. If subviews are repositioned, as in a row of button
views arranged within a view, then the transformations will later be rescaled
to fit the subviews within the widget window."
self flag: #nonProportionalLayout. "See #setLayout:in:."
+ parent ifNotNil: [widget setTransformation: (widget transformation translateBy: parent window origin - widget window origin)].
- widget setTransformation: (widget transformation translateBy: parent window origin - widget window origin).
^ self].
win := fractionsRectangleOrLayoutFrame isRectangle
ifTrue: [self asWindow: fractionsRectangleOrLayoutFrame]
ifFalse: [fractionsRectangleOrLayoutFrame layout: nil in: topSize]. "assume LayoutFrame"
widget window: win.!
Eliot Miranda uploaded a new version of ToolsTests to project The Trunk:
http://source.squeak.org/trunk/ToolsTests-eem.101.mcz
==================== Summary ====================
Name: ToolsTests-eem.101
Author: eem
Time: 11 December 2020, 3:28:14.410649 pm
UUID: d3404ed0-924c-4e6f-8f3f-2256cfad73f4
Ancestors: ToolsTests-mt.100
Rewrite CompiledCodeInspectorTest>>testValuePaneModify
to work in both 32- and 64- bits, and to check/document the dependency on the SistaV1 bytecode set.
=============== Diff against ToolsTests-mt.100 ===============
Item was changed:
----- Method: CompiledCodeInspectorTest>>testValuePaneModify (in category 'tests') -----
testValuePaneModify
+ "Overridden to specify the kind of value to modify in a compiled-code object: the bytecodes. Looking at #createObject, we try to replace the pushConstant of the second bytecode with the one for the third bytcode. So, the beginning of the resulting string will change from 'CarpeSqueak' to 'SqueakSqueak'."
+
+ | initialPC |
+ self assert: 'SistaV1' equals: self object bytecodeSetName. "the test hard codes some bytecodes..."
+ initialPC := self object initialPC.
+ self assert: 35 equals: (self object at: initialPC + 1). "pushConstant: #[ ... ]"
+ self assert: 36 equals: (self object at: initialPC + 2). "pushConstant: #Squeak"
- "Overridden to specify the kind of value to modify in a compiled-code object: the bytecodes. Looking at #createObject, we try to replace the pushConstant of the byte array at 34 with the one at 35. So, the beginning of the resulting string will change from 'CarpeSqueak' to 'SqueakSqueak'."
-
- self assert: 35 equals: (self object at: 38). "pushConstant: #[ ... ]"
- self assert: 36 equals: (self object at: 39). "pushConstant: #Squeak"
self assert: (self evaluateObject beginsWith: 'CarpeSqueak').
+ self inspector selectFieldNamed: (initialPC + 1) printString. "pushConstant: #[ ... ]"
+ self assertFieldSelected: (initialPC + 1) printString.
+ self inValuePaneTypeAndAccept: 36. "pushConstant: #Squeak"
- self inspector selectFieldNamed: '38'. "pushConstant: #[ ... ]"
- self assertFieldSelected: '38'.
- self inValuePaneTypeAndAccept: '36'. "pushConstant: #Squeak"
+ self assert: 36 equals: (self object at: initialPC + 1). "pushConstant: #Squeak"
+ self assert: 36 equals: (self object at: initialPC + 2). "pushConstant: #Squeak"
+ self assert: (self evaluateObject beginsWith: 'SqueakSqueak')!
- self assert: 36 equals: (self object at: 38). "pushConstant: #Squeak"
- self assert: 36 equals: (self object at: 39). "pushConstant: #Squeak"
- self assert: (self evaluateObject beginsWith: 'SqueakSqueak').!
Marcel Taeumel uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-mt.1019.mcz
==================== Summary ====================
Name: Tools-mt.1019
Author: mt
Time: 11 December 2020, 10:30:43.719926 am
UUID: bdc455f1-6d58-4dc1-8c2f-5f6b3a9765d4
Ancestors: Tools-mt.1018
Makes inspector for character sets more useful. See: http://forum.world.st/The-Trunk-Tools-mt-1018-mcz-td5125215.html
Adds two extensions to the inspector framework:
- truncated field streaming now provides object and index if needed (via #cull:)
- representation of indices in collections can be overwritten via #elementNameAt: (like #elementGetterAt: and #elementSetterAt:)
Note that the character-set inspector is the first collection inspector that uses its contents as keys/indices. Even the set inspector was simplier, because its internal array could be exposed.
Also note that the elements of CharacterSetComplement and LazyCharacterSet cannot be shown as they are not enumerable.
=============== Diff against Tools-mt.1018 ===============
Item was added:
+ ----- Method: CharacterSetInspector>>characterNameFor: (in category 'private') -----
+ characterNameFor: character
+ "Extracted from Character >> #printOn:."
+
+ ^ String streamContents: [:stream | | integerValue |
+ ((integerValue := character asInteger) > 32 and: [integerValue ~= 127])
+ ifTrue: [
+ character printAsLiteralOn: stream.
+ stream space].
+ stream nextPut: $(; print: integerValue; nextPut: $)].!
Item was added:
+ ----- Method: CharacterSetInspector>>characterValueFor: (in category 'private') -----
+ characterValueFor: character
+ "Extracted from Character >> #printOn: (and #storeOn:)."
+
+ ^ String streamContents: [:stream |
+ (character class constantNameFor: character)
+ ifNotNil: [:name | stream nextPutAll: character class name; space; nextPutAll: name]
+ ifNil: [stream nextPutAll: character class name; nextPutAll: ' value: '; print: character asInteger]].!
Item was added:
+ ----- Method: CharacterSetInspector>>elementAt: (in category 'menu - private') -----
+ elementAt: indexOrKey
+ "All field keys are characters."
+
+ ^ indexOrKey!
Item was changed:
----- Method: CharacterSetInspector>>elementGetterAt: (in category 'private') -----
+ elementGetterAt: character
- elementGetterAt: element
+ self shouldNotImplement.!
- ^ [:set | element]!
Item was changed:
----- Method: CharacterSetInspector>>elementIndices (in category 'private') -----
elementIndices
+ self shouldNotImplement.!
- ^ self object canBeEnumerated
- ifTrue: [self object asArray]
- ifFalse: [#()]!
Item was added:
+ ----- Method: CharacterSetInspector>>elementNameAt: (in category 'private') -----
+ elementNameAt: index
+
+ self shouldNotImplement.!
Item was changed:
----- Method: CharacterSetInspector>>elementSetterAt: (in category 'private') -----
elementSetterAt: index
+ self shouldNotImplement.!
- ^ [:set :element | self error: 'Character sets cannot be changed.']!
Item was added:
+ ----- Method: CharacterSetInspector>>streamElementsOn: (in category 'fields - streaming') -----
+ streamElementsOn: aStream
+ "Overwritten to realize array representation of character sets if they can be enumerated. Assume that enumeration is deterministic."
+
+ self object canBeEnumerated ifFalse: [^ self].
+
+ self
+ streamOn: aStream
+ truncate: self object asArray "Requires character set to be enumerable."
+ collectFields: [:character :index |
+ (self newFieldForType: #element key: index)
+ name: ('{1}: {2}' format: {index. self characterNameFor: character});
+ valueGetter: [:characterSet | self characterValueFor: character]; printValueAsIs;
+ yourself]!
Item was added:
+ ----- Method: CollectionInspector>>elementNameAt: (in category 'private') -----
+ elementNameAt: index
+
+ ^ index printString!
Item was changed:
----- Method: CollectionInspector>>streamElementsOn: (in category 'fields - streaming') -----
streamElementsOn: aStream
"Create a field for each element in the collection. Use the index' #printString (and not #asString) to reveal the nature of the key, which are usually integers (1, 2, 3, ...), but can be symbols (#apple, #tree, ...) or other objects (aMorph, aSocket, ...) in dictionary-like collections. Maybe #storeString would be even better but can be very expensive to compute."
self
streamOn: aStream
truncate: self elementIndices
collectFields: [:index |
(self newFieldForType: #element key: index)
+ name: (self elementNameAt: index);
- name: index printString;
valueGetter: (self elementGetterAt: index);
valueSetter: (self elementSetterAt: index);
yourself]!
Item was changed:
----- Method: Inspector>>streamOn:truncate:collectFields:ellipsisFrom: (in category 'fields - truncation') -----
streamOn: aStream truncate: someObjects collectFields: fieldBlock ellipsisFrom: ellipsisBlock
"Create fields for someObjects using fieldBlock. Using the current #truncationLimit, create an extra ellipsis field to hide objects that go beyond this limit."
(someObjects size <= self truncationLimit or: [self truncationLimit < 0])
+ ifTrue: [^ aStream nextPutAll: (someObjects withIndexCollect: [:each :index | fieldBlock cull: each cull: index])].
- ifTrue: [^ aStream nextPutAll: (someObjects collect: [:each | fieldBlock value: each])].
+ someObjects readStream in: [:readStream | | offset |
+ offset := readStream size - self truncationTail.
- someObjects readStream in: [:readStream |
aStream
nextPutAll: ((readStream next: self truncationLimit - self truncationTail - 1)
+ withIndexCollect: [:each :index | fieldBlock cull: each cull: index]);
+ nextPut: (ellipsisBlock value: (readStream upToPosition: offset));
- collect: [:each | fieldBlock value: each]);
- nextPut: (ellipsisBlock value: (readStream upToPosition: readStream size - self truncationTail));
nextPutAll: (readStream upToEnd
+ withIndexCollect: [:each :index | fieldBlock cull: each cull: index + offset])].!
- collect: [:each | fieldBlock value: each])].!
Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.1196.mcz
==================== Summary ====================
Name: System-mt.1196
Author: mt
Time: 9 December 2020, 11:08:33.726163 am
UUID: 93f95297-e0dd-43a5-84a8-16fa9ea4c6e2
Ancestors: System-dtl.1195
Removes duplication for author initials "md".
=============== Diff against System-dtl.1195 ===============
Item was changed:
----- Method: SystemNavigation class>>privateAuthorsRaw (in category 'class initialization') -----
(excessive size, no diff calculated)
Item was changed:
+ (PackageInfo named: 'System') postscript: 'SystemNavigation initializeAuthors....'!
- (PackageInfo named: 'System') postscript: 'SystemNavigation initializeAuthors...'!
David T. Lewis uploaded a new version of Files to project The Trunk:
http://source.squeak.org/trunk/Files-dtl.185.mcz
==================== Summary ====================
Name: Files-dtl.185
Author: dtl
Time: 8 December 2020, 4:13:54.809395 pm
UUID: 722a668c-0449-4292-8076-fe77438b3ddd
Ancestors: Files-eem.184
Let DoItFirstTest>>startup invoke DoItFirst>>reevaluateCwd. If a DoItFirst command line option has specified a new FileDirectory default, apply it now.
=============== Diff against Files-eem.184 ===============
Item was changed:
----- Method: FileDirectory class>>startUp (in category 'name utilities') -----
startUp
"Establish the platform-specific FileDirectory subclass. Do any platform-specific startup."
self setDefaultDirectoryClass.
self setDefaultDirectory: (self dirPathFor: Smalltalk imageName).
Preferences startInUntrustedDirectory
ifTrue:[ "The SecurityManager may override the default directory to prevent unwanted write access etc."
self setDefaultDirectory: SecurityManager default untrustedUserDirectory.
"Make sure we have a place to go to"
DefaultDirectory assureExistence].
Smalltalk openSourceFiles.
+ (Smalltalk classNamed: #DoItFirst) ifNotNil: [ :doit | doit perform: #reevaluateCwd ].
!
David T. Lewis uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-dtl.1363.mcz
==================== Summary ====================
Name: Kernel-dtl.1363
Author: dtl
Time: 8 December 2020, 4:13:03.533263 pm
UUID: dc65867e-37e6-4295-aa44-ef26c62ba250
Ancestors: Kernel-eem.1362
Let Delay class>>startup invoke DoItFirst class>>reevaluateDebug. If a DoItFirst command line option has requested a debugger, then invoke it now after Delay startUp processing..
=============== Diff against Kernel-eem.1362 ===============
Item was changed:
----- Method: Delay class>>startUp (in category 'snapshotting') -----
startUp
"Restart active delay, if any, when resuming a snapshot."
DelaySuspended ifFalse:[^self error: 'Trying to activate Delay twice'].
DelaySuspended := false.
self restoreResumptionTimes.
AccessProtect signal.
+ (Smalltalk classNamed: #DoItFirst) ifNotNil: [ :doit | doit perform: #reevaluateDebug].
+
+
!