<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
                                        Hi Nicolas.<div><br></div><div>> <span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Alas, Kernel now depend on Morphic due to MouseEvent so the test still fails.</span></div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">> Either EventSensor shouldn't be in Kernel, or MouseEvent should not be in Morphic (or both?)...</span><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Yes, it is not really specific to Morphic to have (and want to have) objects for user-input events. Considering the realm of "headless" scenarios, EventSensor might not fit into Kernel either. Anyway, "MouseEvent numButtons" is a good abstraction! We should keep it.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Best,</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Marcel</span></div><div class="mb_sig"></div><blockquote class='history_container' type='cite' style='border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;'>
                        <p style='color: #AAAAAA; margin-top: 10px;'>Am 19.04.2021 21:18:22 schrieb commits@source.squeak.org <commits@source.squeak.org>:</p><div style='font-family:Arial,Helvetica,sans-serif'>Nicolas Cellier uploaded a new version of Tests to project The Trunk:<br>http://source.squeak.org/trunk/Tests-nice.455.mcz<br><br>==================== Summary ====================<br><br>Name: Tests-nice.455<br>Author: nice<br>Time: 19 April 2021, 9:18:01.955183 pm<br>UUID: 94f23508-c48c-0d47-8588-b2367071c298<br>Ancestors: Tests-nice.454<br><br>Two unrelated changes:<br><br>1) Kernel does not depend on Multilingual anymore (really?)<br>    Aknowledge this little victory before the dependecy come back.<br>    Alas, Kernel now depend on Morphic due to MouseEvent so the test still fails.<br>    Either EventSensor shouldn't be in Kernel, or MouseEvent should not be in Morphic (or both?)...<br><br>2) workaround source range test in presence of FullBlockClosure<br>    My understanding is that full block bytecodes are not hosted in their home method.<br>    As a consequence, full block also have their own PC.<br>    So a simple PC map is not elaborate enough to test the selection inside the block.<br>    By now, just skip the test of selection inside the full block closure.<br>    If some good soul wants to revise the test and make it thorough again, welcome!<br><br>=============== Diff against Tests-nice.454 ===============<br><br>Item was changed:<br>  ----- Method: ClosureCompilerTest>>supportTestSourceRangeAccessForInjectInto:source: (in category 'tests') -----<br>  supportTestSourceRangeAccessForInjectInto: method source: source<br>     "Test debugger source range selection for inject:into:"<br>     ^self<br>                 supportTestSourceRangeAccessForInjectInto: method<br>             source: source<br>+               selectionSequence: (method encoderClass supportsFullBlocks<br>+                   ifTrue: ["Full blocks are searated from home method, with their own PC"<br>+                                    #(      ':= thisValue'<br>+                                               'do: [:each | nextValue := binaryBlock value: nextValue value: each]'<br>+                                                '^nextValue')]<br>+                       ifFalse: [#(    ':= thisValue'<br>+                                               'do: [:each | nextValue := binaryBlock value: nextValue value: each]'<br>+                                                'value: nextValue value: each'<br>+                                               ':= binaryBlock value: nextValue value: each'<br>+                                                'nextValue := binaryBlock value: nextValue value: each'<br>+                                              'value: nextValue value: each'<br>+                                               ':= binaryBlock value: nextValue value: each'<br>+                                                'nextValue := binaryBlock value: nextValue value: each'<br>+                                              '^nextValue')]).!<br>-            selectionSequence: #(   ':= thisValue'<br>-                                                               'do: [:each | nextValue := binaryBlock value: nextValue value: each]'<br>-                                                                'value: nextValue value: each'<br>-                                                               ':= binaryBlock value: nextValue value: each'<br>-                                                                'nextValue := binaryBlock value: nextValue value: each'<br>-                                                              'value: nextValue value: each'<br>-                                                               ':= binaryBlock value: nextValue value: each'<br>-                                                                'nextValue := binaryBlock value: nextValue value: each'<br>-                                                              '^nextValue')!<br><br>Item was changed:<br>  ----- Method: ClosureCompilerTest>>supportTestSourceRangeAccessForInjectInto:source:selectionSequence: (in category 'tests') -----<br>  supportTestSourceRangeAccessForInjectInto: method source: source selectionSequence: selections<br>     "Test debugger source range selection for inject:into:"<br>     | evaluationCount sourceMap debugTokenSequence debugCount |<br>   DebuggerMethodMap voidMapCache.<br>       evaluationCount := 0.<br>+        sourceMap := method debuggerMap abstractSourceMapForMethod: method.<br>-  sourceMap := method debuggerMap abstractSourceMap.<br>    debugTokenSequence := selections collect: [:string| Scanner new scanTokens: string].<br>          debugCount := 0.<br>      thisContext<br>           runSimulated: [(1 to: 2)<br>                                              withArgs:<br>                                                     {       0.<br>                                                            [:sum :each|<br>                                                                   evaluationCount := evaluationCount + 1.<br>                                                               sum + each]}<br>                                                 executeMethod: method]<br>                contextAtEachStep:<br>                    [:ctxt| | range debugTokens |<br>                         (ctxt method == method<br>                        and: ["Exclude the send of #blockCopy: or #closureCopy:copiedValues: and braceWith:with:<br>                                     to create the block, and the #new: and #at:'s for the indirect temp vector.<br>                                  This for compilation without closure bytecodes. (Note that at:put:'s correspond to stores)"<br>                           (ctxt willSend<br>                                        and: [(#(closureCopy:copiedValues: blockCopy: new: at: braceWith:with:) includes: ctxt selectorToSendOrSelf) not])<br>                            "Exclude the store of the argument into the home context (for BlueBook blocks)<br>                            and the store of an indirection vector into an initial temp"<br>                            or: [(ctxt willStore<br>                                          and: [(ctxt isBlock and: [ctxt pc = ctxt startpc]) not<br>                                        and: [(ctxt isBlock not<br>                                               and: [(method usesClosureBytecodes and: [ctxt abstractPC = 2])]) not]])<br>                               or: [ctxt willReturn]]]) ifTrue:<br>                              [debugTokens := debugTokenSequence at: (debugCount := debugCount + 1) ifAbsent: [#(bogusToken)].<br>                               self assert: (sourceMap includesKey: ctxt abstractPC).<br>                                range := sourceMap at: ctxt abstractPC ifAbsent: [(1 to: 0)].<br>                                 self assert: (Scanner new scanTokens: (source copyFrom: range first to: range last)) = debugTokens]].<br>        self assert: evaluationCount = 2!<br><br>Item was changed:<br>  ----- Method: PackageDependencyTest>>testKernel (in category 'tests') -----<br>  testKernel<br>     self testPackage: #Kernel dependsExactlyOn: #(<br>                #'Chronology-Core'<br>            Collections<br>           Compiler<br>              Environments<br>                  Files<br>-                Multilingual<br>                  System<br>                #'ToolBuilder-Kernel'<br>         ).!<br><br><br></div></blockquote>
                                        </div></body>