ldc/tests/codegen/nested_gh2960.d
Martin Kinkelin d2c704b186
Fix context of some nested aggregates (#2969)
The context for instances of aggregates *not* nested in the current
function, but some parent. Fixes #2960.
2019-01-20 22:18:55 +01:00

36 lines
662 B
D

// RUN: %ldc -run %s
template listDir(alias handler)
{
struct NestedStruct
{
void callHandler() { handler(); }
}
class NestedClass
{
void callHandler() { handler(); }
}
void nestedFunc() { handler(); }
void listDir()
{
int a = 123;
void foo() { assert(a == 123); }
// pass local listDir() frame as context
foo();
// pass parent context for sibling symbols:
NestedStruct().callHandler();
(new NestedClass).callHandler();
nestedFunc();
}
}
void main()
{
int magic = 0xDEADBEEF;
listDir!(() { assert(magic == 0xDEADBEEF); })();
}