[Issue 14579] New: [SPEC] No specification on modifiers in TypeFunction symbols
    via Digitalmars-d-bugs 
    digitalmars-d-bugs at puremagic.com
       
    Tue May 12 04:51:42 PDT 2015
    
    
  
https://issues.dlang.org/show_bug.cgi?id=14579
          Issue ID: 14579
           Summary: [SPEC] No specification on modifiers in TypeFunction
                    symbols
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: major
          Priority: P1
         Component: DMD
          Assignee: nobody at puremagic.com
          Reporter: ibuclaw at gdcproject.org
Current spec on TypeFunction
TypeFunction:
    CallConvention FuncAttrs Parameters ParamClose Type
CallConvention:
    F       // D
    U       // C
    W       // Windows
    V       // Pascal
    R       // C++
...
There is a discrepancy in that CallConvention may optionally be prefixed by any
type modifiers.
See here:
https://github.com/D-Programming-Language/dmd/blob/acbe13ee54e024c0bba044d1146e244a5ea57502/src/mangle.c#L219
Specification should be updated to:
TypeFunction:
    TypeModifiers(opt) CallConvention FuncAttrs Parameters ParamClose Type
TypeModifiers:
    TypeModifier
    TypeModifier TypeModifiers
TypeModifier:
    O    // shared
    Ng   // inout
    x    // const
    y    // immutable
However current valid combinations in are here:
https://github.com/D-Programming-Language/dmd/blob/acbe13ee54e024c0bba044d1146e244a5ea57502/src/mangle.c#L100
And I make these assumptions in libiberty's D demangler.
--
    
    
More information about the Digitalmars-d-bugs
mailing list