/*
TEST_OUTPUT:
---
fail_compilation/test15989.d(39): Error: variable `test15989.main.ctRegex` : Unable to initialize enum with class or pointer to struct. Use static const variable instead.
fail_compilation/test15989.d(48): Error: variable `test15989.test.c` : Unable to initialize enum with class or pointer to struct. Use static const variable instead.
fail_compilation/test15989.d(49): Error: cannot use non-constant CTFE pointer in an initializer `new int(3)`
---
*/

// https://issues.dlang.org/show_bug.cgi?id=15989

import core.stdc.stdio;

interface Kickstart{
    bool foo( int );
}

class ShiftOr : Kickstart
{
    bool foo( int i )
    {
        printf("i = %d\n", i);
        return false;
    }
}

struct Regex
{
    Kickstart kickstart;
}

Regex regex()
{
    return Regex(new ShiftOr());
}

void main()
{
    enum ctRegex = regex();
    Regex r = ctRegex;
    r.kickstart.foo(7);
}

class C { }

void test()
{
    enum c = new C();
    enum pi = new int(3);
}
