[Issue 5803] Inaccuracies in the specification of the grammar

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Mar 31 13:14:58 PDT 2011


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



--- Comment #4 from Don <clugdbug at yahoo.com.au> 2011-03-31 13:11:27 PDT ---
(In reply to comment #3)
> (In reply to comment #1)
> > One fairly big mistake in there: there seems to be confusion between
> > StructLiteral and StructStaticInitializer. 
> 
> Maybe I oversimplified here, but I was hoping for a generalization of the
> array/struct initializer and literals. 
> 
> IIRC the StructStaticInitializer is said to be deprecated anyway, but it might
> actually be possible to interpret it as a literal inside expressions with
> implicite conversions, similar how dmd deals with arrays, because the parser
> cannot decide which type of array a variable is declared as until the semantic
> pass.

They have very different semantics. Given only a StructLiteral, you can always
work out what type it is. But with a static initializer, you know nothing. This
might be the only thing in the language like that. It's not implicit
conversion, they don't have an initial type to convert from.

So  auto x = StructLiteral();  works, but auto x = structStaticInitializer
cannot. Consequently, you can use a struct literal almost anywhere you can use
a struct variable.

I've tried to get them deprecated but I don't know if that will happen. They
are one of the most complicated things in the language, and the implementation
is *full* of bugs.

-- 
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