A couple of days ago I discovered why some people told me that mono-d took about an hour or so just to get finished with “parsing” their libraries – it wasn’t related to “parsing”, it rather was related to the ufcs function pre-analysis. Anyway, mixins and template mixins were the deeper cause for this – and now I improved both parts. The evaluated string will even be cached now until the respective module becomes reparsed. A rip-off from the commit log:
- Implemented a weak reference-based result cache. Solved the inifinite ufcs analysis problems.
- Implemented location-dependent cross-mixin resolution. Mixins can only take mixed-in code from mixins that occur BEFORE the actual mixin statement – in order to prevent infinite resolution pseudo-cycles. Added related test.
- Improved chained concatenation expression evaluation.
- Further tests & checks & null-ref exceptions solved.
A final screenshot to demonstrate stuff that wasn’t possible before the improvements: