www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 19201] New: Error: func called with argument types (ulong)

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

          Issue ID: 19201
           Summary: Error: func called with argument types (ulong) matches
                    both: __c_long and __c_ulong
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: blocker
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: ibuclaw gdcproject.org

Bootstrap builds with gdc are broken in master.

Minimal version without dependencies.
---
enum __c_long : long;
enum __c_ulong : ulong;

void a(ulong r){}
void a(long r){}

void b(__c_long r){}
void b(__c_ulong r){}

void main()
{
    a(0L);
    b(0L);
}
---


Minimal version with dependencies.
---
import core.stdc.stdint;

void a(ulong r){}
void a(long r){}

void b(uint64_t r){}
void b(int64_t r){}

void main()
{
    a(0L);
    b(0L);
}
---


Places in dmd that don't compile as a result:

https://github.com/dlang/dmd/blob/05cdf2f55c9d6379e300382ab7af77837c6f4155/src/dmd/dcast.d#L377
https://github.com/dlang/dmd/blob/05cdf2f55c9d6379e300382ab7af77837c6f4155/src/dmd/dcast.d#L381
https://github.com/dlang/dmd/blob/05cdf2f55c9d6379e300382ab7af77837c6f4155/src/dmd/expressionsem.d#L9319
https://github.com/dlang/dmd/blob/05cdf2f55c9d6379e300382ab7af77837c6f4155/src/dmd/optimize.d#L938


The longdouble type has overrides for intXX_t and uintXX_t to be ABI compatible
with C++.

--
Aug 28 2018