Marcel Taeumel uploaded a new version of KernelTests to project The Trunk:
http://source.squeak.org/trunk/KernelTests-jr.446.mcz
==================== Summary ====================
Name: KernelTests-jr.446
Author: jr
Time: 9 November 2023, 3:10:49.238163 pm
UUID: 09c3e782-fb6c-1a4e-8287-d2567640f438
Ancestors: KernelTests-pre.445
Complements Kernel-jr.1532
Test that notifications that are not meant to interrupt the control flow are not caught while evaluating a future send.
The test example `Object future comment` was provided by Christoph Thiede (ct).
=============== Diff against KernelTests-pre.445 ===============
Item was added:
+ ----- Method: FutureTest>>testNotificationsAreNotCaught (in category 'tests') -----
+ testNotificationsAreNotCaught
+ "The deferred evaluation below uses CurrentReadOnlySourceFiles. The error handling of the future promise must not interfere with this Notification."
+ | p1 |
+ p1 := Object future comment.
+ self waitUntil: [p1 isResolved] orCycleCount: 1.
+ self assert: p1 isResolved.
+ !
Marcel Taeumel uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-jr.1532.mcz
==================== Summary ====================
Name: Kernel-jr.1532
Author: jr
Time: 9 November 2023, 3:08:48.989163 pm
UUID: 5af29860-7431-0b48-b551-f59dcc85b3b8
Ancestors: Kernel-dtl.1531
Future evaluations should not catch exceptions that are not supposed to be caught or not meant to abort any control flow. This includes Notifications such as CurrentReadOnlySourceFiles.
=============== Diff against Kernel-dtl.1531 ===============
Item was changed:
----- Method: Promise>>fulfillWith:passErrors: (in category 'resolving') -----
fulfillWith: aBlock passErrors: aBoolean
"Evaluate aBlock. If it signals an exception, reject this promise with the exception
as the argument; if it returns a value [or another Promise], resolve this promise
with the result.
If aBoolean is true, and an exception is signaled, it is passed out to the caller.
If aBoolean is false, signaled exceptions are considered handled after the promise
has been rejected."
[ self resolveWith: aBlock value ]
+ on: Error
- on: Exception
do: [ :ex |
+ self rejectWith: ex.
+ aBoolean ifTrue: [ ex pass ] ]!
- (ex isKindOf: Halt)
- ifTrue: [ex pass]
- ifFalse: [
- self rejectWith: ex.
- aBoolean ifTrue: [ ex pass ] ]]!
Marcel Taeumel uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-mt.1534.mcz
==================== Summary ====================
Name: Kernel-mt.1534
Author: mt
Time: 13 November 2023, 2:01:29.485943 pm
UUID: 89fedc17-108b-b145-a33b-9dda33fb8409
Ancestors: Kernel-jar.1532, Kernel-jr.1532
Merge Kernel-jr.1532
=============== Diff against Kernel-jar.1532 ===============
Item was changed:
----- Method: Promise>>fulfillWith:passErrors: (in category 'resolving') -----
fulfillWith: aBlock passErrors: aBoolean
"Evaluate aBlock. If it signals an exception, reject this promise with the exception
as the argument; if it returns a value [or another Promise], resolve this promise
with the result.
If aBoolean is true, and an exception is signaled, it is passed out to the caller.
If aBoolean is false, signaled exceptions are considered handled after the promise
has been rejected."
[ self resolveWith: aBlock value ]
+ on: Error
- on: Exception
do: [ :ex |
+ self rejectWith: ex.
+ aBoolean ifTrue: [ ex pass ] ]!
- (ex isKindOf: Halt)
- ifTrue: [ex pass]
- ifFalse: [
- self rejectWith: ex.
- aBoolean ifTrue: [ ex pass ] ]]!
Marcel Taeumel uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-jar.1532.mcz
==================== Summary ====================
Name: Kernel-jar.1532
Author: jar
Time: 9 November 2023, 11:23:12.591819 pm
UUID: 91eef5d6-745d-1d4f-a278-0397357c3841
Ancestors: Kernel-dtl.1531
fix Context >> #homeMethod; the following will now answer true:
[thisContext homeMethod] value = thisContext homeMethod
=============== Diff against Kernel-dtl.1531 ===============
Item was changed:
----- Method: Context>>homeMethod (in category 'accessing') -----
homeMethod
"Answer the home method associated with the receiver.
This is polymorphic with BlockClosure, CompiledCode, Context etc."
+ ^self method homeMethod!
- ^self method!
Marcel Taeumel uploaded a new version of Kernel to project The Treated Inbox:
http://source.squeak.org/treated/Kernel.lrnp-20231108.1533.mcz
==================== Summary ====================
Name: Kernel.lrnp-20231108.1533
Author: lrnp
Time: 8 November 2023, 4:25:22.251462 pm
UUID: 908d574d-93a7-45a8-aee1-32304f8d7955
Ancestors: Kernel-dtl.1531
cause #homeMethod to answer a CompiledMethod
Causes
[thisContext homeMethod] value = thisContext homeMethod
to answer true.
=============== Diff against Kernel-dtl.1531 ===============
Item was changed:
----- Method: BlockClosure>>homeMethod (in category 'accessing') -----
homeMethod
"Answer the home method associated with the receiver.
This is polymorphic with BlockClosure, CompiledCode, Context etc."
+ | maybe |
+ maybe := self method.
+ maybe ifNil: [^nil].
+ ^ maybe homeMethod!
- ^self method!
Item was changed:
----- Method: Context>>homeMethod (in category 'accessing') -----
homeMethod
"Answer the home method associated with the receiver.
This is polymorphic with BlockClosure, CompiledCode, Context etc."
+ | maybe |
+ maybe := self method.
+ ^ (maybe isKindOf: CompiledMethod)
+ ifTrue: maybe
+ ifFalse: [maybe homeMethod]!
- ^self method!
Marcel Taeumel uploaded a new version of Kernel to project The Treated Inbox:
http://source.squeak.org/treated/Kernel.lrnp-20231108.1534.mcz
==================== Summary ====================
Name: Kernel.lrnp-20231108.1534
Author: lrnp
Time: 8 November 2023, 4:48:47.222581 pm
UUID: 5f6d4eea-ca88-4757-934f-5783532f954e
Ancestors: Kernel.lrnp-20231108.1533, Kernel.lrnp-20231108.1532
enforce more strict pragma access
Treat pragma access like for #primitive : they are stored on the CompiledMethod, so have CompiledBlock answer not found even if its home method has one.
Also move #hasPragma: to CompiledCode to avoid the caller needing to add a guard.
Complements the new testPragmaAccess Context test in KernelTests.lrnp-20231108.446.
I don't know if this is backwards-incompatible due to mixed use of homeMethod and method on Context. I didn't include properties because that does certainly break at least one method.
=============== Diff against Kernel-dtl.1531 ===============
Item was changed:
----- Method: BlockClosure>>homeMethod (in category 'accessing') -----
homeMethod
"Answer the home method associated with the receiver.
This is polymorphic with BlockClosure, CompiledCode, Context etc."
+ | maybe |
+ maybe := self method.
+ maybe ifNil: [^nil].
+ ^ maybe homeMethod!
- ^self method!
Item was removed:
- ----- Method: CompiledBlock>>pragmaAt: (in category 'accessing-pragmas & properties') -----
- pragmaAt: aKey
- "Answer the pragma with selector aKey, or nil if none."
- ^self homeMethod pragmaAt: aKey!
Item was removed:
- ----- Method: CompiledBlock>>pragmas (in category 'accessing-pragmas & properties') -----
- pragmas
- ^self homeMethod pragmas!
Item was removed:
- ----- Method: CompiledBlock>>pragmasAt: (in category 'accessing-pragmas & properties') -----
- pragmasAt: aSelector
- "Answer all pragmas with selector aSelector."
- ^self homeMethod pragmasAt: aSelector!
Item was added:
+ ----- Method: CompiledCode>>hasPragma: (in category 'accessing-pragmas & properties') -----
+ hasPragma: aSymbol
+
+ ^ (self pragmaAt: aSymbol) notNil!
Item was added:
+ ----- Method: CompiledCode>>pragmaAt: (in category 'accessing-pragmas & properties') -----
+ pragmaAt: aKey
+ "Answer the pragma with selector aKey, or nil if none."
+ ^nil!
Item was added:
+ ----- Method: CompiledCode>>pragmas (in category 'accessing-pragmas & properties') -----
+ pragmas
+ ^#()!
Item was added:
+ ----- Method: CompiledCode>>pragmasAt: (in category 'accessing-pragmas & properties') -----
+ pragmasAt: aSelector
+ "Answer all pragmas with selector aSelector."
+ ^#()!
Item was removed:
- ----- Method: CompiledMethod>>hasPragma: (in category 'accessing-pragmas & properties') -----
- hasPragma: aSymbol
-
- ^ (self pragmaAt: aSymbol) notNil!
Item was changed:
----- Method: Context>>homeMethod (in category 'accessing') -----
homeMethod
"Answer the home method associated with the receiver.
This is polymorphic with BlockClosure, CompiledCode, Context etc."
+ | maybe |
+ maybe := self method.
+ ^ (maybe isKindOf: CompiledMethod)
+ ifTrue: maybe
+ ifFalse: [maybe homeMethod]!
- ^self method!
tim Rowledge uploaded a new version of SMLoader to project The Trunk:
http://source.squeak.org/trunk/SMLoader-tpr.101.mcz
==================== Summary ====================
Name: SMLoader-tpr.101
Author: tpr
Time: 7 November 2023, 4:09:38.903981 pm
UUID: 0728d977-6079-4877-8491-52ad519499a9
Ancestors: SMLoader-mt.100
If for some reason there is no WebClient class installed when the SMClient wants to start up we can load the package; but it's quite important to load the latest version as oposed to one from the distant days of circa 2015
=============== Diff against SMLoader-mt.100 ===============
Item was changed:
----- Method: SMClient class>>installWebClient (in category 'private') -----
installWebClient
Installer ss
project: 'WebClient';
+ install: 'WebClient'!
- install: 'WebClient-Core-ar.92.mcz'!