www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 18949] New: Array literals don't work with betterc

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

          Issue ID: 18949
           Summary: Array literals don't work with betterc
           Product: D
           Version: D2
          Hardware: x86
                OS: Windows
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: johnnymarler gmail.com

--- bug.d
void takeArray(const(int)[] array)
{
}
void bar()
{
    takeArray([1, 2, 3]);
}


 dmd -c -betterc bug.d
bug.d(6): Error: `TypeInfo` cannot be used with -betterC It looks like passing an array literal to a function parameter creates a dependency on `TypeInfo`. It think this has to do with how D is handling the array literal. It might be trying to allocate it using the GC which is causing it to depend on GC. You can make the example work if you change bar to the following: void bar() { static arr = [1, 2, 3]; takeArray(arr); } However, I think both versions should work. Otherwise, a better error message should be in order, i.e. bug.d(6): dynamic array literals are not supported in betterC. you can fix this by assigning the array to a static variable instead. --
Jun 05 2018