Thread overview
[Issue 5147] New: [CTFE] Return fixed-sized matrix
Oct 31, 2010
Michal Minich
Apr 09, 2011
Don
October 31, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5147

           Summary: [CTFE] Return fixed-sized matrix
           Product: D
           Version: D2
          Platform: x86
        OS/Version: Windows
            Status: NEW
          Keywords: rejects-valid
          Severity: enhancement
          Priority: P2
         Component: DMD
        AssignedTo: nobody@puremagic.com
        ReportedBy: bearophile_hugs@eml.cc


--- Comment #0 from bearophile_hugs@eml.cc 2010-10-31 14:20:21 PDT ---
This is borderline between enhancement and rejects-valid bug report.

DMD 2.050 doesn't support this code:


int[1][1] foo() {
    int[1][1] a;
    return a;
}
enum int[1][1] m1 = foo();
immutable int[1][1] m2 = foo();
void main() {}


Errors generated:

test.d(2): Error: Slice operation a[] = 0 cannot be evaluated at compile time
test.d(5): Error: cannot evaluate foo() at compile time


This code is very useful to initialize an enum/immutable global matrix.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
October 31, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5147


Michal Minich <michal.minich@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |michal.minich@gmail.com


--- Comment #1 from Michal Minich <michal.minich@gmail.com> 2010-10-31 14:49:37 PDT ---
I would like to point out that this code works:

int[1] foo2() {
    int[1] a;
    return a;
}
enum int[1] m3 = foo2();
immutable int[1] m4 = foo2();
void main() {}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
October 31, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5147



--- Comment #2 from bearophile_hugs@eml.cc 2010-10-31 16:31:43 PDT ---
See also bug 5081 for a different solution

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
April 09, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5147


Don <clugdbug@yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |clugdbug@yahoo.com.au
         Resolution|                            |FIXED
           Severity|enhancement                 |normal


--- Comment #3 from Don <clugdbug@yahoo.com.au> 2011-04-08 21:20:10 PDT ---
This is definitely a bug, not an enhancement. It applies to any use of multidimensional static arrays in CTFE (not just return values). Thus, it also applies to D1.

Fixed.
D1:
https://github.com/D-Programming-Language/dmd/commit/ef2a0f1da10331c4de102ca3e029ea1c1c1a46bf

D2: https://github.com/D-Programming-Language/dmd/commit/0219a5f0dcc88076759a4c472582954d0fb804b0

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------