On Thursday, 11 April 2024 at 15:00:49 UTC, Steven Schveighoffer wrote:

So D can provide a nice mechanism to show what is happening -- `pragma(msg, ...)`

If I do that with the two types above I see something *very* interesting:

```d
pragma(msg, FnPrefixT);
pragma(msg, FnSuffixT);
```

```
bool function(int) nothrow @nogc
bool function(int) nothrow @nogc @safe
```

That surprises me. `nothrow` and `@nogc` go onto the type, but not `@safe` if put before the declaration? I have no idea why. All I can think of is that it is a bug.


`pragma(msg,...)` is very useful. Thanks.

My general impressions were correct then. It shouldn't matter on which side the attrs get put, except in some ambiguous cases. It's just broken. Not every day you get to blame a compiler bug.

Feeding:
```d
alias FnPrefixT = @safe nothrow @nogc bool function(int);
alias FnSuffixT = bool function(int) @safe nothrow @nogc ;

pragma(msg, FnPrefixT);
pragma(msg, FnSuffixT);

void main() { return; }
```

into run.dlang and having it compile with all the compilers...gets the same result all the way back to 2.060. It has this issue with gdc 2.076, which is what I'm using normally.

What is the procedure for bug reporting? I'm looking at the issues tracker and have no clue how to drive the search to see if this is already there.


-Steve

-- john

  • How can I tell D... John Dougan via Digitalmars-d-learn
    • Re: How can... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
      • Re: How... Steven Schveighoffer via Digitalmars-d-learn
        • Re:... John Dougan via Digitalmars-d-learn
          • ... Steven Schveighoffer via Digitalmars-d-learn
            • ... John Dougan via Digitalmars-d-learn
              • ... Steven Schveighoffer via Digitalmars-d-learn
                • ... John Dougan via Digitalmars-d-learn
              • ... Monkyyy via Digitalmars-d-learn

Reply via email to