www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 23389] New: ImportC: types from core.stdc.* are distinct

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

          Issue ID: 23389
           Summary: ImportC: types from core.stdc.* are distinct types
                    when imported from C
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Keywords: ImportC
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: dave287091 gmail.com

This issue might be tough to be resolve, but is easy to demonstrate:

// s.c
#include <stdio.h>

// d.d
static import s;
static import core.stdc.stdio;

void main(){
    auto f = s.fopen("/dev/null", "r");
    assert(f);
    core.stdc.stdio.fclose(f); // Error 1
    core.stdc.stdio.fclose(cast(shared)f); // Error 2
}

d.d(8): Error: function `core.stdc.stdio.fclose(shared(__sFILE)* stream)` is
not callable using argument types `(__sFILE*)`
d.d(8):        cannot pass argument `f` of type `__sFILE*` to parameter
`shared(__sFILE)* stream`
d.d(9): Error: function `core.stdc.stdio.fclose(shared(__sFILE)* stream)` is
not callable using argument types `(shared(__sFILE*))`
d.d(9):        cannot pass argument `cast(shared(__sFILE*))f` of type
`shared(__sFILE*)` to parameter `shared(__sFILE)* stream`

Those error messages are unhelpful as well.

--
Oct 05 2022