Thread overview
[Issue 8602] New: Assertion failure
Aug 30, 2012
Ellery Newcomer
[Issue 8602] ICE(mtype.c) string mixin + auto return type + template tuple
Nov 26, 2012
Don
Nov 28, 2012
Don
Nov 28, 2012
Don
Feb 04, 2013
Andrej Mitrovic
Feb 06, 2013
Kenji Hara
August 30, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8602

           Summary: Assertion failure
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody@puremagic.com
        ReportedBy: ellery-newcomer@utulsa.edu


--- Comment #0 from Ellery Newcomer <ellery-newcomer@utulsa.edu> 2012-08-30 14:20:43 PDT ---
dmd 2.060

code:

template ReturnType(func...) if (func.length == 1) { }

struct BinaryOperatorX(string _op, rhs_t,C) {
    ReturnType!(mixin("C.opBinary!(_op,rhs_t)")) RET_T;
}

class MyClass {
    auto opBinary(string op, T)() { }
}

void PydMain() {
    BinaryOperatorX!("+", int, MyClass);
}

fireworks:
dmd: mtype.c:5254: virtual void TypeFunction::toDecoBuffer(OutBuffer*, int):
Assertion `next' failed.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
November 24, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8602


hsteoh@quickfur.ath.cx changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |major


--- Comment #1 from hsteoh@quickfur.ath.cx 2012-11-23 16:30:34 PST ---
This is an internal compiler error; it deserves some attention.

Also, confirmed that it still happens in latest git dmd.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
November 26, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8602


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

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Assertion failure           |ICE(mtype.c) string mixin +
                   |                            |auto return type + template
                   |                            |tuple


--- Comment #2 from Don <clugdbug@yahoo.com.au> 2012-11-26 07:44:06 PST ---
Very marginally simplified. If you take out the "if (func.length == 1)" then it
segfaults instead.
-------------
template ReturnType(func...) if (func.length == 1) { }

struct MyClass {
    auto xopBinary(T)() { }
}

struct BinaryOperatorX() {
    ReturnType!(mixin("MyClass.xopBinary!(int)")) RET_T;
}

void PydMain() {
    BinaryOperatorX!();
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
November 28, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8602



--- Comment #3 from Don <clugdbug@yahoo.com.au> 2012-11-28 00:51:37 PST ---
Further reduced.
------------------
template T8602(func...) if (func.length == 1) { }

struct Bug8602 {
    auto xx() { }
}

T8602!(mixin("Bug8602.xx")) mm;

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
November 28, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8602



--- Comment #4 from Don <clugdbug@yahoo.com.au> 2012-11-28 00:53:41 PST ---
The problem is that at the end of CompileExp::semantic, the result is xx, but the type of xx is still not known because it was a return-type inferred function.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
February 04, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=8602


Andrej Mitrovic <andrej.mitrovich@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |andrej.mitrovich@gmail.com


--- Comment #5 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2013-02-04 13:45:19 PST ---
(In reply to comment #3)
> Further reduced.
> ------------------
> template T8602(func...) if (func.length == 1) { }
> 
> struct Bug8602 {
>     auto xx() { }
> }
> 
> T8602!(mixin("Bug8602.xx")) mm;

The ICE is gone in git-head, now only gives:

Error: T8602!(xx) is used as a type

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
February 06, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=8602


Kenji Hara <k.hara.pg@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |WORKSFORME


--- Comment #6 from Kenji Hara <k.hara.pg@gmail.com> 2013-02-05 21:05:08 PST ---
(In reply to comment #5)
> (In reply to comment #3)
> > Further reduced.
> > ------------------
> > template T8602(func...) if (func.length == 1) { }
> > 
> > struct Bug8602 {
> >     auto xx() { }
> > }
> > 
> > T8602!(mixin("Bug8602.xx")) mm;
> 
> The ICE is gone in git-head, now only gives:
> 
> Error: T8602!(xx) is used as a type

This is correct behavior, because T8602!(Bug8602.xx) does not make a type.

Maybe this is a dup of bug 5933.

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