mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 21:21:48 +03:00
37 lines
678 B
D
37 lines
678 B
D
module test10993;
|
|
|
|
import core.demangle : demangleType;
|
|
|
|
auto foo(T)(T a)
|
|
{
|
|
static immutable typeof(a) q;
|
|
// pragma(msg, "foo: " ~ typeof(q).mangleof);
|
|
return q;
|
|
}
|
|
|
|
struct test(alias fn)
|
|
{
|
|
bool ini = true;
|
|
void* p;
|
|
}
|
|
|
|
auto fun()
|
|
{
|
|
auto x = foo!()(test!(a=>a)());
|
|
// pragma(msg, "fun: " ~ typeof(x).mangleof);
|
|
|
|
return x;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
const x = fun();
|
|
enum mangle_x = typeof(x).mangleof;
|
|
// pragma(msg, "x : " ~ mangle_x);
|
|
auto y = cast()x;
|
|
enum mangle_y = typeof(y).mangleof;
|
|
// pragma(msg, "y : " ~ mangle_y);
|
|
enum demangle_x = demangleType(mangle_x);
|
|
enum demangle_y = demangleType(mangle_y);
|
|
static assert ("immutable(" ~ demangle_y ~ ")" == demangle_x);
|
|
}
|