On 16.11.2016 19:17, Jacob Carlborg wrote:
On 2016-11-16 01:11, Timon Gehr wrote:
Yup. There are many features missing that are quite easy to implement
but require work, and a few that are somewhat messy to specify (e.g.
'protected'). An incomplete list:
* UDA's
* Built-in members (init, stringof, min, max, ...)
* various forms of import statements
- static, selective, renaming, ...
* Initialization of union fields
* anonymous structs & unions
- Analysis & Lowering
* additional import paths & implicit object.d
* implicit inheritance from Object
* version declarations
* Associative arrays/Associative array literals
* module declarations
* (implicit) super constructor calls
- default constructor call insertion
- flow analysis
* Destructor and postblit calls
- use flow analysis to optimize moves
* with statements
* associative arrays
* foreach statements
- automatic decoding for string types
- foreach over associative arrays
- foreach over delegates
- foreach over AliasSeq
* pattern matching in old-style template constraints
* explicit casts from/to class references
- eg. to/from void* and to bool
* try-catch-finally statements
* scope guards
* initialization crossing check
* multi-argument struct constructors.
* struct postblit & destructors
* finish operator overloading support
* opDispatch
* member alias declarations aliasing members
- correctly provide a this pointer
* visibility
- package, protected
* alias this
Is it "only" semantic analysis that is missing for these features or
lexing and/or parsing as well?
Mostly semantic analysis, but parsing is very easy anyway. I think UDAs
are the only listed feature still missing in the parser, but that's just
because they were introduced after I had already written the parser.