On 2015-10-02 08:31, Per Nordlöw wrote:
Could explain what you mean by *lowering*, please?
"lowering" means that a feature is implemented using another feature. For example, "foreach" is lowered to a for-loop:
foreach(i ; 0 .. 10){} Is lowered to: for (int i = 0; i < 10; i++) {}The compiler rewrites the AST of the foreach-loop to the same AST that the corresponding for-loop would have. After that lowering step, the compiler doesn't need to know anything about foreach-loops.
-- /Jacob Carlborg