mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 05:00:16 +03:00
162 lines
5.4 KiB
C
162 lines
5.4 KiB
C
// check semantic analysis of C files
|
|
/* TEST_OUTPUT:
|
|
---
|
|
fail_compilation/failcstuff2.c(113): Error: cannot modify expression `cast(int)var` because it is not an lvalue
|
|
fail_compilation/failcstuff2.c(114): Error: `sizeof` is not a member of `int`
|
|
fail_compilation/failcstuff2.c(115): Error: cannot modify expression `cast(short)3` because it is not an lvalue
|
|
fail_compilation/failcstuff2.c(116): Error: cannot modify constant `4`
|
|
fail_compilation/failcstuff2.c(117): Error: cannot modify constant `5`
|
|
fail_compilation/failcstuff2.c(118): Error: cannot take address of constant `6`
|
|
fail_compilation/failcstuff2.c(119): Error: cannot modify expression `cast(int)var` because it is not an lvalue
|
|
fail_compilation/failcstuff2.c(120): Error: cannot modify expression `cast(int)var` because it is not an lvalue
|
|
fail_compilation/failcstuff2.c(121): Error: cannot modify expression `cast(int)var` because it is not an lvalue
|
|
fail_compilation/failcstuff2.c(122): Error: cannot modify expression `cast(int)var` because it is not an lvalue
|
|
fail_compilation/failcstuff2.c(123): Error: cannot take address of expression `cast(int)var` because it is not an lvalue
|
|
fail_compilation/failcstuff2.c(124): Error: cannot take address of expression `makeS22067().field` because it is not an lvalue
|
|
fail_compilation/failcstuff2.c(125): Error: cannot modify expression `makeS22067().field` because it is not an lvalue
|
|
fail_compilation/failcstuff2.c(126): Error: cannot modify expression `makeS22067().field` because it is not an lvalue
|
|
fail_compilation/failcstuff2.c(127): Error: cannot modify expression `makeS22067().field` because it is not an lvalue
|
|
fail_compilation/failcstuff2.c(153): Error: cannot modify expression `cast(short)var` because it is not an lvalue
|
|
fail_compilation/failcstuff2.c(154): Error: cannot modify expression `cast(long)var` because it is not an lvalue
|
|
fail_compilation/failcstuff2.c(354): Error: variable `arr` cannot be read at compile time
|
|
fail_compilation/failcstuff2.c(360): Error: variable `str` cannot be read at compile time
|
|
fail_compilation/failcstuff2.c(352): Error: cannot take address of register variable `reg1`
|
|
fail_compilation/failcstuff2.c(355): Error: cannot take address of register variable `reg2`
|
|
fail_compilation/failcstuff2.c(358): Error: cannot take address of register variable `reg3`
|
|
fail_compilation/failcstuff2.c(359): Error: cannot index through register variable `reg3`
|
|
fail_compilation/failcstuff2.c(360): Error: cannot take address of register variable `reg3`
|
|
fail_compilation/failcstuff2.c(361): Error: cannot take address of register variable `reg3`
|
|
fail_compilation/failcstuff2.c(362): Error: cannot index through register variable `reg3`
|
|
fail_compilation/failcstuff2.c(373): Error: cannot take address of register variable `reg4`
|
|
fail_compilation/failcstuff2.c(374): Error: cannot take address of register variable `reg4`
|
|
fail_compilation/failcstuff2.c(375): Error: cannot take address of register variable `reg4`
|
|
fail_compilation/failcstuff2.c(376): Error: cannot take address of bit-field `b`
|
|
fail_compilation/failcstuff2.c(377): Error: cannot index through register variable `reg4`
|
|
fail_compilation/failcstuff2.c(378): Error: cannot index through register variable `reg4`
|
|
fail_compilation/failcstuff2.c(381): Error: cannot take address of register variable `reg5`
|
|
---
|
|
*/
|
|
|
|
/***************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22069
|
|
#line 50
|
|
void test22069()
|
|
{
|
|
int var;
|
|
int *ptr;
|
|
&var;
|
|
*ptr;
|
|
+var;
|
|
-var;
|
|
~var;
|
|
!var;
|
|
}
|
|
|
|
/***************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22067
|
|
#line 100
|
|
struct S22067
|
|
{
|
|
int field;
|
|
};
|
|
|
|
struct S22067 makeS22067()
|
|
{
|
|
return (struct S22067) { 42 };
|
|
}
|
|
|
|
void test22067()
|
|
{
|
|
int var;
|
|
(int) var = 1;
|
|
sizeof(var) = 2;
|
|
++(short)3;
|
|
--4;
|
|
(5)++;
|
|
(&6);
|
|
((int)var)++;
|
|
((int)var)--;
|
|
++(int)var;
|
|
--(int)var;
|
|
&(int)var;
|
|
&makeS22067().field;
|
|
makeS22067().field = 1;
|
|
makeS22067().field++;
|
|
--makeS22067().field;
|
|
}
|
|
|
|
/***************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22068
|
|
#line 150
|
|
void test22068()
|
|
{
|
|
int var;
|
|
++(short) var;
|
|
--(long long) var;
|
|
}
|
|
|
|
/***************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22405
|
|
#line 300
|
|
struct S22405
|
|
{
|
|
int * const p;
|
|
int *q;
|
|
};
|
|
|
|
void test22405(struct S22405 *s)
|
|
{
|
|
s->p = (const int *)(s->q);
|
|
}
|
|
|
|
/***************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=22413
|
|
#line 350
|
|
|
|
void test22413a()
|
|
{
|
|
int arr[6] = {1,2,3,4,5,6};
|
|
int arr2[] = arr;
|
|
}
|
|
|
|
void test22413b()
|
|
{
|
|
const char *str = "hello";
|
|
char msg[] = str;
|
|
}
|
|
|
|
/***************************************************/
|
|
#line 350
|
|
void testRegister(register int reg1)
|
|
{
|
|
int *ptr1 = ®1;
|
|
|
|
register int reg2;
|
|
int *ptr2 = ®2;
|
|
|
|
register int reg3[1];
|
|
int *ptr3 = (int *)reg3;
|
|
int idx3a = reg3[0];
|
|
int idx3b = *reg3;
|
|
int idx3c = reg3 + 0;
|
|
int idx3d = 0[reg3];
|
|
|
|
register struct
|
|
{
|
|
struct
|
|
{
|
|
int i;
|
|
int b : 4;
|
|
int a[1];
|
|
} inner;
|
|
} reg4;
|
|
int *ptr4a = &(reg4.inner.i);
|
|
int *ptr4b = reg4.inner.a;
|
|
int *ptr4c = (int*)reg4.inner.a;
|
|
int *ptr4d = &(reg4.inner.b);
|
|
int idx4a = reg4.inner.a[0];
|
|
int idx4b = 0[reg4.inner.a];
|
|
|
|
register int *reg5;
|
|
int **ptr5 = ®5;
|
|
}
|