Le jeu. 15 août 2019 à 12:21, Levente Uzonyi leves@caesar.elte.hu a écrit :
On Thu, 15 Aug 2019, Tobias Pape wrote:
On 15.08.2019, at 03:29, Levente Uzonyi leves@caesar.elte.hu wrote:
On Wed, 14 Aug 2019, commits@source.squeak.org wrote:
A new version of ShoutCore was added to project The Inbox: http://source.squeak.org/inbox/ShoutCore-ct.69.mcz
==================== Summary ====================
Name: ShoutCore-ct.69 Author: ct Time: 14 August 2019, 10:43:04.7164 pm UUID: 7d165f4e-09bf-a445-a664-5e8edb9867b8 Ancestors: ShoutCore-ul.68
Fix bug in SHParserST80: Wrong styling after blocks with arguments
without statements
If you mean that Shout should accept [ :x ], then no, I'm pretty sure
that's not valid smalltalk syntax, even if Parser accepts it.
The vertical bar, even though I consider it unnecessary in all cases,
is mandatory when there are arguments.
I only got to know this "shortcut syntax" because eliot used it either
Cog or somewhere in trunk when preparing something (Spur? full block closures? I forgot). So this is a syntax idiosyncrasy that is in active use, not only "old code".
Either we forbid it in the parser and change all of the image or allow
it in Shout.
Can you give me examples? I suspect those are just typos, which the parser accidentally accepted (and Shout as well before my fixes).
Levente
I don't remember seeing this syntax before and found it a bit surprising. So, for the sake of curiosity, I tried in some other dialects.
[:x ] is accepted syntax in - Visualworks (8.3), - Pharo (v7 with OpalCompiler) - Smalltalk-80 (apple v0.?)
[:x ] is invalid in - Dolphin - Smalltalk/X (jv branch)
So it seems that it's something originating from original Smalltalk-80, but not reproducted in non derivated dialects...
The bar is mandatory in blue book specification (see the last pages)
[image: Capture d’écran 2019-08-18 à 17.11.53.png] So it seems that implementation did not agree with specifications for ages... [image: Capture d’écran 2019-08-18 à 18.56.05.png]
Best regards -Tobias
Levente
Thanks Jakob for the report!
=============== Diff against ShoutCore-ul.68 ===============
Item was changed: ----- Method: SHParserST80>>parseBlockArguments (in category 'parse')
parseBlockArguments
currentTokenFirst == $: ifFalse: [ ^self ]. [ currentTokenFirst == $: ] whileTrue: [ self scanPast: #blockArgColon; parseArgument: #blockPatternArg ].
- ((self parseVerticalBarForTemporaries: #blockArgsBar) and: [
currentTokenFirst ~= $] ])
ifFalse: [
self fail ": Missing block args bar" ]!
- (self parseVerticalBarForTemporaries: #blockArgsBar) ifFalse: [
self fail ": Missing block args bar" ]!