[Issue 7694] Internal error: e2ir.c 1251 when calling member function inside struct via alias param

2012-03-28 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7694



--- Comment #5 from github-bugzi...@puremagic.com 2012-03-28 20:02:46 PDT ---
Commit pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/f8d472fed64a174472832d919f65b811fca0a968
Merge pull request #827 from 9rnsr/fix7694

Issue 7694 - Internal error: e2ir.c 1251 when calling member function inside
struct via alias param

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


[Issue 7694] Internal error: e2ir.c 1251 when calling member function inside struct via alias param

2012-03-28 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7694


Walter Bright bugzi...@digitalmars.com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||bugzi...@digitalmars.com
 Resolution||FIXED


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


[Issue 7694] Internal error: e2ir.c 1251 when calling member function inside struct via alias param

2012-03-24 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7694



--- Comment #4 from Dmitry Olshansky dmitry.o...@gmail.com 2012-03-24 
14:28:17 PDT ---
I think the error is tolerable, when I found workaround I just rewrote it to
global template. Less flexible maybe, but works for me.

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


[Issue 7694] Internal error: e2ir.c 1251 when calling member function inside struct via alias param

2012-03-23 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7694


Kenji Hara k.hara...@gmail.com changed:

   What|Removed |Added

   Keywords||pull


--- Comment #2 from Kenji Hara k.hara...@gmail.com 2012-03-23 22:38:49 PDT ---
https://github.com/D-Programming-Language/dmd/pull/827

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


[Issue 7694] Internal error: e2ir.c 1251 when calling member function inside struct via alias param

2012-03-23 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7694



--- Comment #3 from Kenji Hara k.hara...@gmail.com 2012-03-23 22:50:19 PDT ---
(In reply to comment #0)
 As is the following gives assert on line 8 as expected, 
 uncomment bootstrap to get Internal error: e2ir.c 1251
 
 template Instruction(int ir)
 {
 void match(alias s, alias  m)(){ m.nextState(); }
 }
 
 
 struct T{
 void nextState(){  assert(0); }
 /*void bootstrap()
 {
 return Instruction!(0).match!(this, this)();
 }*/
 }
 
 T t;
 void main()
 {
 
 //  t.bootstrap();
   Instruction!(0).match!(t, t)();
 }

With my pull, this code doesn't report ice, but raises following errors:

test.d(11): Error: template instance match!(this,this) cannot use local 'this'
as parameter to non-global template match(alias s,alias m)
test.d(11): Error: template instance match!(this,this) cannot use local 'this'
as parameter to non-global template match(alias s,alias m)

But I think this is a little harsh error. The nested template (function) match
in module template Instruction really needs only one context, that is enclosing
'this' given as alias parameters m and n.

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


[Issue 7694] Internal error: e2ir.c 1251 when calling member function inside struct via alias param

2012-03-22 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7694



--- Comment #1 from Dmitry Olshansky dmitry.o...@gmail.com 2012-03-22 
12:34:05 PDT ---
Minimized test case and a workaround:

void match(alias m)(){ 
m.foo();//removing this line supresses ice in both cases
}

struct T{
void foo(){}
void bootstrap()
{
//next line causes ice
//match!(this)();
//while this works:
alias this p;
match!(p)();

}
}

void main(){}


Apaaerntly it has something to do with plain 'this' being mistreated in when
passed as alias.

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