Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
December 2009
- 96 participants
- 2069 messages
Re: [Pharo-project] Fwd: sort: and sortBlock:
by Nicolas Cellier
2009/12/23 Adrian Kuhn <akuhn(a)iam.unibe.ch>:
> Levente Uzonyi <leves@...> writes:
>
>> > what is TreeSet?
>>
>> The common data structure to implement ordered sets. Which one do you use?
>>
>> IMO ordered sets (where ordering means the same as in OrderedCollection)
>> should be implemented with a hashtable of linked elements.
That's probably why Stephane proposed a UniqueOrderedCollection: he
must have the expectation that this collection can be indexed in O(1)
Nicolas
>
> You're right.
>
> I confused ordered and sorted.
>
> --AA
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Dec. 23, 2009
Re: [Pharo-project] Fwd: hasEqualElements:
by Stéphane Ducasse
Excellent the Browser did not find it.
So now I understand where I got used to the idea of having the difference between
sameElements and sameStructuralElements.
Tx eliot I will read again in VW.
Stef
On Dec 23, 2009, at 7:10 PM, Eliot Miranda wrote:
>
>
> On Wed, Dec 23, 2009 at 1:08 AM, Nicolas Cellier <nicolas.cellier.aka.nice(a)gmail.com> wrote:
> 2009/12/23 Stéphane Ducasse <stephane.ducasse(a)inria.fr>:
> >
> >
> >
> > Hi
> >
> > (SortedCollection new addAll: #(9 2 3 ); yourself)
> > hasEqualElements: (OrderedCollection withAll: #(9 2 3)) -> false
> >
> > hasEqualElements: otherCollection
> > "Answer whether the receiver's size is the same as otherCollection's
> > size, and each of the receiver's elements equal the corresponding
> > element of otherCollection.
> > This should probably replace the current definition of #= ."
> >
> > | size |
> > (otherCollection isKindOf: SequenceableCollection) ifFalse: [^ false].
> > (size := self size) = otherCollection size ifFalse: [^ false].
> > 1 to: size do:
> > [:index |
> > (self at: index) = (otherCollection at: index) ifFalse: [^ false]].
> > ^ true
> >
> > For me the name of this method is misleading and I would really like to
> > renaming it
> > hasStructurallyEqualElements: and have new one doing hasEqualElements:
> >
> > What do you think?
> > I would like a beautiful world....
> >
> > Stef (freezing with a flu in my bed.... cool christmax).
> >
> >
>
> Didn't VW had a #isSameSquenceAs:
>
> Nicolas
>
>
> <methods>
> <class-id>Core.SequenceableCollection</class-id> <category>comparing</category>
>
> <body package="Collections-Abstract" selector="isSameSequenceAs:">isSameSequenceAs: otherCollection
> "Answer whether the receiver's size is the same as otherCollection's size, and each
> of the receiver's elements equal the corresponding element of otherCollection."
>
> | size |
> (size := self size) = otherCollection size ifFalse: [^false].
> 1 to: size do: [:index |
> (self at: index) = (otherCollection at: index) ifFalse: [^false]].
> ^true</body>
> </methods>
>
>
> i.e. trust the caller is providing a sequence and if otherCollection doesn't implement at: there will be a run-time error, hence any otherCollection isKindOf: SequenceableCollection is just wasted cycles.
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Dec. 23, 2009
Re: [Pharo-project] Long method can not be compiled using #compile: aString
by Eliot Miranda
This results in an MNU instead of a warning about too many literals because
Encoder>>notify: does not report notifications if there is no requestor (if
compilation is non-interactive). A fix would be to integrate with Colin's
compiler error changes, e.g. by having Encoder hold onto its parser and
defer to Parser>>notify:. In the interim an adequate fix is
!Encoder methodsFor: 'error handling' stamp: 'eem 12/22/2009 11:57'!
notify: string
"Put a separate notifier on top of the requestor's window"
| req |
requestor == nil
ifTrue:
[super notify: string]
ifFalse:
[req := requestor.
self release.
req notify: string].
^false! !
With this fix a notifier opens stating:
"More than 256 literals referenced.
You must split or otherwise simplify this method.
The 257th literal is: 397
Select Proceed to continue, or close this window to cancel the operation."
Find file-in attached.
2009/12/21 Bart Gauquie <bart.gauquie(a)gmail.com>
> Hi,
>
> First load the latest http://www.squeaksource.com/MorphicsRecordNPlaypackage.
>
> Then for instance following fails if I evaluate it in a workspace:
>
> MorphicReplayDemoTest compile:
> 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 1037@504 to: 979@482.
> self addMMEFrom: 979@482 to: 905@464.
> self addMMEFrom: 905@464 to: 823@462.
> self addMMEFrom: 823@462 to: 745@482.
> self addMMEFrom: 745@482 to: 685@520.
> self addMMEFrom: 685@520 to: 651@559.
>
> self addMMEFrom: 651@559 to: 643@579.
> self addMMEFrom: 643@579 to: 653@579.
> self addMMEFrom: 653@579 to: 675@564.
> self addMMEFrom: 675@564 to: 810@452.
> self addMMEFrom: 810@452 to: 923@353.
> self addMMEFrom: 923@353 to: 1005@287.
> self addMMEFrom: 1005@287 to: 1052@257.
> self addMMEFrom: 1052@257 to: 1061@252.
> self addMMEFrom: 1061@252 to: 1059@259.
> self addMMEFrom: 1059@259 to: 998@314.
> self addMMEFrom: 998@314 to: 898@414.
> self addMMEFrom: 898@414 to: 827@502.
> self addMMEFrom: 827@502 to: 789@570.
> self addMMEFrom: 789@570 to: 792@610.
> self addMMEFrom: 792@610 to: 839@630.
> self addMMEFrom: 839@630 to: 929@620.
> self addMMEFrom: 929@620 to: 1039@579.
> self addMMEFrom: 1039@579 to: 1086@549.
> self addMMEFrom: 1086@549 to: 1158@447.
> self addMMEFrom: 1158@447 to: 1147@379.
> self addMMEFrom: 1147@379 to: 1066@377.
> self addMMEFrom: 1066@377 to: 930@416.
> self addMMEFrom: 930@416 to: 864@446.
> self addMMEFrom: 864@446 to: 734@530.
> self addMMEFrom: 734@530 to: 714@548.
> self addMMEFrom: 714@548 to: 734@546.
> self addMMEFrom: 734@546 to: 815@515.
> self addMMEFrom: 815@515 to: 875@491.
> self addMMEFrom: 875@491 to: 1065@407.
> self addMMEFrom: 1065@407 to: 1128@361.
> self addMMEFrom: 1128@361 to: 1142@343.
> self addMMEFrom: 1142@343 to: 1112@340.
> self addMMEFrom: 1112@340 to: 1064@349.
> self addMMEFrom: 1064@349 to: 864@416.
> self addMMEFrom: 864@416 to: 757@471.
> self addMMEFrom: 757@471 to: 705@511.
> self addMMEFrom: 705@511 to: 701@524.
> self addMMEFrom: 701@524 to: 743@528.
> self addMMEFrom: 743@528 to: 845@509.
> self addMMEFrom: 845@509 to: 914@493.
> self addMMEFrom: 914@493 to: 1101@446.
> self addMMEFrom: 1101@446 to: 1154@427.
> self addMMEFrom: 1154@427 to: 1163@423.
> self addMMEFrom: 1163@423 to: 1156@422.
> self addMMEFrom: 1156@422 to: 1129@424.
> self addMMEFrom: 1129@424 to: 923@449.
> self addMMEFrom: 923@449 to: 785@479.
> self addMMEFrom: 785@479 to: 689@503.
> self addMMEFrom: 689@503 to: 651@512.
> self addMMEFrom: 651@512 to: 650@512.
> self addMMEFrom: 650@512 to: 672@508.
> self addMMEFrom: 672@508 to: 773@492.
> self addMMEFrom: 773@492 to: 916@486.
> self addMMEFrom: 916@486 to: 1066@494.
> self addMMEFrom: 1066@494 to: 1175@508.
> self addMMEFrom: 1175@508 to: 1229@514.
> self addMMEFrom: 1229@514 to: 1232@514.
> self addMMEFrom: 1232@514 to: 1142@492.
> self addMMEFrom: 1142@492 to: 986@483.
> self addMMEFrom: 986@483 to: 810@498.
> self addMMEFrom: 810@498 to: 678@519.
> self addMMEFrom: 678@519 to: 637@523.
> self addMMEFrom: 637@523 to: 606@502.
> self addMMEFrom: 606@502 to: 659@442.
> self addMMEFrom: 659@442 to: 769@365.
> self addMMEFrom: 769@365 to: 911@316.
> self addMMEFrom: 911@316 to: 1052@318.
> self addMMEFrom: 1052@318 to: 1129@360.
> self addMMEFrom: 1129@360 to: 1153@403.
> self addMMEFrom: 1153@403 to: 1127@443.
> self addMMEFrom: 1127@443 to: 1015@491.
> self addMMEFrom: 1015@491 to: 850@536.
> self addMMEFrom: 850@536 to: 697@571.
> self addMMEFrom: 697@571 to: 642@578.
> self addMMEFrom: 642@578 to: 571@545.
> self addMMEFrom: 571@545 to: 604@485.
> self addMMEFrom: 604@485 to: 701@419.
> self addMMEFrom: 701@419 to: 843@383.
> self addMMEFrom: 843@383 to: 919@383.
> self addMMEFrom: 919@383 to: 1095@425.
> self addMMEFrom: 1095@425 to: 1126@443.
> self addMMEFrom: 1126@443 to: 1102@449.
> self addMMEFrom: 1102@449 to: 984@468.
> self addMMEFrom: 984@468 to: 829@509.
> self addMMEFrom: 829@509 to: 703@547.
> self addMMEFrom: 703@547 to: 637@555.
> self addMMEFrom: 637@555 to: 633@531.
> self addMMEFrom: 633@531 to: 694@468.
> self addMMEFrom: 694@468 to: 809@407.
> self addMMEFrom: 809@407 to: 946@380.
> self addMMEFrom: 946@380 to: 1011@378.
> self addMMEFrom: 1011@378 to: 1119@393.
> self addMMEFrom: 1119@393 to: 1110@393.
> self addMMEFrom: 1110@393 to: 1010@388.
> self addMMEFrom: 1010@388 to: 859@402.
> self addMMEFrom: 859@402 to: 727@433.
> self addMMEFrom: 727@433 to: 665@454.
> self addMMEFrom: 665@454 to: 663@461.
> self addMMEFrom: 663@461 to: 683@469.
> self addMMEFrom: 683@469 to: 837@492.
> self addMMEFrom: 837@492 to: 989@495.
> self addMMEFrom: 989@495 to: 1103@476.
> self addMMEFrom: 1103@476 to: 1153@433.
> self addMMEFrom: 1153@433 to: 1163@404.
> self addMMEFrom: 1163@404 to: 1147@307.
> self addMMEFrom: 1147@307 to: 1086@294.
> self addMMEFrom: 1086@294 to: 995@324.
> self addMMEFrom: 995@324 to: 935@357.
> self addMMEFrom: 935@357 to: 922@366.
> self addMMEFrom: 922@366 to: 925@370.
> self addMMEFrom: 925@370 to: 941@379.
> self addMMEFrom: 941@379 to: 974@389.
> self addMMEFrom: 974@389 to: 1010@399.
> self addMMEFrom: 1010@399 to: 1036@408.
> self addMMEFrom: 1036@408 to: 1052@414.
> self addMMEFrom: 1052@414 to: 1056@416.
> self addMMEFrom: 1056@416 to: 1061@418.
> self addMMEFrom: 1061@418 to: 1068@419.
> self addMMEFrom: 1068@419 to: 1078@418.
> self addMMEFrom: 1078@418 to: 1086@414.
> self addMMEFrom: 1086@414 to: 1089@411.
> self addMMEFrom: 1089@411 to: 1095@404.
> self addMMEFrom: 1095@404 to: 1097@404.
> self addMMEFrom: 1097@404 to: 1099@406.
> self addMMEFrom: 1099@406 to: 1100@407.
> self addMMEFrom: 1100@407 to: 1101@408.
> self addMMEFrom: 1101@408 to: 1101@409.
> self addMMEFrom: 1101@409 to: 1101@410.
> self addMMEFrom: 1101@410 to: 1102@411.
> self addMMEFrom: 1102@411 to: 1104@412.
> self addMMEFrom: 1104@412 to: 1106@411.
> self addMMEFrom: 1106@411 to: 1110@409.
> self addMMEFrom: 1110@409 to: 1112@408.
> self addMMEFrom: 1112@408 to: 1114@407.
> self addMMEFrom: 1114@407 to: 1115@408.
> self addMMEFrom: 1115@408 to: 1115@408.
> self addMMEFrom: 1115@408 to: 1115@407.
> MouseButtonEvent new.
> MouseButtonEvent new.
> self addMMEFrom: 1131@401 to: 1129@403.
> self addMMEFrom: 1129@403 to: 1121@408.
> self addMMEFrom: 1121@408 to: 1106@416.
> self addMMEFrom: 1106@416 to: 1084@426.
> self addMMEFrom: 1084@426 to: 1051@443.
> self addMMEFrom: 1051@443 to: 1019@470.
> self addMMEFrom: 1019@470 to: 995@504.
> self addMMEFrom: 995@504 to: 981@546.
> self addMMEFrom: 981@546 to: 980@592.
> self addMMEFrom: 980@592 to: 990@634.
> self addMMEFrom: 990@634 to: 1012@665.
> self addMMEFrom: 1012@665 to: 1043@680.
> self addMMEFrom: 1043@680 to: 1076@677.
> self addMMEFrom: 1076@677 to: 1132@658.
> self addMMEFrom: 1132@658 to: 1189@626.
> self addMMEFrom: 1189@626 to: 1205@606.
> self addMMEFrom: 1205@606 to: 1222@543.
> self addMMEFrom: 1222@543 to: 1219@504.
> self addMMEFrom: 1219@504 to: 1207@464.
> self addMMEFrom: 1207@464 to: 1190@425.
> self addMMEFrom: 1190@425 to: 1180@409.
> self addMMEFrom: 1180@409 to: 1140@387.
> self addMMEFrom: 1140@387 to: 1092@397.
> self addMMEFrom: 1092@397 to: 1044@424.
> self addMMEFrom: 1044@424 to: 1004@464.
> self addMMEFrom: 1004@464 to: 977@513.
> self addMMEFrom: 977@513 to: 965@565.
> self addMMEFrom: 965@565 to: 965@614.
> self addMMEFrom: 965@614 to: 977@656.
> self addMMEFrom: 977@656 to: 1001@689.
> self addMMEFrom: 1001@689 to: 1035@709.
> self addMMEFrom: 1035@709 to: 1067@714.
> self addMMEFrom: 1067@714 to: 1094@710.
> self addMMEFrom: 1094@710 to: 1219@673.
> self addMMEFrom: 1219@673 to: 1254@635.
> self addMMEFrom: 1254@635 to: 1269@594.
> self addMMEFrom: 1269@594 to: 1277@552.
> self addMMEFrom: 1277@552 to: 1277@530.
> self addMMEFrom: 1277@530 to: 1251@459.
> self addMMEFrom: 1251@459 to: 1215@418.
> self addMMEFrom: 1215@418 to: 1180@389.
> self addMMEFrom: 1180@389 to: 1143@377.
> self addMMEFrom: 1143@377 to: 1092@379.
> self addMMEFrom: 1092@379 to: 1041@397.
> self addMMEFrom: 1041@397 to: 1019@410.
> self addMMEFrom: 1019@410 to: 972@460.
> self addMMEFrom: 972@460 to: 955@499.
> self addMMEFrom: 955@499 to: 951@541.
> self addMMEFrom: 951@541 to: 954@580.
> self addMMEFrom: 954@580 to: 960@597.
> self addMMEFrom: 960@597 to: 991@639.
> self addMMEFrom: 991@639 to: 1027@657.
> self addMMEFrom: 1027@657 to: 1066@666.
> self addMMEFrom: 1066@666 to: 1122@665.
> self addMMEFrom: 1122@665 to: 1199@651.
> self addMMEFrom: 1199@651 to: 1245@625.
> self addMMEFrom: 1245@625 to: 1270@596.
> self addMMEFrom: 1270@596 to: 1284@565.
> self addMMEFrom: 1284@565 to: 1287@528.
> self addMMEFrom: 1287@528 to: 1275@486.
> self addMMEFrom: 1275@486 to: 1242@445.
> self addMMEFrom: 1242@445 to: 1204@412.
> self addMMEFrom: 1204@412 to: 1171@390.
> self addMMEFrom: 1171@390 to: 1126@383.
> self addMMEFrom: 1126@383 to: 1083@394.
> self addMMEFrom: 1083@394 to: 1040@420.
> self addMMEFrom: 1040@420 to: 1025@438.
> self addMMEFrom: 1025@438 to: 996@506.
> self addMMEFrom: 996@506 to: 992@555.
> self addMMEFrom: 992@555 to: 999@596.
> self addMMEFrom: 999@596 to: 1015@629.
> self addMMEFrom: 1015@629 to: 1027@641.
> self addMMEFrom: 1027@641 to: 1068@658.
> self addMMEFrom: 1068@658 to: 1115@655.
> self addMMEFrom: 1115@655 to: 1184@640.
> self addMMEFrom: 1184@640 to: 1234@616.
> self addMMEFrom: 1234@616 to: 1266@589.
> self addMMEFrom: 1266@589 to: 1290@555.
> self addMMEFrom: 1290@555 to: 1301@518.
> self addMMEFrom: 1301@518 to: 1296@474.
> self addMMEFrom: 1296@474 to: 1267@430.
> self addMMEFrom: 1267@430 to: 1223@392.
> self addMMEFrom: 1223@392 to: 1187@370.
> self addMMEFrom: 1187@370 to: 1172@366.
> self addMMEFrom: 1172@366 to: 1115@375.
> self addMMEFrom: 1115@375 to: 1076@397.
> self addMMEFrom: 1076@397 to: 1046@429.
> self addMMEFrom: 1046@429 to: 1027@468.
> self addMMEFrom: 1027@468 to: 1022@489.
> self addMMEFrom: 1022@489 to: 1023@545.
> self addMMEFrom: 1023@545 to: 1033@567.
> self addMMEFrom: 1033@567 to: 1061@590.
> self addMMEFrom: 1061@590 to: 1104@603.
> self addMMEFrom: 1104@603 to: 1165@605.
> self addMMEFrom: 1165@605 to: 1220@593.
> self addMMEFrom: 1220@593 to: 1258@571.
> self addMMEFrom: 1258@571 to: 1284@543.
> self addMMEFrom: 1284@543 to: 1298@509.
> self addMMEFrom: 1298@509 to: 1299@466.
> self addMMEFrom: 1299@466 to: 1276@414.
> self addMMEFrom: 1276@414 to: 1255@390.
> self addMMEFrom: 1255@390 to: 1189@340.
> self addMMEFrom: 1189@340 to: 1148@334.
> self addMMEFrom: 1148@334 to: 1094@346.
> self addMMEFrom: 1094@346 to: 1051@373.
> self addMMEFrom: 1051@373 to: 1021@412.
> self addMMEFrom: 1021@412 to: 1006@457.
> self addMMEFrom: 1006@457 to: 1002@506.
> self addMMEFrom: 1002@506 to: 1006@557.
> self addMMEFrom: 1006@557 to: 1012@581.
> self addMMEFrom: 1012@581 to: 1041@637.
> self addMMEFrom: 1041@637 to: 1070@657.
> self addMMEFrom: 1070@657 to: 1127@660.
> self addMMEFrom: 1127@660 to: 1209@644.
> self addMMEFrom: 1209@644 to: 1234@630.
> self addMMEFrom: 1234@630 to: 1284@569.
> self addMMEFrom: 1284@569 to: 1302@521.
> self addMMEFrom: 1302@521 to: 1304@466.
> self addMMEFrom: 1304@466 to: 1286@410.
> self addMMEFrom: 1286@410 to: 1247@369.
> self addMMEFrom: 1247@369 to: 1208@347.
> self addMMEFrom: 1208@347 to: 1196@342.
> self addMMEFrom: 1196@342 to: 1170@346.
> self addMMEFrom: 1170@346 to: 1151@356.
> self addMMEFrom: 1151@356 to: 1137@363.
> self addMMEFrom: 1137@363 to: 1133@366.
> self addMMEFrom: 1133@366 to: 1133@366.
> self addMMEFrom: 1133@366 to: 1135@372.
> self addMMEFrom: 1135@372 to: 1133@381.
> self addMMEFrom: 1133@381 to: 1128@393.
> self addMMEFrom: 1128@393 to: 1126@399.
> self addMMEFrom: 1126@399 to: 1125@401.
> self addMMEFrom: 1125@401 to: 1125@401.
> self addMMEFrom: 1125@401 to: 1125@400.
> self addMMEFrom: 1125@400 to: 1124@401.
> self addMMEFrom: 1124@401 to: 1124@403.
> self addMMEFrom: 1124@403 to: 1124@404.
> self addMMEFrom: 1124@404 to: 1124@405.
> self addMMEFrom: 1124@405 to: 1124@404.
> MouseButtonEvent new.
> MouseButtonEvent new.
> '
>
> These are autogenerated contents I want to export as a test case. The
> strange thing is that, if I manually create the testMethod using the system
> browser, and paste the content in it; it works fine.
>
> Kind Regards,
>
> Bart
>
> 2009/12/21 Eliot Miranda <eliot.miranda(a)gmail.com>
>
> Hi Bart,
>>
>> I still want to take a look at this specific case because the compiler
>> should produce a proper error message, not an internal error. So could you
>> please package it up as a reproducible case, or email me the full string
>> that fails?
>>
>> TIA
>>
>>
>> 2009/12/20 Bart Gauquie <bart.gauquie(a)gmail.com>
>>
>>> Dear all,
>>>
>>> I'm developing code which generates a method content, compiles it and
>>> adds it to an existing class.
>>> I compile the message using #compile: message:
>>> for instance:
>>>
>>> MorphicReplayDemoTest compile: '
>>> testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 651@559 to: 643@579.
>>> '.
>>>
>>> This works fine. However if the contents of the method is too long; for
>>> instance:
>>> if the self addMMEFrom: 1054@512 to: 1037@504. is repeated around 250
>>> times; I get following error (see stack below)
>>>
>>> The strange thing is that if I manually add that method using the editor
>>> and paste it, it works just fine. I even tested up to 5000 lines of code;
>>> its slow, but its working.
>>>
>>> Any ideas how to solve this?
>>>
>>> Thanks,
>>>
>>> Bart
>>>
>>> I'm using Pharo 1.0 rc update: 10502; using Ubuntu 9.10, using vm
>>> pharo-vm-0.15.2f-linux.
>>>
>>> THERE_BE_DRAGONS_HERE
>>> MessageNotUnderstood: receiver of "<" is nil
>>> 20 December 2009 8:17:14 pm
>>>
>>> VM: unix - i686 - linux-gnu - Pharo0.1 of 16 May 2008 [latest update:
>>> #10074]
>>> Image: PharoCore1.0rc1 [Latest update: #10502]
>>>
>>> SecurityManager state:
>>> Restricted: false
>>> FileAccess: true
>>> SocketAccess: true
>>> Working Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground
>>> Image
>>> Trusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground
>>> Image/secure
>>> Untrusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0
>>> Playground Image/My Squeak
>>>
>>> UndefinedObject(Object)>>doesNotUnderstand: #<
>>> Receiver: nil
>>> Arguments and temporary variables:
>>> aMessage: < 0
>>> exception: MessageNotUnderstood: receiver of "<" is nil
>>> resumeValue: nil
>>> Receiver's instance variables:
>>> nil
>>>
>>> EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
>>> Receiver: {an EncoderForV3PlusClosures}
>>> Arguments and temporary variables:
>>> literalIndex: nil
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> scopeTable: a Dictionary('false'->{false} 'nil'->{nil}
>>> 'recording'->{recording}...etc...
>>> nTemps: 0
>>> supered: false
>>> requestor: nil
>>> class: MorphicReplayDemoTest
>>> selector: #testMethod
>>> literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979.
>>> 482. ...etc...
>>> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//}
>>> #<->{<} #...etc...
>>> litIndSet: a
>>> Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
>>> litSet: a LiteralDictionary(size 402)
>>> sourceRanges: a Dictionary(size 853)
>>> globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to:
>>> 5778). ...etc...
>>> addedSelectorAndMethodClassLiterals: false
>>> stream: {an EncoderForV3PlusClosures}
>>> position: 0
>>> rootNode: testMethod
>>> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMMEF...etc...
>>> blockExtentsToLocals: nil
>>>
>>>
>>> EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
>>> Receiver: {an EncoderForV3PlusClosures}
>>> Arguments and temporary variables:
>>> genSelector: #genPushLiteral:
>>> args: #(nil)
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> scopeTable: a Dictionary('false'->{false} 'nil'->{nil}
>>> 'recording'->{recording}...etc...
>>> nTemps: 0
>>> supered: false
>>> requestor: nil
>>> class: MorphicReplayDemoTest
>>> selector: #testMethod
>>> literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979.
>>> 482. ...etc...
>>> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//}
>>> #<->{<} #...etc...
>>> litIndSet: a
>>> Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
>>> litSet: a LiteralDictionary(size 402)
>>> sourceRanges: a Dictionary(size 853)
>>> globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to:
>>> 5778). ...etc...
>>> addedSelectorAndMethodClassLiterals: false
>>> stream: {an EncoderForV3PlusClosures}
>>> position: 0
>>> rootNode: testMethod
>>> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMMEF...etc...
>>> blockExtentsToLocals: nil
>>>
>>> EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
>>> Receiver: {an EncoderForV3PlusClosures}
>>> Arguments and temporary variables:
>>> literalIndex: nil
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> scopeTable: a Dictionary('false'->{false} 'nil'->{nil}
>>> 'recording'->{recording}...etc...
>>> nTemps: 0
>>> supered: false
>>> requestor: nil
>>> class: MorphicReplayDemoTest
>>> selector: #testMethod
>>> literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979.
>>> 482. ...etc...
>>> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//}
>>> #<->{<} #...etc...
>>> litIndSet: a
>>> Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
>>> litSet: a LiteralDictionary(size 402)
>>> sourceRanges: a Dictionary(size 853)
>>> globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to:
>>> 5778). ...etc...
>>> addedSelectorAndMethodClassLiterals: false
>>> stream: {an EncoderForV3PlusClosures}
>>> position: 0
>>> rootNode: testMethod
>>> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMMEF...etc...
>>> blockExtentsToLocals: nil
>>>
>>> LiteralNode>>sizeCodeForValue:
>>> Receiver: {397}
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> key: 397
>>> code: -3
>>> index: nil
>>>
>>> [] in MessageNode>>sizeCodeForValue:
>>> Receiver: {1092 @ 397}
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {1092}
>>> selector: {@}
>>> precedence: 2
>>> special: 0
>>> arguments: #({397})
>>> sizes: #(nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> Array(SequenceableCollection)>>collect:
>>> Receiver: #({397})
>>> Arguments and temporary variables:
>>> aBlock: [closure] in MessageNode>>sizeCodeForValue:
>>> newCollection: #(nil)
>>> index: 1
>>> indexLimiT: 1
>>> Receiver's instance variables:
>>> #({397})
>>>
>>> MessageNode>>sizeCodeForValue:
>>> Receiver: {1092 @ 397}
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {1092}
>>> selector: {@}
>>> precedence: 2
>>> special: 0
>>> arguments: #({397})
>>> sizes: #(nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> [] in MessageNode>>sizeCodeForValue:
>>> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {self}
>>> selector: {addMMEFrom:to:}
>>> precedence: 3
>>> special: 0
>>> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
>>> sizes: #(nil nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> OrderedCollection>>collect:
>>> Receiver: an OrderedCollection({1140 @ 387} {1092 @ 397})
>>> Arguments and temporary variables:
>>> aBlock: [closure] in MessageNode>>sizeCodeForValue:
>>> newCollection: an OrderedCollection(7)
>>> index: 4
>>> Receiver's instance variables:
>>> array: an Array(nil nil {1140 @ 387} {1092 @ 397} nil nil nil nil nil
>>> nil)
>>> firstIndex: 3
>>> lastIndex: 4
>>>
>>> MessageNode>>sizeCodeForValue:
>>> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {self}
>>> selector: {addMMEFrom:to:}
>>> precedence: 3
>>> special: 0
>>> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
>>> sizes: #(nil nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> MessageNode(ParseNode)>>sizeCodeForEffect:
>>> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {self}
>>> selector: {addMMEFrom:to:}
>>> precedence: 3
>>> special: 0
>>> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
>>> sizes: #(nil nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> MessageNode>>sizeCodeForEffect:
>>> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {self}
>>> selector: {addMMEFrom:to:}
>>> precedence: 3
>>> special: 0
>>> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
>>> sizes: #(nil nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> BlockNode>>sizeCodeExceptLast:
>>> Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMMEFrom: 1037 @ 504 to: 979 @ 482.
>>> ...etc...
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> codeSize: 2564
>>> i: 169
>>> statement: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
>>> iLimiT: 287
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> arguments: #()
>>> statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @
>>> 504} {...etc...
>>> returns: true
>>> nArgsNode: nil
>>> size: nil
>>> remoteCopyNode: nil
>>> temporaries: an OrderedCollection()
>>> optimized: false
>>> actualScopeIfOptimized: nil
>>> blockExtent: (0 to: 2)
>>> remoteTempNode: nil
>>> copiedValues: nil
>>> closureCreationNode: nil
>>> startOfLastStatement: 11519
>>>
>>> BlockNode>>sizeCodeForEvaluatedValue:
>>> Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMMEFrom: 1037 @ 504 to: 979 @ 482.
>>> ...etc...
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> arguments: #()
>>> statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @
>>> 504} {...etc...
>>> returns: true
>>> nArgsNode: nil
>>> size: nil
>>> remoteCopyNode: nil
>>> temporaries: an OrderedCollection()
>>> optimized: false
>>> actualScopeIfOptimized: nil
>>> blockExtent: (0 to: 2)
>>> remoteTempNode: nil
>>> copiedValues: nil
>>> closureCreationNode: nil
>>> startOfLastStatement: 11519
>>>
>>> BytecodeAgnosticMethodNode>>generate:
>>> Receiver: testMethod
>>> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMMEFrom: 1037 @ 504 to: 9...etc...
>>> Arguments and temporary variables:
>>> trailer: #(0 0 0 0)
>>> primErrNode: nil
>>> blkSize: nil
>>> nLits: nil
>>> literals: nil
>>> stack: nil
>>> method: nil
>>> locals: nil
>>> lit: nil
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> selectorOrFalse: #testMethod
>>> precedence: 1
>>> arguments: #()
>>> block: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMMEFrom: 1037 @ 5...etc...
>>> primitive: 0
>>> encoder: {an EncoderForV3PlusClosures}
>>> temporaries: #()
>>> properties: an AdditionalMethodState
>>> sourceText: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFr...etc...
>>> locationCounter: 3
>>> localsPool: an IdentitySet()
>>>
>>> CompiledMethodWithNode class>>generateMethodFromNode:trailer:
>>> Receiver: CompiledMethodWithNode
>>> Arguments and temporary variables:
>>> aMethodNode: testMethod
>>> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addM...etc...
>>> bytes: #(0 0 0 0)
>>> Receiver's instance variables:
>>> superclass: Object
>>> methodDict: a MethodDictionary(#method->a CompiledMethod(650:
>>> CompiledMethodWit...etc...
>>> format: 134
>>> instanceVariables: #('node' 'method')
>>> organization: ('accessing' method node selector)
>>> ('private' method: node:)
>>>
>>> subclasses: nil
>>> name: #CompiledMethodWithNode
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'Compiler-Support'
>>> traitComposition: nil
>>> localSelectors: nil
>>>
>>> MorphicReplayDemoTest
>>> class(Behavior)>>compile:classified:notifying:trailer:ifFail:
>>> Receiver: MorphicReplayDemoTest
>>> Arguments and temporary variables:
>>> code: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> category: #'as yet unclassified'
>>> requestor: nil
>>> bytes: #(0 0 0 0)
>>> failBlock: [closure] in MorphicReplayDemoTest
>>> class(ClassDescription)>>compile:...etc...
>>> methodNode: testMethod
>>> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
>>> self addMM...etc...
>>> Receiver's instance variables:
>>> superclass: AbstractReplayTestCase
>>> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
>>> MorphicRepla...etc...
>>> format: 134
>>> instanceVariables: nil
>>> organization: ('tests' testMethod)
>>>
>>> subclasses: nil
>>> name: #MorphicReplayDemoTest
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'MorphicsRecordNPlay-Model'
>>> traitComposition: nil
>>> localSelectors: nil
>>> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
>>> Set(#testM...etc...
>>>
>>> MorphicReplayDemoTest
>>> class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
>>> Receiver: MorphicReplayDemoTest
>>> Arguments and temporary variables:
>>> text: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> category: #'as yet unclassified'
>>> changeStamp: 'BartGauquie 12/20/2009 20:17'
>>> requestor: nil
>>> logSource: true
>>> methodAndNode: nil
>>> Receiver's instance variables:
>>> superclass: AbstractReplayTestCase
>>> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
>>> MorphicRepla...etc...
>>> format: 134
>>> instanceVariables: nil
>>> organization: ('tests' testMethod)
>>>
>>> subclasses: nil
>>> name: #MorphicReplayDemoTest
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'MorphicsRecordNPlay-Model'
>>> traitComposition: nil
>>> localSelectors: nil
>>> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
>>> Set(#testM...etc...
>>>
>>> MorphicReplayDemoTest
>>> class(ClassDescription)>>compile:classified:withStamp:notifying:
>>> Receiver: MorphicReplayDemoTest
>>> Arguments and temporary variables:
>>> text: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> category: #'as yet unclassified'
>>> changeStamp: 'BartGauquie 12/20/2009 20:17'
>>> requestor: nil
>>> Receiver's instance variables:
>>> superclass: AbstractReplayTestCase
>>> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
>>> MorphicRepla...etc...
>>> format: 134
>>> instanceVariables: nil
>>> organization: ('tests' testMethod)
>>>
>>> subclasses: nil
>>> name: #MorphicReplayDemoTest
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'MorphicsRecordNPlay-Model'
>>> traitComposition: nil
>>> localSelectors: nil
>>> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
>>> Set(#testM...etc...
>>>
>>> MorphicReplayDemoTest
>>> class(ClassDescription)>>compile:classified:notifying:
>>> Receiver: MorphicReplayDemoTest
>>> Arguments and temporary variables:
>>> text: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> category: #'as yet unclassified'
>>> requestor: nil
>>> stamp: 'BartGauquie 12/20/2009 20:17'
>>> Receiver's instance variables:
>>> superclass: AbstractReplayTestCase
>>> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
>>> MorphicRepla...etc...
>>> format: 134
>>> instanceVariables: nil
>>> organization: ('tests' testMethod)
>>>
>>> subclasses: nil
>>> name: #MorphicReplayDemoTest
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'MorphicsRecordNPlay-Model'
>>> traitComposition: nil
>>> localSelectors: nil
>>> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
>>> Set(#testM...etc...
>>>
>>> MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
>>> Receiver: MorphicReplayDemoTest
>>> Arguments and temporary variables:
>>> code: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> requestor: nil
>>> Receiver's instance variables:
>>> superclass: AbstractReplayTestCase
>>> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
>>> MorphicRepla...etc...
>>> format: 134
>>> instanceVariables: nil
>>> organization: ('tests' testMethod)
>>>
>>> subclasses: nil
>>> name: #MorphicReplayDemoTest
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'MorphicsRecordNPlay-Model'
>>> traitComposition: nil
>>> localSelectors: nil
>>> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
>>> Set(#testM...etc...
>>>
>>> MorphicReplayDemoTest class(Behavior)>>compile:
>>> Receiver: MorphicReplayDemoTest
>>> Arguments and temporary variables:
>>> code: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> Receiver's instance variables:
>>> superclass: AbstractReplayTestCase
>>> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
>>> MorphicRepla...etc...
>>> format: 134
>>> instanceVariables: nil
>>> organization: ('tests' testMethod)
>>>
>>> subclasses: nil
>>> name: #MorphicReplayDemoTest
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'MorphicsRecordNPlay-Model'
>>> traitComposition: nil
>>> localSelectors: nil
>>> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
>>> Set(#testM...etc...
>>>
>>> ByteString>>DoIt
>>> Receiver: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 1037@504 to: 979@48...etc...
>>> Arguments and temporary variables:
>>>
>>> Receiver's instance variables:
>>> 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 1037@504 to: 979@48...etc...
>>>
>>> Compiler>>evaluate:in:to:notifying:ifFail:logged:
>>> Receiver: a Compiler
>>> Arguments and temporary variables:
>>> textOrStream: a ReadWriteStream 'MorphicReplayDemoTest
>>> compile: self.'
>>> aContext: nil
>>> receiver: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom...etc...
>>> aRequestor: a TextMorphEditor
>>> failBlock: [closure] in [] in
>>> TextMorphEditor(ParagraphEditor)>>evaluateSelecti...etc...
>>> logFlag: true
>>> methodNode: DoIt
>>> ^ MorphicReplayDemoTest compile: self
>>> method: a CompiledMethod(2378: ByteString>>DoIt)
>>> value: nil
>>> toLog: nil
>>> itsSelection: nil
>>> itsSelectionString: nil
>>> Receiver's instance variables:
>>> sourceStream: a ReadWriteStream 'MorphicReplayDemoTest
>>> compile: self.'
>>> requestor: a TextMorphEditor
>>> class: ByteString
>>> category: nil
>>> context: nil
>>> parser: a Parser
>>>
>>> [] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> rcvr: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> ctxt: nil
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> BlockClosure>>on:do:
>>> Receiver: [closure] in
>>> TextMorphEditor(ParagraphEditor)>>evaluateSelection
>>> Arguments and temporary variables:
>>> exception: OutOfScopeNotification
>>> handlerAction: [closure] in
>>> TextMorphEditor(ParagraphEditor)>>evaluateSelection...etc...
>>> handlerActive: true
>>> Receiver's instance variables:
>>> outerContext: TextMorphEditor(ParagraphEditor)>>evaluateSelection
>>> startpc: 116
>>> numArgs: 0
>>>
>>> TextMorphEditor(ParagraphEditor)>>evaluateSelection
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> result: nil
>>> rcvr: 'testMethod
>>> self addMMEFrom: 1054@512 to: 1037@504.
>>> self addMMEFrom: 10...etc...
>>> ctxt: nil
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> TextMorphEditor(ParagraphEditor)>>doIt
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>>
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> [] in TextMorphEditor(ParagraphEditor)>>doIt:
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>>
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> aBlock: [closure] in TextMorphEditor(ParagraphEditor)>>doIt:
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> TextMorphEditor(ParagraphEditor)>>doIt:
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> characterStream: a WriteStream ''
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> keyEvent: [keystroke '<Cmd-d>']
>>> typeAheadStream: a WriteStream ''
>>> honorCommandKeys: true
>>> keyValue: 100
>>> keyChar: $d
>>> char: $d
>>> action: #doIt:
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> TextMorphEditor>>dispatchOnKeyEvent:with:
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> keyEvent: [keystroke '<Cmd-d>']
>>> typeAheadStream: a WriteStream ''
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> TextMorphEditor(ParagraphEditor)>>keystroke:
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> keyEvent: [keystroke '<Cmd-d>']
>>> typeAhead: a WriteStream ''
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> TextMorphEditor>>keystroke:
>>> Receiver: a TextMorphEditor
>>> Arguments and temporary variables:
>>> keyEvent: [keystroke '<Cmd-d>']
>>> Receiver's instance variables:
>>> model: a NewInspector
>>> paragraph: a MultiNewParagraph
>>> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
>>> 103@32
>>> ...etc...
>>> stopBlock: a CharacterBlock with index 1 and character $M and rectangle
>>> 0@0 cor...etc...
>>> beginTypeInBlock: nil
>>> emphasisHere: an Array(a TextFontChange font: 2)
>>> initialText: a Text for 'MorphicReplayDemoTest
>>> compile: self
>>> '
>>> selectionShowing: false
>>> otherInterval: (38 to: 38)
>>> lastParentLocation: nil
>>> morph: a TextMorphForEditView(3730)
>>> oldInterval: nil
>>> pivotBlock: nil
>>>
>>> [] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
>>> Receiver: a TextMorphForEditView(3730)
>>> Arguments and temporary variables:
>>> evt: [keystroke '<Cmd-d>']
>>> Receiver's instance variables:
>>> bounds: 0@0 corner: 358@34
>>> owner: a TransformMorph(942)
>>> submorphs: #()
>>> fullBounds: 0@0 corner: 358@34
>>> color: Color black
>>> extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
>>> borderWidth: 0
>>> borderColor: Color black
>>> textStyle: a TextStyle Bitmap DejaVu Sans 9
>>> text: a Text for 'MorphicReplayDemoTest
>>> compile: self.'
>>> wrapFlag: true
>>> paragraph: a MultiNewParagraph
>>> editor: a TextMorphEditor
>>> container: nil
>>> predecessor: nil
>>> successor: nil
>>> backgroundColor: nil
>>> margins: nil
>>> editHistory: a TextMorphCommandHistory
>>> editView: a PluggableTextMorphPlus(2866)
>>> acceptOnCR: false
>>>
>>> TextMorphForEditView(TextMorph)>>handleInteraction:
>>> Receiver: a TextMorphForEditView(3730)
>>> Arguments and temporary variables:
>>> interactionBlock: [closure] in [] in
>>> TextMorphForEditView(TextMorph)>>keyStroke...etc...
>>> oldEditor: a TextMorphEditor
>>> oldParagraph: a MultiNewParagraph
>>> oldText: a Text for 'MorphicReplayDemoTest
>>> compile: self.'
>>> Receiver's instance variables:
>>> bounds: 0@0 corner: 358@34
>>> owner: a TransformMorph(942)
>>> submorphs: #()
>>> fullBounds: 0@0 corner: 358@34
>>> color: Color black
>>> extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
>>> borderWidth: 0
>>> borderColor: Color black
>>> textStyle: a TextStyle Bitmap DejaVu Sans 9
>>> text: a Text for 'MorphicReplayDemoTest
>>> compile: self.'
>>> wrapFlag: true
>>> paragraph: a MultiNewParagraph
>>> editor: a TextMorphEditor
>>> container: nil
>>> predecessor: nil
>>> successor: nil
>>> backgroundColor: nil
>>> margins: nil
>>> editHistory: a TextMorphCommandHistory
>>> editView: a PluggableTextMorphPlus(2866)
>>> acceptOnCR: false
>>>
>>> TextMorphForEditView>>handleInteraction:
>>> Receiver: a TextMorphForEditView(3730)
>>> Arguments and temporary variables:
>>> interActionBlock: [closure] in [] in
>>> TextMorphForEditView(TextMorph)>>keyStroke...etc...
>>> Receiver's instance variables:
>>> bounds: 0@0 corner: 358@34
>>> owner: a TransformMorph(942)
>>> submorphs: #()
>>> fullBounds: 0@0 corner: 358@34
>>> color: Color black
>>> extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
>>> borderWidth: 0
>>> borderColor: Color black
>>> textStyle: a TextStyle Bitmap DejaVu Sans 9
>>> text: a Text for 'MorphicReplayDemoTest
>>> compile: self.'
>>> wrapFlag: true
>>> paragraph: a MultiNewParagraph
>>> editor: a TextMorphEditor
>>> container: nil
>>> predecessor: nil
>>> successor: nil
>>> backgroundColor: nil
>>> margins: nil
>>> editHistory: a TextMorphCommandHistory
>>> editView: a PluggableTextMorphPlus(2866)
>>> acceptOnCR: false
>>>
>>>
>>> --- The full stack ---
>>> UndefinedObject(Object)>>doesNotUnderstand: #<
>>> EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
>>>
>>> EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
>>> EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
>>> LiteralNode>>sizeCodeForValue:
>>> [] in MessageNode>>sizeCodeForValue:
>>> Array(SequenceableCollection)>>collect:
>>> MessageNode>>sizeCodeForValue:
>>> [] in MessageNode>>sizeCodeForValue:
>>> OrderedCollection>>collect:
>>> MessageNode>>sizeCodeForValue:
>>> MessageNode(ParseNode)>>sizeCodeForEffect:
>>> MessageNode>>sizeCodeForEffect:
>>> BlockNode>>sizeCodeExceptLast:
>>> BlockNode>>sizeCodeForEvaluatedValue:
>>> BytecodeAgnosticMethodNode>>generate:
>>> CompiledMethodWithNode class>>generateMethodFromNode:trailer:
>>> MorphicReplayDemoTest
>>> class(Behavior)>>compile:classified:notifying:trailer:ifFail:
>>> MorphicReplayDemoTest
>>> class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
>>> MorphicReplayDemoTest
>>> class(ClassDescription)>>compile:classified:withStamp:notifying:
>>> MorphicReplayDemoTest
>>> class(ClassDescription)>>compile:classified:notifying:
>>> MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
>>> MorphicReplayDemoTest class(Behavior)>>compile:
>>> ByteString>>DoIt
>>> Compiler>>evaluate:in:to:notifying:ifFail:logged:
>>> [] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
>>> BlockClosure>>on:do:
>>> TextMorphEditor(ParagraphEditor)>>evaluateSelection
>>> TextMorphEditor(ParagraphEditor)>>doIt
>>> [] in TextMorphEditor(ParagraphEditor)>>doIt:
>>> TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
>>> TextMorphEditor(ParagraphEditor)>>doIt:
>>> TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
>>> TextMorphEditor>>dispatchOnKeyEvent:with:
>>> TextMorphEditor(ParagraphEditor)>>keystroke:
>>> TextMorphEditor>>keystroke:
>>> [] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
>>> TextMorphForEditView(TextMorph)>>handleInteraction:
>>> TextMorphForEditView>>handleInteraction:
>>> - - - - - - - - - - - - - - -
>>> - - - - - - - - - - - - - - - - - -
>>> [] in TextMorphForEditView(TextMorph)>>keyStroke:
>>> ECToolSet class>>codeCompletionAround:textMorph:keyStroke:
>>> DEVToolSet class>>codeCompletionAround:textMorph:keyStroke:
>>> ToolSet class>>codeCompletionAround:textMorph:keyStroke:
>>> TextMorphForEditView(TextMorph)>>keyStroke:
>>> TextMorphForEditView>>keyStroke:
>>> TextMorphForEditView(TextMorph)>>handleKeystroke:
>>> KeyboardEvent>>sentTo:
>>> TextMorphForEditView(Morph)>>handleEvent:
>>> TextMorphForEditView(Morph)>>handleFocusEvent:
>>> [] in HandMorph>>sendFocusEvent:to:clear:
>>> [] in PasteUpMorph>>becomeActiveDuring:
>>> BlockClosure>>on:do:
>>> PasteUpMorph>>becomeActiveDuring:
>>> HandMorph>>sendFocusEvent:to:clear:
>>> HandMorph>>sendEvent:focus:clear:
>>> HandMorph>>sendKeyboardEvent:
>>> HandMorph>>handleEvent:
>>> HandMorph>>processEvents
>>> [] in WorldState>>doOneCycleNowFor:
>>> Array(SequenceableCollection)>>do:
>>> WorldState>>handsDo:
>>> WorldState>>doOneCycleNowFor:
>>> WorldState>>doOneCycleFor:
>>> PasteUpMorph>>doOneCycle
>>> [] in Project class>>spawnNewProcess
>>> [] in BlockClosure>>newProcess
>>> -----------------------------------------------------------
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project(a)lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
>
> --
> imagination is more important than knowledge - Albert Einstein
> Logic will get you from A to B. Imagination will take you everywhere -
> Albert Einstein
> Learn from yesterday, live for today, hope for tomorrow. The important
> thing is not to stop questioning. - Albert Einstein
> The true sign of intelligence is not knowledge but imagination. - Albert
> Einstein
> Gravitation is not responsible for people falling in love. - Albert
> Einstein
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Dec. 23, 2009
Re: [Pharo-project] Fwd: sort: and sortBlock:
by Stéphane Ducasse
On Dec 23, 2009, at 6:43 PM, Levente Uzonyi wrote:
> On Wed, 23 Dec 2009, Stéphane Ducasse wrote:
>
>>>>
>>>
>>> What bugs me is that #sortBy: does not what it says. I would expect that
>>>
>>> aCollection sortBy: [ :each | each name ]
>>>
>>> does the same as
>>>
>>> aCollection sort: [ :a :b | a name <= b name ]
>>>
>>> if you want that, I can provide a fast implementation of #sortBy:
>>>
>>>
>>> Not all collections are sortable and #sort: is sorting in-place, so it's hardly doable.
>>
>> But it would be nice to have sort: and sortBlock: polymorph.
>> Because right now we cannot have OrderedCollection and Array or SortedCollection interchanged.
>
> SortedCollection should be used as rarely as possible. In the past it was used for sorting which is a misuse of this data structure (I wonder why such data strucure exists at all, it's almost never useful).
Indeed I understand that now. sort is much better bette because it is orthogonal to the datastructure
> If you pick the changes from squeak trunk, Array and OrderedCollection (and SortedCollection) will understand #sort and #sort: and will have the same semantics: sort in place (by a stable sorting algorithm).
Ok I will have a look.
>
>
> Levente
>
>>
>> Stef
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Dec. 23, 2009
Re: [Pharo-project] Fwd: hasEqualElements:
by Eliot Miranda
On Wed, Dec 23, 2009 at 1:08 AM, Nicolas Cellier <
nicolas.cellier.aka.nice(a)gmail.com> wrote:
> 2009/12/23 Stéphane Ducasse <stephane.ducasse(a)inria.fr>:
> >
> >
> >
> > Hi
> >
> > (SortedCollection new addAll: #(9 2 3 ); yourself)
> > hasEqualElements: (OrderedCollection withAll: #(9 2 3)) -> false
> >
> > hasEqualElements: otherCollection
> > "Answer whether the receiver's size is the same as otherCollection's
> > size, and each of the receiver's elements equal the corresponding
> > element of otherCollection.
> > This should probably replace the current definition of #= ."
> >
> > | size |
> > (otherCollection isKindOf: SequenceableCollection) ifFalse: [^ false].
> > (size := self size) = otherCollection size ifFalse: [^ false].
> > 1 to: size do:
> > [:index |
> > (self at: index) = (otherCollection at: index) ifFalse: [^ false]].
> > ^ true
> >
> > For me the name of this method is misleading and I would really like to
> > renaming it
> > hasStructurallyEqualElements: and have new one doing hasEqualElements:
> >
> > What do you think?
> > I would like a beautiful world....
> >
> > Stef (freezing with a flu in my bed.... cool christmax).
> >
> >
>
> Didn't VW had a #isSameSquenceAs:
>
> Nicolas
>
>
<methods>
<class-id>Core.SequenceableCollection</class-id>
<category>comparing</category>
<body package="Collections-Abstract"
selector="isSameSequenceAs:">isSameSequenceAs: otherCollection
"Answer whether the receiver's size is the same as otherCollection's
size, and each
of the receiver's elements equal the corresponding element of
otherCollection."
| size |
(size := self size) = otherCollection size ifFalse: [^false].
1 to: size do: [:index |
(self at: index) = (otherCollection at: index) ifFalse:
[^false]].
^true</body>
</methods>
i.e. trust the caller is providing a sequence and if otherCollection doesn't
implement at: there will be a run-time error, hence any otherCollection
isKindOf: SequenceableCollection is just wasted cycles.
Dec. 23, 2009
Re: [Pharo-project] SUnit forked, gofer it
by Mariano Martinez Peck
Can I add something to my dear santa list ??
Many times, I have tests that freeze the image. And I don't known what test
was the "guilty". I always hack the runCase to show in Transcript the test
selector.
Maybe adding a configurable logging option (enable/disable) may help.
Somehing like this:
runCase
Author
ifUnknownAuthorUse: 'TestRunner'
during: [
[
self log: 'Test to be performed: ', testSelector asSymbol
asSring.
self setUp.
self performTest]
ensure: [
self tearDown.
self cleanUpInstanceVariables ] ]
and then something like:
log: aString
self isLogEnable ifTrue: [Transcript show: aSring].
Or similar...but I like the idea of knowing which test make the image to
freeze.
Cheers,
Mariano
On Wed, Dec 23, 2009 at 5:28 PM, Stéphane Ducasse <stephane.ducasse(a)inria.fr
> wrote:
>
> On Dec 23, 2009, at 5:17 PM, Adrian Kuhn wrote:
>
> > Yanni Chiu <yanni@...> writes:
> >
> >>> Gofer it
> >>> squeaksource: 'akuhn';
> >>> package: 'SUnit';
> >>> package: 'SUnitGUI';
> >>> load
> >>
> >> Is it too late to call it SUnit2, SUnit3, whatever?
> >
> > Too early in my opinion :)
> >
> > I follow the github style of forking, ie "fork early, fork often". The
> name of
> > a fork is qualified by prefixing it with the name of the forker, so my
> fork is
> > qualified "akuhn/SUnit". IMHO it is early enough to think about a new
> name
> > when it is (ever?) merged back into Pharo. Phunit might be nice.
> >
> > @stef that might make a nice feature for new package system: to tell in
> an
> > immediately visible way from which repo a package/class is coming.
>
> The problem is that you can have multiple repos.
> Now RPackage is disconnect orthogonal to MC and repo it is just a couple of
> classes
> to replace packageInfo.
>
> >> What happens is that people start writing test cases assuming the newer
> >> version. Then at some point there's a conflict, and you either have to
> >> re-write your old or your new test cases. Maybe it's okay to be forced
> >> to update your old test cases, but it would be good know which version
> >> of the "SUnit API" is available or required.
> >
> > Good point, I share your concern. Maybe something like
> >
> > self assumeSUnitIsAkuhnFork
> >
> > might help. This will fail with DNU on all version except my fork.
> >
> > --AA
> >
> >
> >
> > _______________________________________________
> > Pharo-project mailing list
> > Pharo-project(a)lists.gforge.inria.fr
> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Dec. 23, 2009
Re: [Pharo-project] Fwd: hasEqualElements:
by Eliot Miranda
On Wed, Dec 23, 2009 at 1:08 AM, Nicolas Cellier <
nicolas.cellier.aka.nice(a)gmail.com> wrote:
> 2009/12/23 Stéphane Ducasse <stephane.ducasse(a)inria.fr>:
> >
> >
> >
> > Hi
> >
> > (SortedCollection new addAll: #(9 2 3 ); yourself)
> > hasEqualElements: (OrderedCollection withAll: #(9 2 3)) -> false
> >
> > hasEqualElements: otherCollection
> > "Answer whether the receiver's size is the same as otherCollection's
> > size, and each of the receiver's elements equal the corresponding
> > element of otherCollection.
> > This should probably replace the current definition of #= ."
> >
> > | size |
> > (otherCollection isKindOf: SequenceableCollection) ifFalse: [^ false].
> > (size := self size) = otherCollection size ifFalse: [^ false].
> > 1 to: size do:
> > [:index |
> > (self at: index) = (otherCollection at: index) ifFalse: [^ false]].
> > ^ true
> >
> > For me the name of this method is misleading and I would really like to
> > renaming it
> > hasStructurallyEqualElements: and have new one doing hasEqualElements:
> >
> > What do you think?
> > I would like a beautiful world....
> >
> > Stef (freezing with a flu in my bed.... cool christmax).
> >
> >
>
> Didn't VW had a #isSameSquenceAs:
>
Yes.
>
> Nicolas
>
> >
> >
> > _______________________________________________
> > Pharo-project mailing list
> > Pharo-project(a)lists.gforge.inria.fr
> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Dec. 23, 2009
Re: [Pharo-project] Fwd: sort: and sortBlock:
by Adrian Kuhn
Levente Uzonyi <leves@...> writes:
> > what is TreeSet?
>
> The common data structure to implement ordered sets. Which one do you use?
>
> IMO ordered sets (where ordering means the same as in OrderedCollection)
> should be implemented with a hashtable of linked elements.
You're right.
I confused ordered and sorted.
--AA
Dec. 23, 2009
[Pharo-project] More from TheTrunk
by Alexandre Bergel
http://code.google.com/p/pharo/issues/detail?id=1663
SLICE-IntervalFix-FromTrunk-Alexandre_Bergel.1 in the InBox
If you fill an issue for the first time, please read "How to report
bugs"
at http://www.pharo-project.org/community/issue-tracking
Pharo core version: 11112
http://bugs.squeak.org/view.php?id=6456
A very simple example to illustrate the bug:
| x |
x := (1.0 timesTwoPower: 53).
(x to: x + 2) size.
x to: x+2 do: [:i | Transcript cr; show: i printString]
Thanks to Nicolas (aka nice)
For IntervalTest:
Before loading the slice:
233 run, 233 passes, 0 expected failures, 0 failures, 0 errors, 0
unexpected passes
After loading the slice:
234 run, 234 passes, 0 expected failures, 0 failures, 0 errors, 0
unexpected passes
Thanks Nicolas for the fix,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Dec. 23, 2009
Re: [Pharo-project] Fwd: [squeak-dev] The Trunk: Collections-ul.260.mcz
by Stéphane Ducasse
> Hi Levente
>>
>> why don't you help us too?
>>
>
> I'm helping you, but not directly, I'm just a lurker here. One of my friends once said: the pharo guys are also squeak developers. I guess the opposite is also true.
Read the squeak archive and you may understand us. We have been supporting squeak since squeak 3.0.
I meet virtually marcus because we were helping harvesting fixes in squeak long long time ago.
Stef
Dec. 23, 2009