mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
46 lines
789 B
D
46 lines
789 B
D
// 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));
|
|
}
|