Parser.st
changeset 3294 67a0a812ec4f
parent 3293 49e96f5bf282
child 3297 10b0140f855c
--- a/Parser.st	Tue Aug 27 01:04:53 2013 +0200
+++ b/Parser.st	Tue Aug 27 11:46:07 2013 +0200
@@ -3035,7 +3035,6 @@
     "Modified: / 22.1.1998 / 16:39:11 / stefan"
 !
 
-
 correctSelector:aSelectorString message:msg positions:posVector in:aClassOrNil for:receiverNode
     "notify error and correct if user wants to;
      return #Error if there was no correction
@@ -6830,7 +6829,7 @@
                            | { KEYWORD-PART binaryExpression }
     "
 
-    |expr receiver sel arg args posR1 posR2 pos1 pos2 lno selectorPartPositions|
+    |expr receiver sel selChecked arg args posR1 posR2 pos1 pos2 lno selectorPartPositions|
 
     receiver := receiverArg.
     posR1 := tokenPosition.
@@ -6863,7 +6862,7 @@
     expr := MessageNode receiver:receiver selector:sel args:args fold:foldConstants.
     expr selectorPartPositions:selectorPartPositions.
 
-    sel := self selectorCheck:sel for:receiver positions:selectorPartPositions.
+    selChecked := self selectorCheck:sel for:receiver positions:selectorPartPositions.
 
     ignoreWarnings ifFalse:[
         (Class definitionSelectors includes:sel) ifTrue:[
@@ -6879,7 +6878,13 @@
         errorFlag := false. "ok, user wants it - so he'll get it"
         expr := MessageNode receiver:receiver selector:sel args:args fold:nil.
     ].
-    expr selector:sel. "/ in case it was changed in the selectorCheck.
+
+    sel ~~ selChecked ifTrue:[
+        expr args size ~~ args size ifTrue:[
+            self parseError:'Parser: selector botch (message folded?'.
+        ].
+        expr selector:sel. "/ in case it was changed in the selectorCheck.
+    ].
     expr lineNumber:lno.
     self checkPlausibilityOf:expr from:pos1 to:pos2.
 
@@ -6905,6 +6910,7 @@
     ^ self messageNodeRewriteHookFor:expr.
 
     "Modified: / 19-01-2012 / 10:44:42 / cg"
+    "Modified: / 27-08-2013 / 10:43:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 literalInlineObjectFor:namesAndValues
@@ -11604,11 +11610,11 @@
 !Parser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.781 2013-08-26 23:04:53 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.782 2013-08-27 09:46:07 vrany Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.781 2013-08-26 23:04:53 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.782 2013-08-27 09:46:07 vrany Exp $'
 !
 
 version_SVN