Actually I'm just suggesting that the error message is ambiguous and I that an error message that acknowledged the ambiguity would be useful. ... pretty simple change I would think ...

If one WERE writing a method using the | message selector, the existing error messages make perfect sense. For everyone else making the mistake of missing the message pattern, the additional information takes away the confusion ...

Changing the error message for this case is all that I'm suggesting .... and it is just a suggestion to make things easier for beginners who do not have a Smalltalk compiler in the their heads ...

Dale

On 08/12/2016 03:36 PM, Nicolas Cellier wrote:
But the bar is a valid binary selector which takes a text parameter

| text
   | text '|' expected ->
   := self requestPassword

You seem to suggest that the parser should use formatting, presence/absence or spaces/newlines, but it never did so, it just skips/ignores spaces. The parser process as much as possible until the first error. It never did a global analysis to find the minimal error. That's a far more difficult problem.

Note that for the same kind of reason, while we could make ^ a binary selector as I proposed once, we didn't yet by fear of interpreting things differently in case of missing period:

    self seeThePeriodMissingAtEndOfThisSentence
    ^self


2016-08-13 0:02 GMT+02:00 Dale Henrichs <[email protected] <mailto:[email protected]>>:



    On 08/12/2016 11:40 AM, Nicolai Hess wrote:


    2016-08-12 20:30 GMT+02:00 Dale Henrichs
    <[email protected]
    <mailto:[email protected]>>:

        `'|' expected` is  not the error message I would expect when
        the message pattern is missing from a method and I try to
        accept in browser:


            | text |
            text  '|' expected ->:= self requestPassword
                ifTrue: [ UIManager default requestPassword: self
        prompt ]
                ifFalse: [ UIManager default request: self prompt
        initialAnswer: self template ].
            ^ (text isNil or: [ text isEmpty ])
                ifTrue: [ nil ]
                ifFalse: [ text ]

        The highlighter was also confused turning red at the `->`
        instead at the very beginning of the method ...


    yeah, this is a funny one.
    I onced debugged the parser to find out why that's happening. Can
    you spot why this is a valid method :

    | text |
    | ^ text

    :)
    I cheated and used the syntax highlighting to give me subtle but
    import clues :)  Things I missed when initially trying to figure
    out what I had done wrong ... perhaps an error message that
    special cases this would be called for: "'|' expected or missing
    message message pattern" ... There are at least two developers who
    expected the syntax highlighter to do a better job ... and I sent
    this thinking about newbies running into what I assume would be a
    common mistake ...

    Dale




Reply via email to