[Issue 14055] New: CTFE internal error with uninitialized array: Assertion failure: '0' on line 318 in file 'interpret.c'

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Mon Jan 26 17:21:26 PST 2015


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

          Issue ID: 14055
           Summary: CTFE internal error with uninitialized array:
                    Assertion failure: '0' on line 318 in file
                    'interpret.c'
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Windows
            Status: NEW
          Severity: normal
          Priority: P1
         Component: DMD
          Assignee: nobody at puremagic.com
          Reporter: nairolf at online.de

DMD 2.066.1 / Windows 7 64-bit
---

struct S
{
    static returnsFoo()
    {
        uint[1] foo = void;
        return foo;
    }

    static enum fooEnum = returnsFoo(); // Line 9
    static uint[1] fooArray = fooEnum[];
}

---

> dmd bug.d -main
bug.d(9): Error: uninitialized variable 'foo' cannot be returned from CTFE
Error: CTFE internal error: ErrorExp in bug.d(9)

Assertion failure: '0' on line 318 in file 'interpret.c'

abnormal program termination

---

I found 3 ways to influence the error:
- Remove "uint[1]" from line 10: Internal error disappears, compilation error
(rightfully) stays
- Replace "enum" with "immutable" (or const) in line 9: ErrorExp now in line 5
instead of 9
- Replace all static arrays with dynamic arrays ("[1]" -> "[]"): Internal error
disappears, compilation error message changes (more detailed)

The line with assert(0) in interpret.c:
https://github.com/D-Programming-Language/dmd/blob/v2.066.1/src/interpret.c#L318

--


More information about the Digitalmars-d-bugs mailing list