Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
August 11, 2010 [Issue 4623] New: Non-integer type allowed as static array size | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=4623 Summary: Non-integer type allowed as static array size Product: D Version: D1 & D2 Platform: All OS/Version: Linux Status: NEW Severity: major Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: ibuclaw@ubuntu.com --- Comment #0 from Iain Buclaw <ibuclaw@ubuntu.com> 2010-08-11 11:44:22 PDT --- The code: void main() { int[0.128] a; } Should not compile, rather error with the message stating that either the size of array 'a' has non-integer type, or that the compiler cannot implicitly convert expression (0.128) of type double to uint. See: http://dstress.kuehne.cn/nocompile/o/opIndex_05.d Regards -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
September 29, 2010 [Issue 4623] Non-integer type allowed as static array size | ||||
---|---|---|---|---|
| ||||
Posted in reply to Iain Buclaw | http://d.puremagic.com/issues/show_bug.cgi?id=4623 Don <clugdbug@yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch CC| |clugdbug@yahoo.com.au --- Comment #1 from Don <clugdbug@yahoo.com.au> 2010-09-29 12:43:23 PDT --- PATCH mtype.c, TypeSArray::semantic(), line 3344. dinteger_t d1 = dim->toInteger(); - dim = dim->castTo(sc, tsize_t); + dim = dim->implicitCastTo(sc, Type::tsize_t); dim = dim->optimize(WANTvalue); dinteger_t d2 = dim->toInteger(); if (dim->op == TOKerror) goto Lbaddim; if (d1 != d2) goto Loverflow; ... and further down: Loverflow: error(loc, "index %jd overflow for static array", d1); + Lbaddim: dim = new IntegerExp(0, 1, tsize_t); TEST CASE for test suite //bug 4623 static assert( !is (typeof(() {int[123.1] x; return x; }))); I've done this patch in a relatively complicated way, so that something like: int[7654321.0] bug4623b; generates only one error message, not two. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
September 29, 2010 [Issue 4623] Non-integer type allowed as static array size | ||||
---|---|---|---|---|
| ||||
Posted in reply to Iain Buclaw | http://d.puremagic.com/issues/show_bug.cgi?id=4623 --- Comment #2 from Iain Buclaw <ibuclaw@ubuntu.com> 2010-09-29 14:50:14 PDT --- Can't you catch it in the lexer? Just thinking out loud... -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
September 30, 2010 [Issue 4623] Non-integer type allowed as static array size | ||||
---|---|---|---|---|
| ||||
Posted in reply to Iain Buclaw | http://d.puremagic.com/issues/show_bug.cgi?id=4623 --- Comment #3 from Iain Buclaw <ibuclaw@ubuntu.com> 2010-09-29 17:39:15 PDT --- You can catch it in parse.c @@ -2428,6 +2428,12 @@ { //printf("it's type[expression]\n"); inBrackets++; + + if (token.value != TOKint32v && token.value != TOKuns32v && + token.value != TOKint64v && token.value != TOKuns64v && + peekNext() == TOKrbracket) + error("I should be a an integral value, not [%s]", token.toChars()); + Expression *e = parseAssignExp(); // [ expression ] if (token.value == TOKslice) { I certainly don't mind either way. Your patch works just great, thanks! -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
September 30, 2010 [Issue 4623] Non-integer type allowed as static array size | ||||
---|---|---|---|---|
| ||||
Posted in reply to Iain Buclaw | http://d.puremagic.com/issues/show_bug.cgi?id=4623 --- Comment #4 from Don <clugdbug@yahoo.com.au> 2010-09-30 06:26:43 PDT --- (In reply to comment #3) > You can catch it in parse.c [snip] You can, but then it doesn't catch things like: const float f = 1.23; int[f] z; > I certainly don't mind either way. Your patch works just great, thanks! It looks as though you got that case from dstress. Have you been running the dstress tests? If you have, I'd be very interested to see the results. I believe that all the compiler ICE bugs are fixed, but I have no idea about how many others are still failing. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
October 01, 2010 [Issue 4623] Non-integer type allowed as static array size | ||||
---|---|---|---|---|
| ||||
Posted in reply to Iain Buclaw | http://d.puremagic.com/issues/show_bug.cgi?id=4623 --- Comment #5 from Iain Buclaw <ibuclaw@ubuntu.com> 2010-10-01 11:18:20 PDT --- I haven't ran dstress using the DMD compiler. I think I stumbled upon the case somewhere from an archived message on the ML that probably got forgotten about. I wouldn't go as far as saying all compiler ICE bugs are fixed just yet (I raised an issue recently with CTFE with a patch supplied, for example), though they certainly are very far and few between now. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
October 02, 2010 Re: [Issue 4623] Non-integer type allowed as static array size | ||||
---|---|---|---|---|
| ||||
Posted in reply to Iain Buclaw | d-bugmail@puremagic.com wrote: > http://d.puremagic.com/issues/show_bug.cgi?id=4623 > > > > --- Comment #5 from Iain Buclaw <ibuclaw@ubuntu.com> 2010-10-01 11:18:20 PDT --- > I haven't ran dstress using the DMD compiler. I think I stumbled upon the case > somewhere from an archived message on the ML that probably got forgotten about. Ah, OK. > I wouldn't go as far as saying all compiler ICE bugs are fixed just yet (I > raised an issue recently with CTFE with a patch supplied, for example), though > they certainly are very far and few between now. I was only referring to the ICE bugs in dstress. |
October 09, 2010 [Issue 4623] Non-integer type allowed as static array size | ||||
---|---|---|---|---|
| ||||
Posted in reply to Iain Buclaw | http://d.puremagic.com/issues/show_bug.cgi?id=4623 Walter Bright <bugzilla@digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla@digitalmars.com Resolution| |FIXED --- Comment #6 from Walter Bright <bugzilla@digitalmars.com> 2010-10-08 18:18:23 PDT --- http://www.dsource.org/projects/dmd/changeset/712 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation