#include #include union U { int x[10][10]; int y[10][10]; }; struct U2 { int x[10][10]; }; struct T { union U u[10][10]; struct U2 u2[10][10]; } a[100]; int main() { $assert($mem_contains(&a, &a[(0 .. 90) + (0 .. 9)])); $assert($mem_contains(&a[0 .. 99], &a)); $assert($mem_contains(&a[(9 .. 99) + (-9 .. 0)], &a)); $assert(!$mem_contains(&a[0 .. 98], &a)); $assert($mem_contains(&a[0 .. 99].u[0 .. 9][0 .. 9], &a[0 .. 99].u[0 .. 9][0 .. 9].x[0 .. 9][0 .. 9])); $assert($mem_contains(&a[0 .. 99].u[0 .. 9][0 .. 9], &a[0 .. 99].u[0 .. 9][0 .. 9].y[0 .. 9][0 .. 9])); $assert($mem_contains(&a[0 .. 99].u2[0 .. 9][0 .. 9], &a[0 .. 99].u2[0 .. 9][0 .. 9].x[0 .. 9][0 .. 9])); $assert($mem_contains(&a[0 .. 99].u2[0 .. 9][0 .. 9].x[0 .. 9][0 .. 9], &a[0 .. 99].u2[0 .. 9][0 .. 9])); }