Discussion Thread: DIP 1043--Shortened Method Syntax--Community Review Round 1

Tejas notrealemail at gmail.com
Fri Feb 4 17:18:54 UTC 2022


On Friday, 4 February 2022 at 14:46:39 UTC, Paul Backus wrote:
> On Friday, 4 February 2022 at 12:40:32 UTC, max haughton wrote:
>> On Friday, 4 February 2022 at 11:21:48 UTC, Elronnd wrote:
>>> It would be nice to permit something like this:
>>>
>>> struct Foo {
>>>     this(int x, string y) { ... }
>>>     this(string y) => this(0, y);
>>> }
>>>
>>> Currently this fails because constructors are not allowed to 
>>> return anything.  But that should not be part of this DIP, 
>>> probably.
>>
>> The implementation as done by Adam is done in the parser but 
>> if I move it down the stack a bit this is probably doable.
>
> Please don't. Having `=> expr` be simple syntax sugar for `{ 
> return expr; }` is consistent and easy to understand. We don't 
> need to add special cases just to save a *single character*:
>
>     this(string y) => this(0, y);
>     this(string y) { this(0, y); }

Actually, the following compiles:
```d
void funcc()
{
}

void func()
{
     return funcc();
}
void main()
{
     func();

}
```
So maybe the fact that `this(string y) => this(0, y);` doesn't 
compile is a compiler bug? Constructors return `void` after all, 
no?


More information about the Digitalmars-d mailing list