--- a/Parser.st Tue Aug 08 16:57:26 2017 +0200
+++ b/Parser.st Tue Aug 08 17:41:14 2017 +0200
@@ -6649,9 +6649,12 @@
|receiver argList selectorStream valNode|
- receiver := self functionCallExpression.
+ parserFlags allowFunctionCallSyntaxForBlockEvaluation ifTrue:[
+ receiver := self functionCallExpression.
+ ] ifFalse:[
+ receiver := self primary.
+ ].
tokenType == $[ ifFalse:[^ receiver].
-
parserFlags allowArrayIndexSyntaxExtension == true ifFalse:[^ receiver.].
(receiver == #Error) ifTrue:[^ #Error].
@@ -6728,6 +6731,8 @@
foo[2].
foo[1].
"
+
+ "Modified: / 08-08-2017 / 16:56:33 / cg"
!
binaryExpression
@@ -6963,6 +6968,7 @@
[tokenType == $;] whileTrue:[
lastSemiPosition := tokenPosition.
self nextToken.
+
(tokenType == #Identifier) ifTrue:[
tokenStart := tokenPosition.
tokenEnd := tokenPosition + tokenName size - 1.
@@ -6970,8 +6976,7 @@
sel := tokenName.
sel := self selectorCheck:tokenName for:realReceiver position:tokenPosition to:tokenEnd.
receiver := CascadeNode receiver:receiver selector:sel.
- receiver startPosition: tokenStart
- endPosition: tokenEnd.
+ receiver startPosition: tokenStart endPosition: tokenEnd.
receiver selectorPartPositions: (Array with: (tokenStart to: tokenEnd)).
receiver lineNumber:tokenLineNr.
receiver := self messageNodeRewriteHookFor:receiver.
@@ -7022,8 +7027,11 @@
args := args copyWith:arg.
pos2 := tokenEnd
].
- positions do:[:p |
- self markSelector:sel from:p start to:p stop receiverNode:realReceiver.
+
+ self isSyntaxHighlighter ifTrue:[
+ positions do:[:p |
+ self markSelector:sel from:p start to:p stop receiverNode:realReceiver.
+ ].
].
sel := self selectorCheck:sel for:realReceiver position:pos to:pos2.
@@ -7081,8 +7089,8 @@
].
^ receiver
- "Modified: / 19-01-2000 / 16:22:16 / cg"
"Modified: / 01-10-2013 / 20:54:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 08-08-2017 / 17:06:12 / cg"
!
functionCallArgList
@@ -8716,12 +8724,22 @@
|receiver|
- receiver := self arrayIndexingExpression.
+ (parserFlags allowArrayIndexSyntaxExtension
+ or:[ parserFlags allowFunctionCallSyntaxForBlockEvaluation ]) ifFalse:[
+ receiver := self primary
+ ] ifTrue:[
+ receiver := self arrayIndexingExpression.
+ ].
(receiver == #Error) ifTrue:[^ #Error].
- (tokenType == #EOF) ifTrue:[^ receiver].
- tokenType == $] ifTrue:[^ receiver].
- tokenType == $) ifTrue:[^ receiver].
+"/ (tokenType == #EOF) ifTrue:[^ receiver].
+"/ tokenType == $] ifTrue:[^ receiver].
+"/ tokenType == $) ifTrue:[^ receiver].
+ (self isValidUnarySelector:tokenType) ifFalse:[
+ ^ receiver
+ ].
^ self unaryExpressionFor:receiver
+
+ "Modified: / 08-08-2017 / 17:02:26 / cg"
!
unaryExpressionFor:receiverArg