lukas can you open an issue on the pharobug tracker. Because I still dream about a nice and clean world so we could start to slowly spot the place and rewrite slowly. 61 is that many :) Stef On Dec 16, 2009, at 6:44 PM, Lukas Renggli wrote:
:) :) This is funny. VisualWorks has exactly the same bug^H^H^Hfeature. And if you look at the ANSI standard (ok, this is from the draft, but it is essentially the actual document) there is an exception for precisely this case, See the last sentence in section 3.4.4 Blocks:
If a block has no <block body> or no <statements> in its <block body> then the value of the block is undefined.
Ok, I did not check that document. I somehow expected that all empty blocks would return nil.
Which allows [] to be implemented as e.g. [Random new next]. In fact both VisualWorks and Squeak answer the last argument: [:a ] value: 1 1 [:a :b|] value: 1 value: 2 2 [:a :b :c :d :e :f :g :h| ] valueWithArguments: (1 to: 8) 8 [:a | nil] value: 1 nil [:a :b| nil] value: 1 value: 2 nil At least it is consistent whether the block is inlined or not ;) 1+2 ifNotNil: [:arg|] 3 It as ever been so.
Thank you for the additional insight. I learned something new on the Smalltalk semantics today :-)
I will fix my code then.
P.S. I'm caught between wanting to fix it and wanting to let sleeping dogs lie. I'd like to know what all the other dialects do. If a substantial majority have the same curio I think we have to live with this, uh, ornament. Just to be clear, making it a preference is a sick joke on my part.
I think we'd better let it sleep. In my image I have 61 empty blocks with one or more argument. Some of them might depend on that hidden behavior.
Lukas
-- Lukas Renggli http://www.lukas-renggli.ch