digitalmars.D.bugs - [Issue 1418] New: tupleof bug on nested classes
- d-bugmail puremagic.com (40/40) Aug 13 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1418
- Jarrett Billingsley (3/8) Aug 13 2007 It's 'this.outer'. I'm surprised that it shows up in the tupleof, thoug...
- d-bugmail puremagic.com (33/33) Jul 28 2010 http://d.puremagic.com/issues/show_bug.cgi?id=1418
- d-bugmail puremagic.com (12/12) Aug 05 2010 http://d.puremagic.com/issues/show_bug.cgi?id=1418
http://d.puremagic.com/issues/show_bug.cgi?id=1418
Summary: tupleof bug on nested classes
Product: D
Version: 1.020
Platform: PC
OS/Version: Windows
Status: NEW
Keywords: spec
Severity: normal
Priority: P2
Component: DMD
AssignedTo: bugzilla digitalmars.com
ReportedBy: yanikibo gmail.com
.tupleof accesses an extra (unknown) member on nested classes.
The following example shows this bug on dmd 1.020 and 2.003, also gdc gives a
similar result
--- main.d ---
import std.stdio;
class A
{
char name = 'A';
class B
{
char name = 'B';
}
}
void main()
{
class C
{
char name = 'C';
}
A a = new A;
a.B b = a.new B;
C c = new C;
writefln(a.tupleof); // prints: A
writefln(b.tupleof); // prints: B main.A
writefln(c.tupleof); // prints: C 0000
}
--
Aug 13 2007
<d-bugmail puremagic.com> wrote in message news:bug-1418-3 http.d.puremagic.com/issues/...http://d.puremagic.com/issues/show_bug.cgi?id=1418 .tupleof accesses an extra (unknown) member on nested classes. The following example shows this bug on dmd 1.020 and 2.003, also gdc gives a similar resultIt's 'this.outer'. I'm surprised that it shows up in the tupleof, though.
Aug 13 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1418
Don <clugdbug yahoo.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |patch
tupleof shouldn't be including hidden 'this' members.
PATCH: mtype.c, line 7138, TypeClass::dotExp()
if (ident == Id::tupleof)
{
/* Create a TupleExp
*/
e = e->semantic(sc); // do this before turning on noaccesscheck
Expressions *exps = new Expressions;
exps->reserve(sym->fields.dim);
for (size_t i = 0; i < sym->fields.dim; i++)
{ VarDeclaration *v = (VarDeclaration *)sym->fields.data[i];
+ // Don't include hidden 'this' pointer
+ if (v->isThisDeclaration())
+ continue;
Expression *fe = new DotVarExp(e->loc, e, v);
exps->push(fe);
}
e = new TupleExp(e->loc, exps);
sc = sc->push();
sc->noaccesscheck = 1;
e = e->semantic(sc);
sc->pop();
return e;
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 28 2010
http://d.puremagic.com/issues/show_bug.cgi?id=1418
Walter Bright <bugzilla digitalmars.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |bugzilla digitalmars.com
Resolution| |FIXED
23:39:40 PDT ---
http://www.dsource.org/projects/dmd/changeset/604
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 05 2010









"Jarrett Billingsley" <kb3ctd2 yahoo.com> 