Reworked the Clang object support layer to be more reliable (caused some bugs which are now fixed and simplified the compiler). I'm looking into simplifying a bunch of the compiler-generated functions stuff. For example, I know that their EH is already totally bugged. I need to simplify some other stuff too, like there's many places where I repeatedly get the function argument type analyzed. And I need to implement AnalyzeExpression in terms of AnalyzeCachedExpression if I can. And fix up statements to be Function-independent.
And the operator handling still feels like a hack. I need to introduce t.operator+ and operator+ as valid expressions and, I feel, generally unify the handling for identifiers and operators in a more useful fashion than my current hackitude.
I've also been thinking about introducing explicit operator overload set unioning, and explicit ADL requests.
Most importantly, I feel like I've defined my first milestone, Phase One. The objective of Phase One, most simply, is to reach something like feature parity in the compiler. This will probably involve some variant of concepts later, but for now I'm mostly looking at smaller features like default, delete, override, etc. Emitting some DWARF debug data would be great too.
Finally, I've been thinking about creating some functionality as pure extensions. I want to show that my compiler design really is modular and extensible. I might start with a basic feature like properties.
No comments:
Post a Comment