[Issue 21498] New: Functions with delegate parameter overloaded on attributes fail miserably

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Dec 21 23:32:38 UTC 2020


https://issues.dlang.org/show_bug.cgi?id=21498

          Issue ID: 21498
           Summary: Functions with delegate parameter overloaded on
                    attributes fail miserably
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: regression
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: qs.il.paperinik at gmail.com

The offending code is below (you should be able to comment-in @nogc using
-dip1000).

On my Windows machine, the listing compiles and runs seemingly without errors.
Note that all attributes including @safe are circumvented. For @nogc, use
-dip1000.

On run.dlang.org, running all DMD compilers, only 2.066 correctly points out
attribute violation. Since 2.067 the compiler is beigng "killed by signal 11"
(whatever that means). LDC segfaults.


int functional(int delegate(int) @system dg) @system
{
    int* p;
    int x;
    p = &x;
    if (auto result = dg(1)) return result;
    return 0;
}

int functional(int delegate(int) @safe pure nothrow @nogc dg) @safe pure
nothrow /*@nogc*/
{
    return functional(dg);
}

void main() @safe pure nothrow /*@nogc*/
{
    int x = 0;
    functional(i => x = i);
    assert(x == 1);
}

--


More information about the Digitalmars-d-bugs mailing list