<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
                                        Hi Christoph.<div><br></div><div>> <span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Depends on Collections-ct.936.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Please try to avoid connecting bug fixes to (unrelated) proposals. Instead, try to fix the bugs with the available means. This way, your fixes can get merged faster.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">For your proposals, try to find examples that can improve code readability in general to promote an objective discussion.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Best,</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Marcel</span></div><div class="mb_sig"></div>
                                        <blockquote class="history_container" type="cite" style="border-left-style: solid;border-width: 1px;margin-top: 20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 13.04.2021 19:45:09 schrieb commits@source.squeak.org <commits@source.squeak.org>:</p><div style="font-family:Arial,Helvetica,sans-serif">A new version of Compiler was added to project The Inbox:<br>http://source.squeak.org/inbox/Compiler-ct.457.mcz<br><br>==================== Summary ====================<br><br>Name: Compiler-ct.457<br>Author: ct<br>Time: 13 April 2021, 7:44:59.516492 pm<br>UUID: 22e7ee9f-1b8a-054c-a950-a742690bc284<br>Ancestors: Compiler-nice.456<br><br>Fixes a long-known bug when parsing a message with multiple repetitions of a colon. See Tests-ct.451 and http://forum.world.st/BUG-Parser-does-not-detect-syntax-error-with-double-colon-tp5112572.html.<br><br>Depends on Collections-ct.936.<br><br>=============== Diff against Compiler-nice.456 ===============<br><br>Item was changed:<br>  ----- Method: Parser>>expected: (in category 'error handling') -----<br>  expected: aString <br>      "Notify a problem at token 'here'."<br>  <br>+    ^ self expected: aString at: hereMark + requestorOffset!<br>-     ^ self notify: aString , ' expected' at: hereMark + requestorOffset!<br><br>Item was added:<br>+ ----- Method: Parser>>expected:at: (in category 'error handling') -----<br>+ expected: aString at: location<br>+ <br>+       ^ self<br>+               notify: ('{1} expected' translated format: {aString})<br>+                at: location!<br><br>Item was changed:<br>  ----- Method: Parser>>messagePart:repeat: (in category 'expression types') -----<br>  messagePart: level repeat: repeat<br>  <br>         | start receiver selector args precedence words keywordStart |<br>        [receiver := parseNode.<br>       (hereType == #keyword and: [level >= 3])<br>           ifTrue: <br>                      [start := self startOfNextToken.<br>                      selector := WriteStream on: (String new: 32).<br>                         args := OrderedCollection new.<br>                        words := OrderedCollection new.<br>                       [hereType == #keyword]<br>                                whileTrue: <br>                                   [keywordStart := self startOfNextToken + requestorOffset.<br>                                     selector nextPutAll: self advance.<br>                                    words addLast: (keywordStart to: self endOfLastToken + requestorOffset).<br>                                      self primaryExpression ifFalse: [^self expected: 'Argument'].<br>                                         self messagePart: 2 repeat: true.<br>                                     args addLast: parseNode].<br>+                    <br>+                     selector := selector readStream.<br>+                     words do: [:word |<br>+                           (selector next: word size - 1)<br>+                                       indexOf: $: ifPresent: [:index |<br>+                                             ^self expected: 'Argument' at: word start + index].<br>+                          selector skip: 1].<br>+                   <br>                      selector := (Symbol lookup: selector contents)<br>                                ifNil: [ self correctSelector: selector contents<br>                                                      wordIntervals: words<br>                                                          exprInterval: (start to: self endOfLastToken)<br>                                                         ifAbort: [ ^ self fail ] ].<br>                   precedence := 3]<br>              ifFalse: [<br>                    (level >= 2 and: [hereType == #verticalBar]) ifTrue: [self transformAVerticalBarIntoABinarySelector].<br>                      (hereType == #binary and: [level >= 2])<br>                            ifTrue: <br>                                      [start := self startOfNextToken.<br>                                      selector := self advance asOctetString asSymbol.<br>                                      self primaryExpression ifFalse: [^self expected: 'Argument'].<br>                                         self messagePart: 1 repeat: true.<br>                                     args := Array with: parseNode.<br>                                        precedence := 2]<br>                              ifFalse: [hereType == #word<br>                                           ifTrue: <br>                                                      [start := self startOfNextToken.<br>                                                      selector := self advance.<br>                                                     args := #().<br>                                                          words := OrderedCollection with: (start  + requestorOffset to: self endOfLastToken + requestorOffset).<br>                                                        selector := (Symbol lookup: selector)<br>                                                                 ifNil: [ self correctSelector: selector<br>                                                                                       wordIntervals: words<br>                                                                                          exprInterval: (start to: self endOfLastToken)<br>                                                                                         ifAbort: [ ^ self fail ] ].<br>                                                   precedence := 1]<br>                                              ifFalse: [^args notNil]]].<br>    parseNode := MessageNode new<br>                                  receiver: receiver<br>                            selector: selector<br>                            arguments: args<br>                               precedence: precedence<br>                                from: encoder<br>                                 sourceRange: (start to: self endOfLastToken).<br>         repeat]<br>               whileTrue: [].<br>        ^true!<br><br><br></div></blockquote></div>