[Issue 19109] New: [SPEC] pragma implementation inconsistent with spec
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Sun Jul 22 17:10:07 UTC 2018
    
    
  
https://issues.dlang.org/show_bug.cgi?id=19109
          Issue ID: 19109
           Summary: [SPEC] pragma implementation inconsistent with spec
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: ibuclaw at gdcproject.org
According to https://dlang.org/spec/pragma.html
```
Pragmas can appear as either declarations, Pragma DeclarationBlock, or as
statements, PragmaStatement.
---
1. pragma(ident);
2. pragma(ident) declaration_or_statement;
3. pragma(ident):
    declaration;
    declaration;
4. pragma(ident)
{
    declaration_or_statement;
    declaration_or_statement;
}
---
```
And yet item [2] doesn't seem to be the case, e.g:
```
pragma(msg, "test")     // Error: missing a terminating ';'
void testA() { }
pragma(mangle, "test")  // But this is OK
void testB() { }
pragma(custom_pragma)    // Error: missing a terminating ';'
void testC() { }
```
The third example above is of main concern regarding the discrepancy.  In the
first example, an error would be expected as that particular pragma is only
allowed as a statement by definition.
--
    
    
More information about the Digitalmars-d-bugs
mailing list