[Bug 49] ICE when using tuple over member variable in more than one method

gdc-bugzilla at gdcproject.org gdc-bugzilla at gdcproject.org
Tue Apr 9 06:16:47 PDT 2013


http://bugzilla.gdcproject.org/show_bug.cgi?id=49

--- Comment #5 from Iain Buclaw <ibuclaw at gdcproject.org> 2013-04-09 13:16:47 UTC ---
(In reply to comment #2)
> (In reply to comment #0)
> > test.d:
> > 
> > template Tuple(Stuff ...) {
> >     alias Stuff Tuple;
> > }
> > struct S {
> >     int i;
> >     alias Tuple!i t;
> >     void a() {
> >         auto x = t;
> >     }
> >     void b() {
> >         auto x = t;
> >     }
> > }
> 
> 
> Tracked down to the following:
> 
> void a() {
>   // OK: 'this' has decl context of 'a'
>   (int) x = tuple(this.i);
> }
> 
> void b() {
>   // WRONG: 'this' has decl context of 'a'
>   (int) x = tuple(this.i);
> }


Looks like TupleExp's are cached and re-used.  This is why when the
TupleExp::semantic ran in b() has a parent of 'a'

-- 
Configure bugmail: http://bugzilla.gdcproject.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.


More information about the D.gnu mailing list