From 41b0618c93080f992486f85f5e5ef5521ad866ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Fri, 11 Oct 2019 12:44:21 +0200 Subject: [PATCH] [FIX] qweb: improve generated compiled code --- src/component/component.ts | 1 - src/qweb/base_directives.ts | 4 +- src/qweb/context.ts | 2 +- tests/__snapshots__/animations.test.ts.snap | 4 - .../__snapshots__/component.test.ts.snap | 40 ------- .../props_validation.test.ts.snap | 1 - tests/qweb/__snapshots__/qweb.test.ts.snap | 101 ------------------ tests/router/__snapshots__/Link.test.ts.snap | 1 - 8 files changed, 4 insertions(+), 150 deletions(-) diff --git a/src/component/component.ts b/src/component/component.ts index 5a470f97..f45654b1 100644 --- a/src/component/component.ts +++ b/src/component/component.ts @@ -549,7 +549,6 @@ export class Component { __getTemplate(qweb: QWeb): string { let p = (this).constructor; - // console.warn(p, p.template, p._template, 'template' in p, p.hasOwnProperty('template')) if (!p.hasOwnProperty("_template")) { if (p.template) { p._template = p.template; diff --git a/src/qweb/base_directives.ts b/src/qweb/base_directives.ts index 5fbb277e..5bdaddb8 100644 --- a/src/qweb/base_directives.ts +++ b/src/qweb/base_directives.ts @@ -55,7 +55,9 @@ function compileValueNode(value: any, node: Element, qweb: QWeb, ctx: Context) { ctx.rootContext.rootNode = nodeID; ctx.rootContext.parentTextNode = nodeID; ctx.addLine(`var vn${nodeID} = {text: ${exprID}};`); - ctx.addLine(`result = vn${nodeID}`); + if (ctx.rootContext.shouldDefineResult) { + ctx.addLine(`result = vn${nodeID}`); + } } } else { let fragID = ctx.generateID(); diff --git a/src/qweb/context.ts b/src/qweb/context.ts index fd70f8de..16d79736 100644 --- a/src/qweb/context.ts +++ b/src/qweb/context.ts @@ -98,7 +98,7 @@ export class Context { if (!this.rootContext.rootNode) { this.rootContext.rootNode = node; } - if (!this.parentNode) { + if (!this.parentNode && this.rootContext.shouldDefineResult) { this.addLine(`result = vn${node};`); } return this.subContext("parentNode", node); diff --git a/tests/__snapshots__/animations.test.ts.snap b/tests/__snapshots__/animations.test.ts.snap index dfe1fb10..16cdb2d8 100644 --- a/tests/__snapshots__/animations.test.ts.snap +++ b/tests/__snapshots__/animations.test.ts.snap @@ -10,7 +10,6 @@ exports[`animations t-transition combined with component 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let w4 = 4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[4]] : false; @@ -55,7 +54,6 @@ exports[`animations t-transition combined with t-component and t-if 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; if (context['state'].display) { //COMPONENT let def3; @@ -99,7 +97,6 @@ exports[`animations t-transition with no delay/duration 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('span', p1, c1); - result = vn1; p1.hook = { insert: vn => { utils.transitionInsert(vn, 'jupiler'); @@ -120,7 +117,6 @@ exports[`animations t-transition, on a simple node (insert) 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('span', p1, c1); - result = vn1; p1.hook = { insert: vn => { utils.transitionInsert(vn, 'chimay'); diff --git a/tests/component/__snapshots__/component.test.ts.snap b/tests/component/__snapshots__/component.test.ts.snap index dfaefdc0..5ed2d597 100644 --- a/tests/component/__snapshots__/component.test.ts.snap +++ b/tests/component/__snapshots__/component.test.ts.snap @@ -10,7 +10,6 @@ exports[`async rendering delayed component with t-asyncroot directive 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('button', p2, c2); c1.push(vn2); @@ -93,7 +92,6 @@ exports[`async rendering fast component with t-asyncroot directive 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('button', p2, c2); c1.push(vn2); @@ -176,7 +174,6 @@ exports[`async rendering t-component with t-asyncroot directive: mixed re-render var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('button', p2, c2); c1.push(vn2); @@ -259,7 +256,6 @@ exports[`class and style attributes with t-component dynamic t-att-style is prop var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; const _5 = context['state'].style; @@ -303,7 +299,6 @@ exports[`class and style attributes with t-component t-att-class is properly add var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; const ref5 = \`child\`; @@ -348,7 +343,6 @@ exports[`class and style attributes with t-component t-att-class is properly add Object.assign(_2, utils.toObj({d:context['state'].d})) let c3 = [], p3 = {key:3,class:_2}; var vn3 = h('span', p3, c3); - result = vn3; return vn3; }" `; @@ -364,7 +358,6 @@ exports[`class and style attributes with t-component t-att-class is properly add var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; const ref5 = \`child\`; @@ -409,7 +402,6 @@ exports[`class and style attributes with t-component t-att-class is properly add Object.assign(_2, utils.toObj(context['state'].d?'d':'')) let c3 = [], p3 = {key:3,class:_2}; var vn3 = h('span', p3, c3); - result = vn3; return vn3; }" `; @@ -424,7 +416,6 @@ exports[`class and style attributes with t-component t-att-class is properly add var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let _5 = {a:context['state'].a,b:context['state'].b}; @@ -468,7 +459,6 @@ exports[`composition sub components dom state with t-keepalive is preserved 1`] var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; if (context['state'].ok) { //COMPONENT let def3; @@ -514,7 +504,6 @@ exports[`composition sub components with some state rendered in a loop 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = context['state'].numbers; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; @@ -573,7 +562,6 @@ exports[`composition t-component with dynamic value 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let w4 = 4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[4]] : false; @@ -615,7 +603,6 @@ exports[`composition t-component with dynamic value 2 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let w4 = 4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[4]] : false; @@ -657,7 +644,6 @@ exports[`dynamic t-props basic use 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let w4 = 4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[4]] : false; @@ -699,7 +685,6 @@ exports[`lifecycle hooks willPatch/patched hook with t-keepalive 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; if (context['state'].flag) { //COMPONENT let def3; @@ -744,7 +729,6 @@ exports[`other directives with t-component t-on with handler bound to argument 1 var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let w4 = 4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[4]] : false; @@ -786,7 +770,6 @@ exports[`other directives with t-component t-on with handler bound to empty obje var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let w4 = 4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[4]] : false; @@ -828,7 +811,6 @@ exports[`other directives with t-component t-on with handler bound to empty obje var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let w4 = 4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[4]] : false; @@ -870,7 +852,6 @@ exports[`other directives with t-component t-on with handler bound to object 1`] var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let w4 = 4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[4]] : false; @@ -912,7 +893,6 @@ exports[`other directives with t-component t-on with prevent and self modifiers var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let w4 = 4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[4]] : false; @@ -954,7 +934,6 @@ exports[`other directives with t-component t-on with self and prevent modifiers var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let w4 = 4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[4]] : false; @@ -996,7 +975,6 @@ exports[`other directives with t-component t-on with self modifier 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let w4 = 4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[4]] : false; @@ -1038,7 +1016,6 @@ exports[`other directives with t-component t-on with stop and/or prevent modifie var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let w4 = 4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[4]] : false; @@ -1076,7 +1053,6 @@ exports[`random stuff/miscellaneous can inject values in tagged templates 1`] = var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2}; var vn2 = h('span', p2, c2); c1.push(vn2); @@ -1098,7 +1074,6 @@ exports[`random stuff/miscellaneous snapshotting compiled code 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let key5 = 'key' + 'somestring'; let def3; @@ -1143,7 +1118,6 @@ exports[`random stuff/miscellaneous t-on with handler bound to dynamic argument var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = context['props'].items; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; @@ -1199,7 +1173,6 @@ exports[`t-model directive .lazy modifier 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('input', p2, c2); c1.push(vn2); @@ -1223,7 +1196,6 @@ exports[`t-model directive basic use, on an input 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('input', p2, c2); c1.push(vn2); @@ -1247,7 +1219,6 @@ exports[`t-model directive basic use, on another key in component 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('input', p2, c2); c1.push(vn2); @@ -1271,7 +1242,6 @@ exports[`t-model directive on a select 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('select', p2, c2); c1.push(vn2); @@ -1316,7 +1286,6 @@ exports[`t-model directive on a sub state key 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('input', p2, c2); c1.push(vn2); @@ -1340,7 +1309,6 @@ exports[`t-model directive on an input type=radio 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = 'radio'; var _3 = 'one'; var _4 = 'One'; @@ -1377,7 +1345,6 @@ exports[`t-model directive on an input, type=checkbox 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = 'checkbox'; let c3 = [], p3 = {key:3,attrs:{type: _2},on:{}}; var vn3 = h('input', p3, c3); @@ -1408,7 +1375,6 @@ exports[`t-slot directive can define and call slots 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let w4 = 4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[4]] : false; @@ -1448,7 +1414,6 @@ exports[`t-slot directive can define and call slots 2`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2}; var vn2 = h('div', p2, c2); c1.push(vn2); @@ -1603,7 +1568,6 @@ exports[`t-slot directive slots are rendered with proper context, part 2 1`] = ` var _1 = context['props'].to; let c2 = [], p2 = {key:2,attrs:{href: _1}}; var vn2 = h('a', p2, c2); - result = vn2; const slot3 = this.constructor.slots[context.__owl__.slotId + '_' + 'default']; if (slot3) { slot3.call(this, context.__owl__.parent, Object.assign({}, extra, {parentNode: c2, vars: extra.vars, parent: owner})); @@ -1624,7 +1588,6 @@ exports[`t-slot directive slots are rendered with proper context, part 2 2`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2}; var vn2 = h('u', p2, c2); c1.push(vn2); @@ -1707,7 +1670,6 @@ exports[`t-slot directive slots are rendered with proper context, part 3 1`] = ` var _1 = context['props'].to; let c2 = [], p2 = {key:2,attrs:{href: _1}}; var vn2 = h('a', p2, c2); - result = vn2; const slot3 = this.constructor.slots[context.__owl__.slotId + '_' + 'default']; if (slot3) { slot3.call(this, context.__owl__.parent, Object.assign({}, extra, {parentNode: c2, vars: extra.vars, parent: owner})); @@ -1728,7 +1690,6 @@ exports[`t-slot directive slots are rendered with proper context, part 3 2`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2}; var vn2 = h('u', p2, c2); c1.push(vn2); @@ -1813,7 +1774,6 @@ exports[`t-slot directive slots are rendered with proper context, part 4 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = 'User '+context['state'].user.name; //COMPONENT let def4; diff --git a/tests/component/__snapshots__/props_validation.test.ts.snap b/tests/component/__snapshots__/props_validation.test.ts.snap index 93fcbe63..a767b2ac 100644 --- a/tests/component/__snapshots__/props_validation.test.ts.snap +++ b/tests/component/__snapshots__/props_validation.test.ts.snap @@ -14,7 +14,6 @@ exports[`props validation props are validated in dev mode (code snapshot) 1`] = var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; //COMPONENT let def3; let w4 = 4 in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap[4]] : false; diff --git a/tests/qweb/__snapshots__/qweb.test.ts.snap b/tests/qweb/__snapshots__/qweb.test.ts.snap index c7bf2d14..76f8bf4c 100644 --- a/tests/qweb/__snapshots__/qweb.test.ts.snap +++ b/tests/qweb/__snapshots__/qweb.test.ts.snap @@ -7,7 +7,6 @@ exports[`attributes class and t-attf-class with ternary operation 1`] = ` var _1 = 'hello ' + (context['value']?'world':''); let c2 = [], p2 = {key:2,attrs:{class: _1}}; var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -19,7 +18,6 @@ exports[`attributes dynamic attribute falsy variable 1`] = ` var _1 = context['value']; let c2 = [], p2 = {key:2,attrs:{foo: _1}}; var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -31,7 +29,6 @@ exports[`attributes dynamic attribute with a dash 1`] = ` var _1 = context['id']; let c2 = [], p2 = {key:2,attrs:{\\"data-action-id\\": _1}}; var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -43,7 +40,6 @@ exports[`attributes dynamic attributes 1`] = ` var _1 = 'bar'; let c2 = [], p2 = {key:2,attrs:{foo: _1}}; var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -55,7 +51,6 @@ exports[`attributes dynamic formatted attributes with a dash 1`] = ` var _1 = \`Some text \${context['id']}\`; let c2 = [], p2 = {key:2,attrs:{\\"aria-label\\": _1}}; var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -67,7 +62,6 @@ exports[`attributes fixed variable 1`] = ` var _1 = context['value']; let c2 = [], p2 = {key:2,attrs:{foo: _1}}; var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -79,7 +73,6 @@ exports[`attributes format expression 1`] = ` var _1 = (context['value']+37); let c2 = [], p2 = {key:2,attrs:{foo: _1}}; var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -91,7 +84,6 @@ exports[`attributes format expression, other format 1`] = ` var _1 = (context['value']+37); let c2 = [], p2 = {key:2,attrs:{foo: _1}}; var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -103,7 +95,6 @@ exports[`attributes format literal 1`] = ` var _1 = \`bar\`; let c2 = [], p2 = {key:2,attrs:{foo: _1}}; var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -115,7 +106,6 @@ exports[`attributes format multiple 1`] = ` var _1 = \`a \${context['value1']} is \${context['value2']} of \${context['value3']} ]\`; let c2 = [], p2 = {key:2,attrs:{foo: _1}}; var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -127,7 +117,6 @@ exports[`attributes format value 1`] = ` var _1 = \`b\${context['value']}r\`; let c2 = [], p2 = {key:2,attrs:{foo: _1}}; var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -139,7 +128,6 @@ exports[`attributes from object variables set previously 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = {a:'b'}; let _3 = utils.toObj(_2.a); let c4 = [], p4 = {key:4,class:_3}; @@ -156,7 +144,6 @@ exports[`attributes from variables set previously 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = 'def'; let _3 = utils.toObj(_2); let c4 = [], p4 = {key:4,class:_3}; @@ -180,7 +167,6 @@ exports[`attributes object 1`] = ` } } var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -194,7 +180,6 @@ exports[`attributes static attributes 1`] = ` var _3 = 'c'; let c4 = [], p4 = {key:4,attrs:{foo: _1,bar: _2,baz: _3}}; var vn4 = h('div', p4, c4); - result = vn4; return vn4; }" `; @@ -207,7 +192,6 @@ exports[`attributes static attributes on void elements 1`] = ` var _2 = 'Test'; let c3 = [], p3 = {key:3,attrs:{src: _1,alt: _2}}; var vn3 = h('img', p3, c3); - result = vn3; return vn3; }" `; @@ -219,7 +203,6 @@ exports[`attributes static attributes with dashes 1`] = ` var _1 = 'Close'; let c2 = [], p2 = {key:2,attrs:{\\"aria-label\\": _1}}; var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -233,7 +216,6 @@ exports[`attributes t-att-class and class should combine together 1`] = ` Object.assign(_2, utils.toObj(context['value'])) let c3 = [], p3 = {key:3,class:_2}; var vn3 = h('div', p3, c3); - result = vn3; return vn3; }" `; @@ -247,7 +229,6 @@ exports[`attributes t-att-class with object 1`] = ` Object.assign(_2, utils.toObj({a:context['b'],c:context['d'],e:context['f']})) let c3 = [], p3 = {key:3,class:_2}; var vn3 = h('div', p3, c3); - result = vn3; return vn3; }" `; @@ -259,7 +240,6 @@ exports[`attributes t-attf-class should combine with class 1`] = ` var _1 = 'hello ' + \`world\`; let c2 = [], p2 = {key:2,attrs:{class: _1}}; var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -278,7 +258,6 @@ exports[`attributes tuple literal 1`] = ` } } var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -297,7 +276,6 @@ exports[`attributes tuple variable 1`] = ` } } var vn2 = h('div', p2, c2); - result = vn2; return vn2; }" `; @@ -309,7 +287,6 @@ exports[`debugging t-debug 1`] = ` debugger; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; if (true) { debugger; let c2 = [], p2 = {key:2}; @@ -327,7 +304,6 @@ exports[`debugging t-log 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = 42; console.log(_2+3) return vn1; @@ -341,7 +317,6 @@ exports[`foreach does not pollute the rendering context 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = [1]; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; @@ -372,7 +347,6 @@ exports[`foreach iterate on items (on a element node) 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = [1,2]; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; @@ -407,7 +381,6 @@ exports[`foreach iterate on items 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = [3,2,1]; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; @@ -450,7 +423,6 @@ exports[`foreach iterate, dict param 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = context['value']; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; @@ -493,7 +465,6 @@ exports[`foreach iterate, position 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = Array(5); if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; @@ -533,7 +504,6 @@ exports[`foreach warn if no key in some case 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = [1,2]; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; @@ -566,7 +536,6 @@ exports[`loading templates can initialize qweb with a string 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; c1.push({text: \`jupiler\`}); return vn1; }" @@ -578,7 +547,6 @@ exports[`loading templates can load a few templates from a xml string 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('ul', p1, c1); - result = vn1; let c2 = [], p2 = {key:2}; var vn2 = h('li', p2, c2); c1.push(vn2); @@ -599,7 +567,6 @@ exports[`misc global 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = [4,5,6]; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; @@ -683,7 +650,6 @@ exports[`properly support svg add proper namespace to g tags 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('g', p1, c1); - result = vn1; var _2 = '50'; var _3 = '50'; var _4 = '4'; @@ -708,7 +674,6 @@ exports[`properly support svg add proper namespace to svg 1`] = ` var _2 = '90px'; let c3 = [], p3 = {key:3,attrs:{width: _1,height: _2}}; var vn3 = h('svg', p3, c3); - result = vn3; var _4 = '50'; var _5 = '50'; var _6 = '4'; @@ -732,7 +697,6 @@ exports[`special cases for some boolean html attributes/properties input type= c var _2 = context['flag']; let c3 = [], p3 = {key:3,attrs:{type: _1,checked: _2},props:{checked: _2}}; var vn3 = h('input', p3, c3); - result = vn3; return vn3; }" `; @@ -743,7 +707,6 @@ exports[`special cases for some boolean html attributes/properties various boole var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = 'checkbox'; var _3 = 'checked'; let c4 = [], p4 = {key:4,attrs:{type: _2,checked: _3},props:{checked: _3}}; @@ -784,7 +747,6 @@ exports[`static templates div with a span child node 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2}; var vn2 = h('span', p2, c2); c1.push(vn2); @@ -799,7 +761,6 @@ exports[`static templates div with a text node 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; c1.push({text: \`word\`}); return vn1; }" @@ -811,7 +772,6 @@ exports[`static templates empty div 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; return vn1; }" `; @@ -822,7 +782,6 @@ exports[`static templates ignore comments 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; c1.push({text: \`hello owl\`}); return vn1; }" @@ -887,7 +846,6 @@ exports[`t-call (template calling call with several sub nodes on same line 1`] = var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c5 = [], p5 = {key:5}; var vn5 = h('div', p5, c5); c1.push(vn5); @@ -910,7 +868,6 @@ exports[`t-call (template calling inherit context 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = 1; if (_2 || _2 === 0) { c1.push({text: _2}); @@ -926,7 +883,6 @@ exports[`t-call (template calling recursive template, part 1 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2}; var vn2 = h('span', p2, c2); c1.push(vn2); @@ -967,7 +923,6 @@ exports[`t-call (template calling recursive template, part 2 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; { let _2 = context['root']; let c3 = [], p3 = {key:3}; @@ -1059,7 +1014,6 @@ exports[`t-call (template calling recursive template, part 3 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; { let _2 = context['root']; let c3 = [], p3 = {key:3}; @@ -1148,7 +1102,6 @@ exports[`t-call (template calling scoped parameters 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; { let _2 = 42; c1.push({text: \`ok\`}); @@ -1167,7 +1120,6 @@ exports[`t-call (template calling t-call with t-if 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; if (context['flag']) { let c2 = [], p2 = {key:2}; var vn2 = h('span', p2, c2); @@ -1184,7 +1136,6 @@ exports[`t-call (template calling t-call, global templates 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2}; var vn2 = h('span', p2, c2); c1.push(vn2); @@ -1241,7 +1192,6 @@ exports[`t-call (template calling with used set body 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('span', p1, c1); - result = vn1; { let _2 = 'ok'; if (_2 || _2 === 0) { @@ -1258,7 +1208,6 @@ exports[`t-esc escaping on a node 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('span', p1, c1); - result = vn1; var _2 = 'ok'; if (_2 || _2 === 0) { c1.push({text: _2}); @@ -1273,7 +1222,6 @@ exports[`t-esc escaping on a node with a body 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('span', p1, c1); - result = vn1; var _2 = 'ok'; if (_2 || _2 === 0) { c1.push({text: _2}); @@ -1290,7 +1238,6 @@ exports[`t-esc escaping on a node with a body, as a default 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('span', p1, c1); - result = vn1; var _2 = context['var']; if (_2 || _2 === 0) { c1.push({text: _2}); @@ -1307,7 +1254,6 @@ exports[`t-esc literal 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('span', p1, c1); - result = vn1; var _2 = 'ok'; if (_2 || _2 === 0) { c1.push({text: _2}); @@ -1322,7 +1268,6 @@ exports[`t-esc variable 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('span', p1, c1); - result = vn1; var _2 = context['var']; if (_2 || _2 === 0) { c1.push({text: _2}); @@ -1337,7 +1282,6 @@ exports[`t-if boolean value condition elif 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; if (context['color']=='black') { c1.push({text: \`black pearl\`}); } @@ -1360,7 +1304,6 @@ exports[`t-if boolean value condition else 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2}; var vn2 = h('span', p2, c2); c1.push(vn2); @@ -1385,7 +1328,6 @@ exports[`t-if boolean value condition false else 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2}; var vn2 = h('span', p2, c2); c1.push(vn2); @@ -1410,7 +1352,6 @@ exports[`t-if boolean value condition missing 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('span', p1, c1); - result = vn1; if (context['condition']) { c1.push({text: \`fail\`}); } @@ -1424,7 +1365,6 @@ exports[`t-if boolean value false condition 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; if (context['condition']) { c1.push({text: \`ok\`}); } @@ -1438,7 +1378,6 @@ exports[`t-if boolean value true condition 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; if (context['condition']) { c1.push({text: \`ok\`}); } @@ -1452,7 +1391,6 @@ exports[`t-if can use some boolean operators in expressions 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; if (context['cond1']&&context['cond2']) { c1.push({text: \`and\`}); } @@ -1488,7 +1426,6 @@ exports[`t-key can use t-key directive on a node 1`] = ` const nodeKey1 = context['beer'].id let c1 = [], p1 = {key:nodeKey1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = context['beer'].name; if (_2 || _2 === 0) { c1.push({text: _2}); @@ -1504,7 +1441,6 @@ exports[`t-key t-key directive in a list 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('ul', p1, c1); - result = vn1; var _2 = context['beers']; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; @@ -1541,7 +1477,6 @@ exports[`t-on can bind event handler 1`] = ` var h = this.h; let c1 = [], p1 = {key:1,on:{}}; var vn1 = h('button', p1, c1); - result = vn1; if (!context['add']) { throw new Error('Missing handler \\\\'' + 'add' + \`\\\\' when evaluating template 'test'\`) } @@ -1559,7 +1494,6 @@ exports[`t-on can bind handlers with arguments 1`] = ` var h = this.h; let c1 = [], p1 = {key:1,on:{}}; var vn1 = h('button', p1, c1); - result = vn1; if (!context['add']) { throw new Error('Missing handler \\\\'' + 'add' + \`\\\\' when evaluating template 'test'\`) } @@ -1576,7 +1510,6 @@ exports[`t-on can bind handlers with empty object (with non empty inner string) var h = this.h; let c1 = [], p1 = {key:1,on:{}}; var vn1 = h('button', p1, c1); - result = vn1; if (!context['doSomething']) { throw new Error('Missing handler \\\\'' + 'doSomething' + \`\\\\' when evaluating template 'test'\`) } @@ -1593,7 +1526,6 @@ exports[`t-on can bind handlers with empty object 1`] = ` var h = this.h; let c1 = [], p1 = {key:1,on:{}}; var vn1 = h('button', p1, c1); - result = vn1; if (!context['doSomething']) { throw new Error('Missing handler \\\\'' + 'doSomething' + \`\\\\' when evaluating template 'test'\`) } @@ -1611,7 +1543,6 @@ exports[`t-on can bind handlers with loop variable as argument 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('ul', p1, c1); - result = vn1; var _2 = ['someval']; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; @@ -1650,7 +1581,6 @@ exports[`t-on can bind handlers with object arguments 1`] = ` var h = this.h; let c1 = [], p1 = {key:1,on:{}}; var vn1 = h('button', p1, c1); - result = vn1; if (!context['add']) { throw new Error('Missing handler \\\\'' + 'add' + \`\\\\' when evaluating template 'test'\`) } @@ -1667,7 +1597,6 @@ exports[`t-on can bind two event handlers 1`] = ` var h = this.h; let c1 = [], p1 = {key:1,on:{}}; var vn1 = h('button', p1, c1); - result = vn1; if (!context['handleClick']) { throw new Error('Missing handler \\\\'' + 'handleClick' + \`\\\\' when evaluating template 'test'\`) } @@ -1690,7 +1619,6 @@ exports[`t-on handler is bound to proper owner 1`] = ` var h = this.h; let c1 = [], p1 = {key:1,on:{}}; var vn1 = h('button', p1, c1); - result = vn1; if (!context['add']) { throw new Error('Missing handler \\\\'' + 'add' + \`\\\\' when evaluating template 'test'\`) } @@ -1708,7 +1636,6 @@ exports[`t-on t-on combined with t-esc 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('button', p2, c2); c1.push(vn2); @@ -1761,7 +1688,6 @@ exports[`t-on t-on with prevent and self modifiers (order matters) 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('button', p2, c2); c1.push(vn2); @@ -1785,7 +1711,6 @@ exports[`t-on t-on with prevent and/or stop modifiers 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('button', p2, c2); c1.push(vn2); @@ -1825,7 +1750,6 @@ exports[`t-on t-on with prevent modifier in t-foreach 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = context['projects']; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; @@ -1867,7 +1791,6 @@ exports[`t-on t-on with self and prevent modifiers (order matters) 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('button', p2, c2); c1.push(vn2); @@ -1891,7 +1814,6 @@ exports[`t-on t-on with self modifier 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2,on:{}}; var vn2 = h('button', p2, c2); c1.push(vn2); @@ -1927,7 +1849,6 @@ exports[`t-raw literal 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('span', p1, c1); - result = vn1; var _2 = 'ok'; if (_2 || _2 === 0) { var frag3 = utils.getFragment(_2) @@ -1948,7 +1869,6 @@ exports[`t-raw not escaping 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = context['var']; if (_2 || _2 === 0) { var frag3 = utils.getFragment(_2) @@ -1969,7 +1889,6 @@ exports[`t-raw t-raw and another sibling node 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('span', p1, c1); - result = vn1; let c2 = [], p2 = {key:2}; var vn2 = h('span', p2, c2); c1.push(vn2); @@ -1994,7 +1913,6 @@ exports[`t-raw variable 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('span', p1, c1); - result = vn1; var _2 = context['var']; if (_2 || _2 === 0) { var frag3 = utils.getFragment(_2) @@ -2015,7 +1933,6 @@ exports[`t-ref can get a dynamic ref on a node 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2}; var vn2 = h('span', p2, c2); c1.push(vn2); @@ -2036,7 +1953,6 @@ exports[`t-ref can get a ref on a node 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2}; var vn2 = h('span', p2, c2); c1.push(vn2); @@ -2058,7 +1974,6 @@ exports[`t-ref refs in a loop 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = context['items']; if (!_2) { throw new Error('QWeb error: Invalid loop expression')} var _3 = _4 = _2; @@ -2098,7 +2013,6 @@ exports[`t-set evaluate value expression 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = 1+2; if (_2 || _2 === 0) { c1.push({text: _2}); @@ -2113,7 +2027,6 @@ exports[`t-set evaluate value expression, part 2 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = context['somevariable']+2; if (_2 || _2 === 0) { c1.push({text: _2}); @@ -2128,7 +2041,6 @@ exports[`t-set set from attribute literal 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = 'ok'; if (_2 || _2 === 0) { c1.push({text: _2}); @@ -2143,7 +2055,6 @@ exports[`t-set set from attribute lookup 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = context['value']; if (_2 || _2 === 0) { c1.push({text: _2}); @@ -2169,7 +2080,6 @@ exports[`t-set set from body lookup 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = context['value']; if (_2 || _2 === 0) { c1.push({text: _2}); @@ -2184,7 +2094,6 @@ exports[`t-set set from empty body 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; return vn1; }" `; @@ -2195,7 +2104,6 @@ exports[`t-set t-set and t-if 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = context['value']; if (_2==='ok') { c1.push({text: \`grimbergen\`}); @@ -2210,7 +2118,6 @@ exports[`t-set t-set evaluates an expression only once 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = context['value']+' artois'; if (_2 || _2 === 0) { c1.push({text: _2}); @@ -2229,7 +2136,6 @@ exports[`t-set t-set should reuse variable if possible 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = 1; var _3 = context['list']; if (!_3) { throw new Error('QWeb error: Invalid loop expression')} @@ -2268,7 +2174,6 @@ exports[`t-set value priority 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; var _2 = 1; if (_2 || _2 === 0) { c1.push({text: _2}); @@ -2283,7 +2188,6 @@ exports[`whitespace handling consecutives whitespaces are condensed into a singl var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; c1.push({text: \` abc \`}); return vn1; }" @@ -2295,7 +2199,6 @@ exports[`whitespace handling nothing is done in pre tags 1`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('pre', p1, c1); - result = vn1; c1.push({text: \` \`}); return vn1; }" @@ -2307,7 +2210,6 @@ exports[`whitespace handling nothing is done in pre tags 2`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('pre', p1, c1); - result = vn1; c1.push({text: \` some text \`}); @@ -2321,7 +2223,6 @@ exports[`whitespace handling nothing is done in pre tags 3`] = ` var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('pre', p1, c1); - result = vn1; c1.push({text: \` \`}); @@ -2335,7 +2236,6 @@ exports[`whitespace handling white space only text nodes are condensed into a si var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; c1.push({text: \` \`}); return vn1; }" @@ -2347,7 +2247,6 @@ exports[`whitespace handling whitespace only text nodes with newlines are remove var h = this.h; let c1 = [], p1 = {key:1}; var vn1 = h('div', p1, c1); - result = vn1; let c2 = [], p2 = {key:2}; var vn2 = h('span', p2, c2); c1.push(vn2); diff --git a/tests/router/__snapshots__/Link.test.ts.snap b/tests/router/__snapshots__/Link.test.ts.snap index ef18326d..85868386 100644 --- a/tests/router/__snapshots__/Link.test.ts.snap +++ b/tests/router/__snapshots__/Link.test.ts.snap @@ -10,7 +10,6 @@ exports[`Link component can render simple cases 1`] = ` var _2 = context['href']; let c3 = [], p3 = {key:3,attrs:{href: _2},class:_1,on:{}}; var vn3 = h('a', p3, c3); - result = vn3; if (!context['navigate']) { throw new Error('Missing handler \\\\'' + 'navigate' + \`\\\\' when evaluating template '__template__1'\`) }