[Issue 6784] Compile-time constant assigned with a runtime value

2014-11-05 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=6784

--- Comment #6 from hst...@quickfur.ath.cx ---
No idea, should the bug be reopened for D1-only?

--


[Issue 6784] Compile-time constant assigned with a runtime value

2014-11-05 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=6784

--- Comment #5 from yebblies  ---
Does it still exist in D1?

--


[Issue 6784] Compile-time constant assigned with a runtime value

2014-11-05 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=6784

hst...@quickfur.ath.cx changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||hst...@quickfur.ath.cx
 Resolution|--- |WORKSFORME

--- Comment #4 from hst...@quickfur.ath.cx ---
Tested on git HEAD, now the compiler correctly issues an error:

--
test.d(4): Error: value of 'this' is not known at compile time
--

The test code was modified to use size_t instead of uint, since on 64-bit
platforms args.length is ulong, and the compiler will complain that you can't
assign ulong to uint. But that's irrelevant to this bug.

--


[Issue 6784] Compile-time constant assigned with a runtime value

2012-02-22 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=6784



--- Comment #3 from Don  2012-02-22 11:59:55 PST ---
FWIW, this patch in optimize.c, DotVarExp::optimize() fixes the bug. But, the
exclusion of TOKassocarrayliteral is just a hack.


if (e && e->op == TOKstructliteral)
{   StructLiteralExp *sle = (StructLiteralExp *)e;
VarDeclaration *vf = var->isVarDeclaration();
if (vf)
{
Expression *e = sle->getField(type, vf->offset);
if (e && e != EXP_CANT_INTERPRET)
return e;
}
}
+   else if (result & WANTinterpret && (!e || e->op != TOKassocarrayliteral))
+error("%s cannot be evaluated at compile time", e1->toChars());

return this;
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 6784] Compile-time constant assigned with a runtime value

2012-02-22 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=6784



--- Comment #2 from Don  2012-02-22 01:14:30 PST ---
The error message should only happen when result & WANTinterpret.

But, the problem is, as usual, those %&/$# AAs. The builtin AA properties
aren't converted into function calls.
Rather than add another hack for this, it's probably better to wait for bug
5590 to be pulled in.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 6784] Compile-time constant assigned with a runtime value

2012-01-31 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=6784


yebblies  changed:

   What|Removed |Added

 CC||yebbl...@gmail.com
   Platform|x86 |All
Version|D2  |D1 & D2
 AssignedTo|nob...@puremagic.com|clugd...@yahoo.com.au
 OS/Version|Windows |All


--- Comment #1 from yebblies  2012-02-01 13:09:43 EST ---
Related to Issue 2414.

What differs here is that
enum uint y = x

Is translated to 
enum uint y = this.x

And DotIdExp::optimize does not turn this into a constant value, and there is
no error when it fails when called with result & WANTinterpret.

Unfortunately adding an error causes problems with other code, presumably
because DotIdExp::optimize is use from other places like CallExp::optimize that
expect it to just try and finish without errors.

Reassigning to Don as he fixed 2414 and understands the
constfolding/interpreter code a lot better than I do.

Probably applies to D1/const variables too.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---