add __traits getBitfieldOffset and getBitfieldWidth (#17043)

This commit is contained in:
Walter Bright 2024-11-10 11:22:59 -08:00 committed by GitHub
parent e17cc3a28f
commit b70e66033c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 82 additions and 0 deletions

View file

@ -0,0 +1,25 @@
/* REQUIRED_ARGS: -preview=bitfields
* TEST_OUTPUT:
---
fail_compilation/biterrors5.d(23): Error: bitfield symbol expected not struct `biterrors5.S`
fail_compilation/biterrors5.d(24): Error: bitfield symbol expected not variable `biterrors5.test0.i`
---
*/
struct S
{
int a,b;
int :2, c:3;
}
static assert(__traits(getBitfieldOffset, S.b) == 0);
static assert(__traits(getBitfieldWidth, S.b) == 32);
static assert(__traits(getBitfieldOffset, S.c) == 2);
static assert(__traits(getBitfieldWidth, S.c) == 3);
void test0()
{
int i;
i = __traits(getBitfieldOffset, S);
i = __traits(getBitfieldOffset, i);
}