| // { dg-do compile } |
| // { dg-options "-Wbuiltin-declaration-mismatch" } |
| |
| extern(C): |
| |
| // Mismatched parameter lengths |
| double tan(); // { dg-warning "\\\[-Wbuiltin-declaration-mismatch]" } |
| |
| // Mismatched variadic arguments |
| int printf(const(char)*); // { dg-warning "\\\[-Wbuiltin-declaration-mismatch]" } |
| |
| // Mismatched return type |
| void puts(char*); // { dg-warning "\\\[-Wbuiltin-declaration-mismatch]" } |
| |
| // Mismatched return storage class |
| ref int isalnum(int); // { dg-warning "\\\[-Wbuiltin-declaration-mismatch]" } |
| |
| // Mismatched parameter type |
| double sin(long); // { dg-warning "\\\[-Wbuiltin-declaration-mismatch]" } |
| |
| // Mismatched parameter storage class |
| double frexp(double, lazy int*); // { dg-warning "\\\[-Wbuiltin-declaration-mismatch]" } |
| double log(ref double); // { dg-warning "\\\[-Wbuiltin-declaration-mismatch]" } |
| |
| // Verify that storage classes don't affect covariance matching |
| @trusted nothrow @nogc pure double fabs(double); |
| |
| // Verify inout is allowed instead of const |
| inout(char)* strstr(return scope inout(char)*, scope const char*) pure; |
| |
| // Verify that FILE* is allowed as it is implicitly convertable to void* |
| struct _IO_FILE{} |
| alias FILE = shared(_IO_FILE); |
| int fprintf(FILE*, scope const char*, scope const ...); |
| |
| // Verify integral types with same size are treated as if equivalent |
| int putchar(dchar); |