1import core.memory;
2
3// TODO: The following should work, but L10 (second assert) fails.
4version(none) void dotest(T) (T* ptr)
5{
6    GC.clrAttr(ptr, uint.max);
7    assert(GC.getAttr(ptr) == 0);
8
9    GC.setAttr(ptr, GC.BlkAttr.NO_MOVE);
10    assert(GC.getAttr(ptr) == GC.BlkAttr.NO_MOVE);
11
12    GC.clrAttr(ptr, GC.BlkAttr.NO_MOVE);
13    assert(GC.getAttr(ptr) == 0);
14    GC.clrAttr(ptr, GC.BlkAttr.NO_MOVE);
15    assert(GC.getAttr(ptr) == 0);
16}
17else void dotest(T) (T* ptr)
18{
19    // https://issues.dlang.org/show_bug.cgi?id=21484
20    GC.clrAttr(ptr, uint.max);
21    GC.setAttr(ptr, GC.BlkAttr.NO_MOVE);
22    GC.getAttr(ptr);
23}
24
25void main ()
26{
27    auto ptr = new int;
28    dotest!(const(int))(ptr);
29    dotest!(int)(ptr);
30}
31