On 04/06/2018 10:39 PM, Yuxuan Shui wrote:
I've dwelt on this for a couple of months now, and keeping thinking on it myself is not going to help. That's why I'm asking for feedback.

Hum

Changes possible usage syntax, given that the only attribute that does this currently is @property which people want to remove (as it mostly does nothing), a pragma might be a better option.

```D
pragma(namedParameters, true):
```

By making it a pragma, it also makes it an override for a future possible extension (e.g. my DIP with better syntax). So that it becomes a compiler extension not a language feature.

If no future DIP to extend it happens, a dedicated attribute can be added instead (like you have).



Changes summarized:

1. Overload resolution does not change
2. Arguments (named names gets erased as far as overload resolution is concerned) 3. When multiple definitions of a function prototype are found with types of parameters matching and is not templated then the names will go into a single definition in the AST for a given scope. These alternative names can be used for verification with named arguments, but all arguments names must match a single set of parameter names and cannot be mixed.
        Thought: Couldn't we have alternative names in the parameter instead? 
E.g.
```D
void foo(int x/x0/width, int y/y0/height){}
```
This simplifies having to keep whole prototypes around (which can be a real pain especially with templates that it would otherwise not work for).
4. New calling syntax ``Identifier : ConditionalExpression``
FIXME: fix your DIP to that FYI, ``foo(width:x=7)`` probably isn't what you want to have supported.

I'll copy this into the PR comments if I haven't misunderstood something big.

Reply via email to