/*
REQUIRED_ARGS:-preview=dip1021
TEST_OUTPUT:
---
fail_compilation/failob1.d(104): Error: variable `failob1.test1.a1` is left dangling at return
fail_compilation/failob1.d(105): Error: variable `failob1.test2.a2` is left dangling at return
fail_compilation/failob1.d(107): Error: variable `failob1.test4.s4` is left dangling at return
fail_compilation/failob1.d(108): Error: variable `failob1.test5.dg5` is left dangling at return
fail_compilation/failob1.d(115): Error: variable `failob1.test12.p12` is left dangling at return
---
*/

struct S { int i; int* f; }
struct T { int i; const(int)* f; }
class C { int i; int* f; }

#line 100

@live
{
    // Test what is and is not a trackable variable
    void test1(int[] a1) { }            // error
    void test2(int*[3] a2) { }          // error
    void test3(const int*[3] a) { }     // ok
    void test4(S s4) { }                // error
    void test5(int delegate() dg5) { }  // error
    void test6(const(int*)[3] a) { }    // ok
    void test7(const(int)*[3] a) { }    // ok
    void test8(const(int)* p) { }       // ok
    void test9(T t) { }                 // ok
    void test10(C c) { }                // ok
    void test11(int i) { }              // ok
    void test12(int* p12) { }           // error
}
