Traits, method flatten
Hi, When I load with Monticello classes with traits, all the traits methods are duplicated in the class. I got this problem with 4.0 then now with 5.0 Hilaire -- Dr. Geo http://drgeo.eu
can you show us the code? On Tue, Apr 11, 2017 at 7:08 PM, Hilaire <hilaire@drgeo.eu> wrote:
Hi,
When I load with Monticello classes with traits, all the traits methods are duplicated in the class.
I got this problem with 4.0 then now with 5.0
Hilaire
-- Dr. Geo http://drgeo.eu
Privately only, and I have to recover from old version, but then when saving, then reloading it is flatten :(( With Pharo5 Le 11/04/2017 à 20:43, Stephane Ducasse a écrit :
can you show us the code?
-- Dr. Geo http://drgeo.eu
Investigating a bit on the mater, here is the conduct: - In a fresh 5.0, find an a version of my package where the Traits logic is not compromised (All traits methods are not duplicated in the classes using the traits) - Load this package, all seems fine. - Promote the class/trait category to a package, let's say TraitsPackage - Save this package locally in a .mcz file - In the Pharo5.0 image unload all my packages - Load back the TraitsPackage, all traits methods are duplicated... - Examine the source in the .mcz file: the traits logic is already compromised Is there anything wrong in this process? Conclusion1: Pharo5 does not know how to save Trait correctly. Conclusion2: Already get there, http://forum.world.st/Strange-behaviour-with-traits-td4891623.html Hilaire -- Dr. Geo http://drgeo.eu
Hi, If anyone with deep knowledge on Monticello wants to give a look with this bugs on Traits, I can share privately an image exposing the problem. Just mail me at hilaire [AT] drgeo.eu Thanks Hilaire Le 12/04/2017 à 14:08, Hilaire a écrit :
Investigating a bit on the mater, here is the conduct:
- In a fresh 5.0, find an a version of my package where the Traits logic is not compromised (All traits methods are not duplicated in the classes using the traits)
- Load this package, all seems fine.
- Promote the class/trait category to a package, let's say TraitsPackage
- Save this package locally in a .mcz file
- In the Pharo5.0 image unload all my packages
- Load back the TraitsPackage, all traits methods are duplicated...
- Examine the source in the .mcz file: the traits logic is already compromised
Is there anything wrong in this process?
Conclusion1: Pharo5 does not know how to save Trait correctly. Conclusion2: Already get there, http://forum.world.st/Strange-behaviour-with-traits-td4891623.html
-- Dr. Geo http://drgeo.eu
I am interested, and I think I already looked at this issue, I vaguely remember, that this has something to do with the determination of the origin of a method (trait methods that are from another trait are wrongly recognized as (trait)local methods). 2017-04-13 8:37 GMT+02:00 Hilaire <hilaire@drgeo.eu>:
Hi,
If anyone with deep knowledge on Monticello wants to give a look with this bugs on Traits, I can share privately an image exposing the problem. Just mail me at hilaire [AT] drgeo.eu
Thanks
Hilaire
Le 12/04/2017 à 14:08, Hilaire a écrit :
Investigating a bit on the mater, here is the conduct:
- In a fresh 5.0, find an a version of my package where the Traits logic is not compromised (All traits methods are not duplicated in the classes using the traits)
- Load this package, all seems fine.
- Promote the class/trait category to a package, let's say TraitsPackage
- Save this package locally in a .mcz file
- In the Pharo5.0 image unload all my packages
- Load back the TraitsPackage, all traits methods are duplicated...
- Examine the source in the .mcz file: the traits logic is already compromised
Is there anything wrong in this process?
Conclusion1: Pharo5 does not know how to save Trait correctly. Conclusion2: Already get there, http://forum.world.st/Strange-behaviour-with-traits-td4891623.html
-- Dr. Geo http://drgeo.eu
What is your email address? I can't read it from the usenet forum. Hilaire Le 13/04/2017 à 08:53, Nicolai Hess a écrit :
I am interested, and I think I already looked at this issue, I vaguely remember, that this has something to do with the determination of the origin of a method (trait methods that are from another trait are wrongly recognized as (trait)local methods).
-- Dr. Geo http://drgeo.eu
May be an important note, FileOut is handling just right the Traits logic. Hilaire Le 13/04/2017 à 08:53, Nicolai Hess a écrit :
I am interested, and I think I already looked at this issue, I vaguely remember, that this has something to do with the determination of the origin of a method (trait methods that are from another trait are wrongly recognized as (trait)local methods).
-- Dr. Geo http://drgeo.eu
On a restored Traits logic of my package, I made another attempt to persist this time with filetree://. The net result is the same, the Traits logic is lost in the classes using the Traits: all traits methods are duplicated !! To sum up, package saved with the following methods: - *.mcz package with the traits got broken. The .st source file is ~207kB of mostly duplicated methods - filetree package got broken too - Brave old fileout handles it just fine :) with Pharo5 (Pharo4 has UTF8 characters issues) . Source file is about 40KB Solutions: - Get it fixed. The problem is there since Pharo3 or 4... Not sure where to look at. - Escape from Traits :( - Test on Squeak, not sure how stable it is there... - Use fileout + CVS to persist code. Hilaire Le 13/04/2017 à 09:44, Hilaire a écrit :
May be an important note, FileOut is handling just right the Traits logic.
Hilaire
Le 13/04/2017 à 08:53, Nicolai Hess a écrit :
I am interested, and I think I already looked at this issue, I vaguely remember, that this has something to do with the determination of the origin of a method (trait methods that are from another trait are wrongly recognized as (trait)local methods).
-- Dr. Geo http://drgeo.eu
Give a try to filein the correct .st source file of the Traits+Classes package. It does not get it right :( Pharo5 get it right when loading the .st source file though. Still investigating... Le 14/04/2017 à 11:04, Hilaire a écrit :
- Test on Squeak, not sure how stable it is there...
-- Dr. Geo http://drgeo.eu
Ah, no my bad. Squeak was file in correctly the Trait and Class, it is just that its browser does not let you know if a method class belong to one of its Traits or the class itself Le 14/04/2017 à 11:16, Hilaire a écrit :
Give a try to filein the correct .st source file of the Traits+Classes package. It does not get it right :(
Pharo5 get it right when loading the .st source file though.
Still investigating...
-- Dr. Geo http://drgeo.eu
HilaireFernandes wrote
I made another attempt to persist this time with filetree://. The net result is the same, the Traits logic is lost in the classes using the Traits: all traits methods are duplicated !!
I just got burned by this in ##50768. Methods inherited from traits were saved as part of the package containing the extended class, as well as the package containing the Trait itself. Ugh. Was this ever fixed by Pharo 6? ----- Cheers, Sean -- View this message in context: http://forum.world.st/Traits-method-flatten-tp4941799p4950378.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
2017-06-08 6:00 GMT+02:00 Sean P. DeNigris <sean@clipperadams.com>:
HilaireFernandes wrote
I made another attempt to persist this time with filetree://. The net result is the same, the Traits logic is lost in the classes using the Traits: all traits methods are duplicated !!
I just got burned by this in ##50768. Methods inherited from traits were saved as part of the package containing the extended class, as well as the package containing the Trait itself. Ugh. Was this ever fixed by Pharo 6?
yes, it should. See issue 19938 <https://pharo.fogbugz.com/f/cases/19938/Traits-methods-flattened> Traits methods flattened (now in Pharo 60466 ) 19974 <https://pharo.fogbugz.com/f/cases/19974/backport-Traits-methods-flattened-ca...> backport Traits methods flattened (case 19938) (now in Pharo 50772 ) But AFAIK the bug, that new trait methotds are put into the "RPackage" of the trait that is "using" this trait , still exists. We only reject this entities when building the mc-package
----- Cheers, Sean -- View this message in context: http://forum.world.st/Traits-method-flatten- tp4941799p4950378.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
Yes, Nicolai proposed a fix, and it worked well enough. So it should make you happy. Hilaire Le 08/06/2017 à 06:00, Sean P. DeNigris a écrit :
HilaireFernandes wrote
I made another attempt to persist this time with filetree://. The net result is the same, the Traits logic is lost in the classes using the Traits: all traits methods are duplicated !! I just got burned by this in ##50768. Methods inherited from traits were saved as part of the package containing the extended class, as well as the package containing the Trait itself. Ugh. Was this ever fixed by Pharo 6?
-- Dr. Geo http://drgeo.eu
participants (4)
-
Hilaire -
Nicolai Hess -
Sean P. DeNigris -
Stephane Ducasse