|
Archives
D Programming
digitalmars.Ddigitalmars.D.bugs digitalmars.D.dtl digitalmars.D.ide digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger D.gnu D C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript electronics |
digitalmars.D.bugs - [Issue 3775] New: Compiler segfaults on cast(string) stdin.byLine.
http://d.puremagic.com/issues/show_bug.cgi?id=3775 Summary: Compiler segfaults on cast(string) stdin.byLine. Product: D Version: 2.040 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: blood.of.life gmail.com --- Comment #0 from Bernard Helyer <blood.of.life gmail.com> 2010-02-05 18:36:45 PST --- Apologies if this is a duplicate, I couldn't see anything *obvious*. I'm sure this is invalid code, but I got on to doing this (don't ask): --- module segfault; import std.stdio; void main() { foreach (line; cast(string) stdin.byLine) {} } --- Which leads to: --- $ dmd segfault Segmentation fault --- Needless to say, no object or executable file is produced. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- Feb 05 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3775 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Version|2.040 |1.00 Summary|Segfault(cast.c): on |Segfault(cast.c): casting |cast(string) stdin.byLine. |no-parameter template | |function using property | |syntax --- Comment #1 from Don <clugdbug yahoo.com.au> 2010-02-09 06:10:02 PST --- Reduced test case also segfaults on D1, even ancient ones like DMD0.175. struct Bug3775 { static int byLine()() { return 1; } } static assert( cast(int) Bug3775.byLine); Somehow, in DotIdExp::semantic, it has no type. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- Feb 09 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3775 --- Comment #2 from Don <clugdbug yahoo.com.au> 2010-02-09 11:28:25 PST --- ROOT CAUSE: This is an interaction between IFTI and property syntax. PATCH: At the end of CastExp::semantic, make sure that the function has a type. Index: expression.c =================================================================== --- expression.c (revision 373) +++ expression.c (working copy) -7796,7 +7796,11 // BUG: Check for casting array types, such as void[] to int*[] } - + if (!e1->type && e1->op==TOKdottd) + { + error("%s is a template and cannot be called with property syntax", e1->toChars()); + return new ErrorExp(); + } e = e1->castTo(sc, to); return e; } ===== Some similar cases cause the compiler to do strange things (see below), so I'm not completely satisfied with the patch. But let's just fix the segfault. struct Bug3775 { static int byLine()() { return 1; } } void main(){ auto xxx = Bug3775.byLine; } // accepted; xxx is an int. void main(){ int xxx = Bug3775.byLine; } // rejected: (Bug3775).byLine() has no value -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- Feb 09 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3775 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bugzilla digitalmars.com --- Comment #3 from Walter Bright <bugzilla digitalmars.com> 2010-02-11 22:55:17 PST --- changeset 378 and 379 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- Feb 11 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3775 Kosmonaut <Kosmonaut tempinbox.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |Kosmonaut tempinbox.com --- Comment #4 from Kosmonaut <Kosmonaut tempinbox.com> 2010-02-12 11:46:05 PST --- (In reply to comment #3)changeset 378 and 379 Feb 12 2010
|