Interesting user mistake

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Fri Sep 4 16:11:35 PDT 2015


On 09/04/2015 02:55 PM, Mint wrote:
> On Friday, 4 September 2015 at 17:17:26 UTC, Andrei Alexandrescu wrote:
>> On 09/03/2015 01:08 PM, H. S. Teoh via Digitalmars-d wrote:
>>> [...]
>>>
>>> Is there a way for the lexer to check for the specific character
>>> sequence '=', '+', whitespace and not others (e.g. '=', whitespace,
>>> '+')?  IOW, "a =+ b" will be prohibited, but "a = + b" will be allowed.
>>> If so, I agree with this.
>>
>> Yah, space is relevant there. That's why the check is easiest done
>> during tokenization. -- Andrei
>
> Given ` a =+ b `, I see no issue with the statement assuming 'b' is of
> some type T that overloads the unary + operator. ie. ` a = b.opUnary!"+" `
>
> And while the expression could also be written as ` a = +b `, there's a
> number of situations where it's hard to control the formatting (ie.
> generated mixin code). That, and I can't think of any other C-like
> language where ` =+ ` would produce an error.
>
> A simple solution would be to just have unary + perform integer
> promotion, as it does in C.

I am now sorry I started this. -- Andrei



More information about the Digitalmars-d mailing list