improving the D spec
Leandro Lucarella
llucax at gmail.com
Mon Jun 29 18:46:26 PDT 2009
Christian Kamm, el 29 de junio a las 22:20 me escribiste:
>
> In the wake of the recent 'state of D' articles, I've looked at the D1 spec
> bugs on bugzilla and grouped them by topic. I've also separated them into
> issues that probably need compiler changes (+) and bugs that might be
> resolved by a spec change (*).
>
> My plan is to go through the issues and to write up spec patches where the
> resolution is clear. This should cover a fair number of bugs, in particular
> those of the 'missing documentation' kind. If there's doubt as to what
> should be done, I'll assign to Walter and might bring the discussion to the
> newsgroup.
>
> To show that this - apart from being useful for compiler developers and
> users alike - is far from boring, I'll present some facts I learned while
> experimenting with template ordering and IFTI in a separate post.
>
> Unfortunately, the list is very long and thus I hope that more people will
> contribute patches. Sure, fixing bugs in the spec doesn't change the
> compiler or add a cool new feature, but I sincerely hope that it will make D
> more mature and simpler to implement.
Thank you for the great job. Following your example, I created a meta-bug
for each category to easily keep track of them =)
This is the extended list with the meta-bugs:
> major missing documentation
> + 3007 stringof
> * IFTI
No meta-bug, it's just one bug...
> grammar & mangles
> * 1466 maximal munch can't lex 1..3 correctly
> * 2734 float literal tokenization
> * 1351 multiple variable declarations with auto
> * 2392 parsing ambiguity: function pointer declaration / function call
> * 1351, 2406
> + 3029 ambiguous array value mangling for template alias args
> + 3043 more ambiguous template mangles
Any distinction between '*' and '+'? 1351 is duplicated, did you mean
other bug?
Here is the meta-bug:
http://d.puremagic.com/issues/show_bug.cgi?id=3104
> ABI
> * 690 data layout for various interface inheritance
> * 2385 structs are returned in registers on linux
> * 2648 function return ABI exceptions for Windows
http://d.puremagic.com/issues/show_bug.cgi?id=3105
> parameter storage classes
> * 955 parameter storage classes underdocumented
> * 1411 storage classes applied to tuples
> * 1424 manipulating storage classes in tuples
> * 1818 storage classes in tuples discarded for function declarations
http://d.puremagic.com/issues/show_bug.cgi?id=3106
> property syntax
> + 678 for a function f returning an array, f.ptr sometimes fails
> + 1600 can't call foo(T[]) as array.foo;
> + 2152 opIndex and opIndexAssign on the returned value
> + 2774 can't get mangleof of function
http://d.puremagic.com/issues/show_bug.cgi?id=3107
> protection
> * 1920 protection and default protection for classes underdocumented
> * 2417 calling protected class member functions
> + 2529 package protection
> + 1441, 2830 protection for type declarations
http://d.puremagic.com/issues/show_bug.cgi?id=3108
> template ordering
> * 918 alias parameters
> * 2025 variadic templates
> * 1650 spec references 'C++ rules'
http://d.puremagic.com/issues/show_bug.cgi?id=3109
> no bugzilla:
I've opened new bugs for these:
> * a.foo(...) -> foo(a, ...) transform for a array not documented
http://d.puremagic.com/issues/show_bug.cgi?id=3110
> * 'mangleof' can't be member of a struct not documented (other properties?)
http://d.puremagic.com/issues/show_bug.cgi?id=3111
> * what operations call the gc?
http://d.puremagic.com/issues/show_bug.cgi?id=3112
> other
> * 52 auto fp = &overloaded_foo
> * 603 scopes in switch statements
> * 632 typedef/enum promotions
> * 869 precedence for is, !is
> * 996 error in example, ptr = array
> * 1351 non-terminals should be links
> * 2179 imports in class scopes
> * 1418 tupleof on nested classes
> * 1521 documentation on scope classes ambiguous
> * 1528 cannot overload functions and template functions
> * 1563 cast(C)v for class C only performs a dynamic cast for certain
> types of v
> * 1626 what exactly does if(v) do for various types of v?
> * 2017 explain common use of literal[] to get a dynamic array
> * 2201 end of line in string literals
> * 2351 empty enums
> * 2382 what can be a global/static initializer?
> * 2387 definition of 'static array'
> * 2395 struct forward declarations
> * 2497 deleting null
> * 2522 result type of binary operators
> * 2554 pragma(lib,...) must be declaration
> * 2616 part-explicit IFTI
> * 3093 Object.factory
> * 1142 stringof performs semantic analysis
> * 2482 magic struct operator overloads
> * 2028 module and package lookup
> * 2093 arrays and slices and lengths
> * 2106 export and classes
> * 2486 taking address of slice rvalues is valid
> + 302 contract inheritance
> + 502 reimplement interface functions with aliases
> + 671 overloading class opAssign allows initialization with it but
> generates useless code
> + 1429 associative array ==, !=
> + 2358 offsetof property usage inconsistent between structs and classes
> + 2477 trailing commas in array literals
> + 2524 final override + interface
> + 2543 foreach index refness
> + 2632 operations on invalid arrays
> + 2701 opAssign for struct initialization
> + 2716 'auto' still has meaning of 'scope' sometimes
> + 2733 semantics of template value parameters
> + 2894 abstract functions
> + 3005 for statement allows more than declarations in first arg
> + 3066 array operations as initializers
> + 3085 cannot index tuple in declaration
>
> as intended?
> * 1715 convertibility vs. equality in template specializations
> * 1012 cannot instantiate template with no parameters or default parameters
> without !()
All these (and the new bugs) should be categorized. Unfortunatelly I don't
have time to do it myself right now, but anyone else with a couple of
minutes can take it from here =)
I've added the new bugs as blockers for 677 which already group all
spec-related issues:
http://d.puremagic.com/issues/show_bug.cgi?id=677
--
Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
----------------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------------
Hey you, out there in the cold
Getting lonely, getting old
Can you feel me?
More information about the Digitalmars-d
mailing list