digitalmars.D.bugs - [Issue 15153] New: CTFE failes to access second dimension of static
- via Digitalmars-d-bugs (54/54) Oct 04 2015 https://issues.dlang.org/show_bug.cgi?id=15153
https://issues.dlang.org/show_bug.cgi?id=15153 Issue ID: 15153 Summary: CTFE failes to access second dimension of static arrays Product: D Version: D2 Hardware: x86_64 OS: Windows Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: tobias.marstaller gmail.com Created attachment 1553 --> https://issues.dlang.org/attachment.cgi?id=1553&action=edit Both snippets with compiler output CTFE fails to access the second dimension of static arrays (even if explicitly given). This snipped throws the compiler error "variable nCols cannot be read at compile time.": -------------------------------------------------------------------------------- static int[][] staticTable = [[1, 2], [3, 4]]; static int[][] staticallyDerivedTable = deriveTable(staticTable); static int[][] deriveTable(int[][] table) { int nRows = table.length; int nCols = table[0].length; int[nCols][nRows] newTable; // ... do something return newTable; } -------------------------------------------------------------------------------- The error occurs in deriveTable(int[][]) where newTable is declared. But even if the array sizes are explicitly given, the error stays: -------------------------------------------------------------------------------- static int[2][2] staticTable = [[1, 2], [3, 4]]; static int[2][2] staticallyDerivedTable = deriveTable(staticTable); static int[2][2] deriveTable(int[2][2] table) { int nRows = table.length; int nCols = table[0].length; int[nCols][nRows] newTable; // ... do something return newTable; } -------------------------------------------------------------------------------- AFAICT my code is correct; in both cases the required information is available at compile time. table.length does not throw an error so i guess the basics are working fine already. Since the staticTable is of fixed size, this is not that much of an issue to me because i can hard-code the sizes; but that should not be required. --
Oct 04 2015