[Dlang-internal] UDA segfaults compiler
Elmar
chrehme at gmx.de
Sun Jul 18 19:58:55 UTC 2021
On Sunday, 18 July 2021 at 17:37:52 UTC, Basile B. wrote:
> On Saturday, 17 July 2021 at 16:33:54 UTC, Elmar wrote:
>> Hello D people,
>>
>> I found a segmentation fault which I can reproduce with `dmd`
>> and `ldc2`.
>>
>> The attack code is simple:
>>
>> ```
>> alias getOne = @(0) function int () => 1;
>> ```
>>
>> It works without the UDA but segfaults with it. I found it
>> because I wanted to have user-defined attributes to the return
>> values of functions. I can't put the UDA after `function` so I
>> put it before.
>>
>> I believe, this is a forgotton corner case or something
>> because the compiler tells me, UDAs are not allowed in alias
>> definitions.
>
> This is an assertion failure in the parser, [reported
> here](https://issues.dlang.org/show_bug.cgi?id=22127).
>
> The code you write should not compile because the
> FunctionLiteral rule does not include the UserDefinedAttributes
> one.
Thank you very much for clarification :-) ! I figured out UDAs
are supposed to be attached to symbols only and because of
compile-time staticness they can only be passed to a function via
an alias-parameter but can't be passed to an op-function or
constructor unfortunately. The deprecated dual-context makes it
harder to pass them to methods and some other functions.
Thank you for adding the report!
More information about the Dlang-internal
mailing list