Kill implicit joining of adjacent strings

Walter Bright newshound2 at digitalmars.com
Fri Nov 19 21:31:05 PST 2010


Stewart Gordon wrote:
> On 12/11/2010 09:53, Andrei Alexandrescu wrote:
> <snip>
>> Well put me on board then. Walter, please don't forget to tweak the
>> associativity rules: var ~ " literal " ~ " literal " concatenates
>> literals first.
> 
> You mean make ~ right-associative?  I think this'll break more code than 
> it fixes.
> 
> But implementing a compiler optimisation so that var ~ ctc ~ ctc is 
> processed as var ~ (ctc ~ ctc), _in those cases where they're 
> equivalent_, would be sensible.

Andrei's right. This is not about making it right-associative. It is about 
defining in the language that:

    ((a ~ b) ~ c)

is guaranteed to produce the same result as:

    (a ~ (b ~ c))

Unfortunately, the language cannot make such a guarantee in the face of operator 
overloading. But it can do it for cases where operator overloading is not in play.


More information about the Digitalmars-d mailing list