On Wednesday, 28 January 2015 at 18:37:48 UTC, Jonathan Marler wrote:
On Wednesday, 28 January 2015 at 18:27:34 UTC, Andrei Alexandrescu wrote:
On 1/28/15 10:19 AM, Jonathan Marler wrote:
On Wednesday, 28 January 2015 at 17:52:56 UTC, Mike wrote:
On Wednesday, 28 January 2015 at 17:41:54 UTC, Jonathan Marler wrote:

PLUS, this would be very simple to implement!

Then I recommend you submit a pull request.

Mike

I would but Walter said no. I'm certain he misunderstood my proposal and I tried to explain it to him but I couldn't get him to address it.

Was that the proposal leading to this state of affairs (quoting from your post on 2015/01/26 16:05 PST?

Here's what would change
-----------------------------------------------------------------
void myfunc() nogc; // VALID (Only if this proposal is accepted) void myfunc() safe; // VALID (Only if this proposal is accepted)


Here's what WOULD NOT change
-----------------------------------------------------------------
nogc myfunc(); // STILL INVALID: invalid unless it can be verified // that this wouldn't result in ambiguity
             //          in the grammar
void myfunc() @nogc; // STILL VALID (no change)
@nogc myfunc(); // STILL VALID (no change)


Andrei

You can follow this thread: http://forum.dlang.org/post/[email protected]

I explained my proposal 3 or 4 times but each time Walter seemed to be misunderstanding my proposal saying it was going to create "context-sensitive" tokens and so he would immediately dismiss it. I tried to understand what he meant by "context-sensitive" tokens because my proposal didn't have anything to do with them (at least my definition of them), but even after he defined them my proposal clearly does not create them.

Walter "[A context-sensitive token is] A keyword in one context and an identifier in another"

Anyway, I'll restate my proposal again:

1. Modify the SYNTAX of function to allow it to be decorated with IDENTIFIER tokens on the right hand side

void foo() x; // valid SYNTAX (note: has not semantic meaning)
void foo() safe; // valid SYNTAX and valid SEMANTICS

2. Modify the code that interprets the syntax tree to recognize these identifiers as function attributes.

A simple solution that would allow us to standardize where we put the function attributes and allow us to remove the '@' character from all non-keyword function attributes. Seems like a no-brainer to me.

I think a keyword is a keyword is a keyword. If it's a keyword to the right it should be one everywhere. How is somethign that's a built-in attribute one place and an identifier in another not context sensitive. Walter said that `exit`, `C++`, i.e. `scope(exit)`, `extern (C++)` etc. were never keywords, but I disagree. They are indeed context sensitive keywords. They have wisely been kept to a minimum. They are just confusing to reason about, except in the most strictly confined places, where they are now. I think that's why they're out of the question. They have wisely been kept to a minimum.

Reply via email to