https://github.com/pharo-project/pharo/pull/2695
> On 18 Feb 2019, at 16:52, Sven Van Caekenberghe <s...@stfx.eu> wrote: > > OK, I that is what I expected. > I will study this again and make a PR with better comments and tests. > >> On 18 Feb 2019, at 16:32, ducasse <steph...@netcourrier.com> wrote: >> >>> >>> >>> I have been thinking a bit more about this, and I have a lot of problems >>> with >>> >>> Integer>>#putOn: aStream >>> aStream isBinary >>> ifTrue: [ self asByteArray do: [ :each | aStream nextPut: each >>> ] ] >>> ifFalse: [ self asString putOn: aStream ] >>> >>> I think we should simply remove this method. It is ugly and wrong. >> >> I agree >> >>> #<< should simply be a shortcut for either #nextPut: and #nextPutAll: and >>> nothing more. >>> >>> The following two are OK for me: >>> >>> String streamContents: [ :out | out << 'Hello' << $! ]. >>> ByteArray streamContents: [ :out | out << #[ 1 2 3 ] << 4 ]. >>> >>> But the following most definitively not: >>> >>> (ByteArray streamContents: [ :out | out << 16rFF << 16rFF11 << 16rFFFF22 << >>> 16rFFFFFF33 ]) hex. >>> >>> When you write out an integer, you have to decide its size, that can never >>> depend on the magnitude (because there is no way to read this back unless >>> there is additional bracketing). >>> >>> Also, printing to a stream should be (very) efficient. Making copies of >>> objects just for conversion purposes should be avoided. >> >> yes. >> >>> >>> I think that if we remove Integer>>#putOn: I could live with >>> >>> ZnEncodedStream>>#<< anObject >>> anObject putOn: self >> >> Yes :) >> and remove the ugly one? Yes >> >>> >>> The other solution is to define #<< as strictly the same as #nextPutAll: >>> and remove all #putOn: implementors. >>> >>> Sven >