Several directives (t-key, t-log, t-translation, …) are represented by
wrapper ASTs that contain another AST or null.
Because these wrappers don't share the same type as their children,
various AST type checks were broken.
This commit addresses those issues by:
- Commuting Translation / TranslationContext and Multi ASTs so that
Multi children are spread as expected (see parseChildren).
- Parsing the t-key directive before t-esc / t-out (in line with https://github.com/odoo/owl/pull/1685).
- Ensuring wrappers around TSet ASTs are recognized as having no
representation, so compileMulti properly discards children equivalent
to TSet.
This means that unrelated ids (eg the id of a template, variable or key)
not longer share the same incrementing counter, meaning that you no
longer see a variable named "v2" unless another variable "v1" was
generated previously, this is also true for block data.
t-out automatically escaped content when it is a string not marked
with the `markup` function
t-out renders the raw content if it is a Block, or if it has been marked
with the `markup` funtion.
t-esc has been kept since it is safe and is optimized to render text nodes.
all t-raw calls are in fact the same as t-out.