[Issue 7432] DMD allows variables to be declared as pure

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sun Aug 18 21:52:10 PDT 2013


http://d.puremagic.com/issues/show_bug.cgi?id=7432



--- Comment #15 from Maxim Fomin <maxim at maxim-fomin.ru> 2013-08-18 21:52:09 PDT ---
(In reply to comment #11)
> > In the absence of any explanation of what pure means applied to variables, I
> > can only be assumed that pure cannot be applied to variables, and therefore 
> > any attempt to apply pure to a variable is supposed to fail with a compile 
> > error.
> 
> Except that in most cases, an invalid attribute doesn't result in a compilation
> error - it's ignored. The argument for this is generally that it helps generic
> code, and it makes it easier to do stuff like
> 
> attribute:
> ...
> 
> or
> 
> attribute
> {
> }
> 
> without caring about the items that it doesn't apply to. For instance, you can
> do that with attributes like @safe or @trusted, which have zero effect on
> variables and yet have lots of variables declared in that code. The same goes
> for pure.
> 
> I don't know what the best way to handle this is given that sometimes it is
> useful to have an attribute ignored when it doesn't apply, but it also can be
> quite misleading, and the case where a symbol is explicitly marked with an
> attribute and then that attribute is ignored is particularly bad. Maybe we
> could petition for that particular case to always be an error (which would
> cover this bug), but I don't see it changing for attribute: or attribute {}. I
> don't see a good argument for
> 
> pure foo = "hello";
> 
> being legal though unless the argument is that all invalid attributes are
> ignored (which is not the case).

Perhaps allow to apply storage classes to variables in block declarations like
attribute: or attribute { } and ban them in single variable declarations?

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


More information about the Digitalmars-d-bugs mailing list