digitalmars.D.bugs - [Issue 4529] New: dmd crash with writeln of functions
- d-bugmail puremagic.com (24/24) Jul 28 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4529
- d-bugmail puremagic.com (10/10) Aug 29 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4529
- d-bugmail puremagic.com (29/29) Nov 03 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4529
- d-bugmail puremagic.com (12/12) Nov 11 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4529
http://d.puremagic.com/issues/show_bug.cgi?id=4529
Summary: dmd crash with writeln of functions
Product: D
Version: D2
Platform: x86
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody puremagic.com
ReportedBy: bearophile_hugs eml.cc
D2 code, compiled with dmd 2.047, causes a crash of the compiler:
import std.stdio;
void main() {
string a();
writeln(typeid(typeof(a)));
string function() b;
writeln(typeid(typeof(b)));
}
--
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=4529
Andrej Mitrovic <andrej.mitrovich gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |andrej.mitrovich gmail.com
19:03:02 PDT ---
This affects 2.048 too.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 29 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4529
REDUCED TEST CASE:
int bug4529a() { return 0; }
int function() bug4529b;
auto ivorBomb1 = typeid(typeof(bug4529a));
auto ivorBomb2 = typeid(typeof(bug4529b));
Note that swapping the order of the two
typinf.c, Type::getTypeInfo() line 152.
The crash is because vtinfo hasn't been initialized. And this happens because
we have a funny situation where vtinfo has been set up for the pointee (which
is a function), but not yet for the pointer (which is a pointer to a function).
Possibly a more complete solution would be to disallow typeof(X) where X is a
function; if so, an assert(vtinfo) should still be added at this line.
------
t->vtinfo->toObjFile(global.params.multiobj);
}
}
}
+ if (!vtinfo)
+ vtinfo = t->vtinfo;
Expression *e = new VarExp(0, t->vtinfo);
e = e->addressOf(sc);
e->type = t->vtinfo->type; // do this so we don't get redundant
dereference
return e;
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 03 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4529
Walter Bright <bugzilla digitalmars.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |bugzilla digitalmars.com
Resolution| |FIXED
19:01:16 PST ---
http://www.dsource.org/projects/dmd/changeset/750
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 11 2010









d-bugmail puremagic.com 