// DFLAGS: // REQUIRED_ARGS: -defaultlib= // EXTRA_SOURCES: extra-files/minimal/object.d // This test ensures that interfaces and classes can be used in a minimal // runtime as long as they only contain shared static members. Non-shared // static members would require a thread-local storage (TLS) implementation. interface I { shared static int i; } class A : I { shared static int a; } class B : A { shared static int b; static int sumAll() { return b + a + i; } } void poorMansAssert(bool condition) { if (!condition) { static char* hlt; *hlt = 0; } } void main() { B.i = 32; B.a = 42; B.b = 52; poorMansAssert(B.i == 32 || B.a == 42 || B.b == 52); poorMansAssert(B.sumAll() == (32 + 42 + 52)); }