digitalmars.D.bugs - [Issue 5026] New: Incomplete mixin expression + char[] to char assignment = assertion failure in expression.c
- d-bugmail puremagic.com (26/26) Oct 09 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5026
- d-bugmail puremagic.com (48/48) Oct 18 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5026
- d-bugmail puremagic.com (32/32) Oct 18 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5026
- d-bugmail puremagic.com (10/10) Oct 19 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5026
- d-bugmail puremagic.com (9/9) Oct 20 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5026
http://d.puremagic.com/issues/show_bug.cgi?id=5026 Summary: Incomplete mixin expression + char[] to char assignment = assertion failure in expression.c Product: D Version: D1 Platform: Other OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: strtr despam.it Assertion failure: '0' on line 1342 in file 'expression.c' void foo() { char[0] code; code[0] = ""; } struct Bar { int i = mixin(foo()); } void main() {} -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 09 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5026 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch There are two independent issues here. The superficial diagnostic bug is that mixin() shouldn't accept a void function at all. expression.c, line 5569. Actually the second error message here is optional, since there should have already been a "cannot be evaluated at compile time" error message. Expression *CompileExp::semantic(Scope *sc) { #if LOGSEMANTIC printf("CompileExp::semantic('%s')\n", toChars()); #endif UnaExp::semantic(sc); e1 = resolveProperties(sc, e1); + if (!e1->type->isString()) { + error("argument to mixin must be a string, not (%s)\n", e1->toChars()); + return new ErrorExp(); + } e1 = e1->optimize(WANTvalue | WANTinterpret); if (e1->op != TOKstring) - { error("argument to mixin must be a string, not (%s)\n", e1->toChars()); + { error("argument to mixin must be evaluated at compile time"); return new ErrorExp(); } The more important bug, which causes the ICE, is that declaration.c line 1212 is gagging the results. Then, interpret.c runs semantic3 on the function while results are gagged. The errors get suppressed, so garbage gets passed to the back end. func.c, semantic3(), line 1592. sc2->callSuper = 0; sc2->pop(); } + if (global.gag && global.errors) + semanticRun = PASSsemanticdone; // Ensure errors get reported again + else semanticRun = PASSsemantic3done; } void FuncDeclaration::toCBuffer(OutBuffer *buf, HdrGenState *hgs) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 18 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5026 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Version|D1 |D1 & D2 And a couple of test cases. string bug5026() { char[0] code; code[0] = "0"; return "0"; } template compiles(int T) { bool compiles = true; } // ICE(glue.c) static assert(!is(typeof(compiles!(mixin(bug5026()))))); // ICE(expression.c) static assert(!is(typeof(mixin(bug5026())))); // This example is an accepts-valid bug string bug5026c() { char[0] code; code[0] = 7; return "0"; } static assert(!is(typeof(mixin(bug5026c())))); -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 18 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5026 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bugzilla digitalmars.com 22:52:31 PDT --- http://www.dsource.org/projects/dmd/changeset/721 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 19 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5026 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 20 2010