<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>