Bug 2346 – ICE when comparing typedef'd class

Status
RESOLVED
Resolution
FIXED
Severity
major
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2008-09-07T19:17:00Z
Last change time
2015-06-09T05:14:44Z
Keywords
ice-on-valid-code
Assigned to
bugzilla
Creator
jason.james.house

Attachments

IDFilenameSummaryContent-TypeSize
355chunkf.dWork in progress: analogous to a single level B+Treetext/x-dsrc9577

Comments

Comment #0 by jason.james.house — 2008-09-07T19:17:48Z
The code below will cause a segmentation fault when compiled. class foo{this(){}} typedef foo bar; void main(){ foo a; bar b; auto x = (a==b); }
Comment #1 by smjg — 2008-09-09T16:29:27Z
Please remember to assign keywords to bug reports. To everybody reading this: Please look through issues you've reported and check for missing keywords.
Comment #2 by clugdbug — 2009-04-18T03:53:44Z
The code should be accepted, but at least it's easy enough to convert the segfault into an error with line number: e2ir.c line 3612. cdfrom = e1->type->isClassHandle(); + if (!cdfrom){ error("ICE: Bugzilla 2346"); return e;} cdto = t->isClassHandle(); if (cdfrom->isInterfaceDeclaration()) //<------ it is segfaulting here {
Comment #3 by charleshixsn — 2009-05-10T14:56:04Z
Created attachment 355 Work in progress: analogous to a single level B+Tree Internal error: e2ir.c 4339 This is code that was compiling using Digital Mars D Compiler v2.029 dmd -c -Dddocs chunkf.d until I did a little bit of refactoring. It's not clear to me how to reduce this and still retain the error, but if I comment out lines 115-116, //foreach (Wrd w; freqWrd) //{ temp2 [w.name] = w.id; } then the error message goes away. (Of course, it's useless for *my* purposes, but I hope it narrows down what the error could be.)
Comment #4 by clugdbug — 2009-05-11T00:01:36Z
(In reply to comment #3) > Created an attachment (id=355) [details] > Work in progress: analogous to a single level B+Tree > > Internal error: e2ir.c 4339 > > This is code that was compiling using > Digital Mars D Compiler v2.029 > dmd -c -Dddocs chunkf.d > until I did a little bit of refactoring. > > It's not clear to me how to reduce this and still retain the error, but if I > comment out lines 115-116, > //foreach (Wrd w; freqWrd) > //{ temp2 [w.name] = w.id; } > then the error message goes away. (Of course, it's useless for *my* purposes, > but I hope it narrows down what the error could be.) Don't put any more work into it, Walter has fixed this bug in the next release.
Comment #5 by clugdbug — 2009-05-14T07:29:48Z
Fixed DMD2.030 and 1.045