mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 21:21:48 +03:00
208 lines
4.2 KiB
C
208 lines
4.2 KiB
C
/*************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22304
|
|
|
|
int * __attribute__((__always_inline__)) foo(void)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
/*************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22312
|
|
|
|
typedef int Integer;
|
|
typedef int Integer;
|
|
|
|
/*************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22333
|
|
|
|
enum E {
|
|
oldval __attribute__((deprecated)) = 0,
|
|
newval
|
|
};
|
|
|
|
int
|
|
fn (void)
|
|
{
|
|
return oldval;
|
|
}
|
|
|
|
/*************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22342
|
|
|
|
void func();
|
|
void booc(int);
|
|
|
|
void cooc(i)
|
|
int i;
|
|
{
|
|
}
|
|
|
|
void test22342()
|
|
{
|
|
func(3);
|
|
booc(3);
|
|
cooc(1, 3);
|
|
}
|
|
|
|
/*************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22398
|
|
|
|
const int a;
|
|
int b = a;
|
|
|
|
/*************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22415
|
|
|
|
int test22415(int a)
|
|
{
|
|
switch (a)
|
|
{
|
|
case 0:
|
|
a = 1;
|
|
case 1:
|
|
return a;
|
|
case 2:
|
|
default:
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
/*************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22422
|
|
|
|
int foo22422(void *p __attribute__((align_value(64))))
|
|
{
|
|
}
|
|
|
|
/*************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22432
|
|
|
|
struct S {
|
|
int x;
|
|
};
|
|
typedef int T;
|
|
struct S F(struct S);
|
|
|
|
void test22432()
|
|
{
|
|
struct S s;
|
|
int x1 = (int)(s).x;
|
|
int x2 = (T)(s).x;
|
|
int x3 = (F)(s).x;
|
|
struct S s1 = (F)(s);
|
|
double d = 1.0;
|
|
int x4 = (T)(d);
|
|
int x5 = (T)(d)++;
|
|
int x6 = (T)(d)--;
|
|
struct S* p;
|
|
int x7 = (T)(p)->x;
|
|
int a[3];
|
|
int x8 = (T)(a)[1]++;
|
|
}
|
|
|
|
|
|
/*************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22534
|
|
|
|
struct S22534 { int x; };
|
|
|
|
void test22534(struct S22534 *const p)
|
|
{
|
|
p->x = 1;
|
|
}
|
|
|
|
/*************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22560
|
|
|
|
;;;
|
|
; struct S22560 { int x; };;;;
|
|
; int func22560();;;
|
|
;;;
|
|
|
|
/*************************************************/
|
|
// typeof()
|
|
|
|
void testTypeof(void)
|
|
{
|
|
// general declarations
|
|
short a;
|
|
_Static_assert(sizeof(a) == sizeof(short), "1");
|
|
|
|
typeof(a) b;
|
|
_Static_assert(sizeof(b) == sizeof(short), "2");
|
|
|
|
typeof(short) c;
|
|
_Static_assert(sizeof(c) == sizeof(short), "3");
|
|
|
|
typeof(a + 1) d;
|
|
_Static_assert(sizeof(d) == sizeof(int), "4"); // promoted
|
|
|
|
typeof(a += 1) e;
|
|
_Static_assert(sizeof(e) == sizeof(short), "5");
|
|
|
|
typeof(1, 1) f;
|
|
_Static_assert(sizeof(f) == sizeof(int), "6");
|
|
|
|
typeof(_Generic(1, default: 0)) g;
|
|
_Static_assert(sizeof(g) == sizeof(int), "7");
|
|
|
|
const typeof(a) h = (typeof(a))0;
|
|
_Static_assert(sizeof(h) == sizeof(short), "8");
|
|
|
|
typeof(const short) i = h;
|
|
_Static_assert(sizeof(i) == sizeof(short), "9");
|
|
|
|
|
|
// function parameters
|
|
typeof(a) fun(typeof(a), typeof(h));
|
|
fun(a, h);
|
|
_Static_assert(sizeof(fun(a, h)) == sizeof(short), "10");
|
|
|
|
|
|
// aggregate fields
|
|
struct Foo { typeof(a) x; };
|
|
typeof(((struct Foo){0}).x) fa;
|
|
_Static_assert(sizeof(fa) == sizeof(short), "11");
|
|
|
|
|
|
// typedefs
|
|
typedef short Bar;
|
|
Bar ta;
|
|
_Static_assert(sizeof(ta) == sizeof(short), "12");
|
|
|
|
typeof(ta) tb;
|
|
_Static_assert(sizeof(tb) == sizeof(short), "13");
|
|
|
|
typeof(Bar) tc;
|
|
_Static_assert(sizeof(tc) == sizeof(short), "14");
|
|
|
|
|
|
// pointers
|
|
typeof(&a) pa;
|
|
_Static_assert(sizeof(pa) == sizeof(void*), "15");
|
|
|
|
typeof(*pa) pb;
|
|
_Static_assert(sizeof(pb) == sizeof(short), "16");
|
|
}
|
|
|
|
short testTypeofA;
|
|
const typeof(testTypeofA) testTypeofB = 0;
|
|
_Static_assert(sizeof(testTypeofB) == sizeof(short), "17");
|
|
|
|
/*************************************************/
|
|
|
|
// https://issues.dlang.org/show_bug.cgi?id=23752
|
|
void *c23752 = &*((void*)(0));
|
|
|
|
/*************************************************/
|
|
|
|
// https://issues.dlang.org/show_bug.cgi?id=23767
|
|
const int arr23767[4];
|
|
void f23767(void)
|
|
{
|
|
int x = *(0 ? (void*)0 : arr23767);
|
|
int y = *(1 ? arr23767 : (void*)(3-3));
|
|
int* p = (1 ? (void*)0 : (void*)0);
|
|
}
|
|
|
|
/*************************************************/
|