digitalmars.D.bugs - [Issue 420] New: mixin make dmd break
- d-bugmail puremagic.com (42/42) Oct 09 2006 http://d.puremagic.com/issues/show_bug.cgi?id=420
- d-bugmail puremagic.com (18/18) Oct 16 2006 http://d.puremagic.com/issues/show_bug.cgi?id=420
- d-bugmail puremagic.com (9/9) Oct 18 2006 http://d.puremagic.com/issues/show_bug.cgi?id=420
http://d.puremagic.com/issues/show_bug.cgi?id=420
Summary: mixin make dmd break
Product: D
Version: 0.169
Platform: PC
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: bugzilla digitalmars.com
ReportedBy: davidl 126.com
import std .stdio ;
template MGettor (alias Fld) {
typeof(Fld) opCall () {
writefln("getter");
return Fld;
}
}
class Foo {
int a = 1 ,
b = 2 ;
mixin MGettor!(a) geta;
mixin MGettor!(b) getb;
}
void main () {
auto foo = new Foo;
writefln(foo.geta);
writefln(foo.getb);
}
error from dmd:
parse a
semantic a
semantic2 a
semantic3 a
code a
generating code for function 'opCall'
generating code for function 'opCall'
generating code for function 'main'
foo dotexp mixin MGettor!(a);
Internal error: e2ir.c 772
--
Oct 09 2006
http://d.puremagic.com/issues/show_bug.cgi?id=420
This is the same internal error as bug 354 which also deals with template usage
so it might be a dup. The code samples are similar, though definitly not the
same.
I reduced the test case a bit:
import std.stdio;
template MGettor () {
void opCall () {}
}
class Foo {
mixin MGettor!() geta;
}
void main () {
Foo foo = new Foo;
writefln(foo.geta);
}
--
Oct 16 2006
http://d.puremagic.com/issues/show_bug.cgi?id=420
bugzilla digitalmars.com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
Fixed DMD 0.170
--
Oct 18 2006









d-bugmail puremagic.com 