www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 7583] New: [CTFE] Pushing to Token array results in interpreter assert

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7583

           Summary: [CTFE] Pushing to Token array results in interpreter
                    assert
           Product: D
           Version: D2
          Platform: x86_64
        OS/Version: Linux
            Status: NEW
          Keywords: CTFE, ice
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: aneas gmx.net



The following code results in a CTFE error. The bad line is "array_of_tuples ~=
Tuple!(int, int)(0, 0);"


import std.typecons;

void function_evaluated_at_compiletime() {
    Tuple!(int, int)[] array_of_tuples;
    array_of_tuples ~= Tuple!(int, int)(0, 0);
}

void main() {
    mixin(function_evaluated_at_compiletime());
}


$ dmd main.d
dmd: interpret.c:94: Expression* CtfeStack::getValue(VarDeclaration*):
Assertion `v->ctfeAdrOnStack >= 0 && v->ctfeAdrOnStack < stackPointer()'
failed.
Aborted

DMD64 D Compiler v2.058

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 25 2012
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7583


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |clugdbug yahoo.com.au
            Summary|[CTFE] Pushing to Token     |[CTFE] ICE with tuple,
                   |array results in            |alias this, and ~=
                   |interpreter assert          |



Reduced test case. Seems to be very complicated.

----------------
template Tup7583(E...) { alias E Tup7583; }

struct S7583
{
    Tup7583!(float, char) field;
    alias field this;    
    this(int x) {    }
}


int bug7583() {
    S7583[] arr;
    arr ~= S7583(0);
    return 1;
}

static assert (bug7583());

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 27 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7583


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[CTFE] ICE with tuple,      |[CTFE] ICE with tuple and
                   |alias this, and ~=          |alias this



This is a front-end bug. Happens with == as well as ~=.
The front-end creates a temporary tuple variable __tup5.
Somehow the declaration of __tup5 gets removed. The ICE is because it's used
before being declared.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 28 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7583




Commit pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/bcfd90aae05bd6259212ec870b2c037569029d77


fix Issue 7583 - [CTFE] ICE with tuple and alias this

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 29 2012
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7583


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |bugzilla digitalmars.com
         Resolution|                            |FIXED


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