On 9/16/2015 10:34 AM, Ben Coman wrote:
On Wed, Sep 16, 2015 at 4:56 PM, Nicolai Hess <nicolaihess@web.de> wrote:
The following method compiles with Opal:
createRedMorph ^ (self new color:Color red); yourself
but gives a syntax error with the old compilers parser
createRedMorph ^ (self new color:Color red)End of block expected -> ; yourself
removing the parenthesis of course works for both. Who is right ?
What is the result in other dialects?
Dolphin lets you do "self ; yourself" as well as the example above. However, both VW & VA don't allow it.
This is a potential incompatibility for little gain. Anyway I would guess Opal is wrong.
I don't remember if we allowed this on purpose to be compatible with other Smalltalks or if it was a bug we missed. Anyway, a simple fix is to add " and: [node parentheses isEmpty]" to the RBParser>>parseCascadeMessage method: parseCascadeMessage | node receiver messages semicolons | node := self parseKeywordMessage. (currentToken isSpecial and: [currentToken value = $; and: [node isMessage and: [node parentheses isEmpty]]]) ifFalse: [^node]. ... John Brant