diff --git a/src/qweb/base_directives.ts b/src/qweb/base_directives.ts index 6e303bfa..dd418b3b 100644 --- a/src/qweb/base_directives.ts +++ b/src/qweb/base_directives.ts @@ -228,6 +228,10 @@ QWeb.addDirective({ ctx.addLine("}"); } + if (node.hasAttribute("t-if") || node.hasAttribute("t-else") || node.hasAttribute("t-elif")) { + ctx.closeIf(); + } + return true; } }); diff --git a/tests/qweb/__snapshots__/qweb.test.ts.snap b/tests/qweb/__snapshots__/qweb.test.ts.snap index d8b54c0a..136629be 100644 --- a/tests/qweb/__snapshots__/qweb.test.ts.snap +++ b/tests/qweb/__snapshots__/qweb.test.ts.snap @@ -806,6 +806,22 @@ exports[`t-call (template calling scoped parameters 1`] = ` }" `; +exports[`t-call (template calling t-call with t-if 1`] = ` +"function anonymous(context,extra +) { + var h = this.h; + let c1 = [], p1 = {key:1}; + var vn1 = h('div', p1, c1); + if (context['flag']) { + let c2 = [], p2 = {key:2}; + var vn2 = h('span', p2, c2); + c1.push(vn2); + c2.push({text: \`ok\`}); + } + return vn1; +}" +`; + exports[`t-call (template calling with unused body 1`] = ` "function anonymous(context,extra ) { diff --git a/tests/qweb/qweb.test.ts b/tests/qweb/qweb.test.ts index 5dc53e7b..413339f0 100644 --- a/tests/qweb/qweb.test.ts +++ b/tests/qweb/qweb.test.ts @@ -501,6 +501,13 @@ describe("t-call (template calling", () => { expect(renderToString(qweb, "caller")).toBe(expected); }); + test("t-call with t-if", () => { + qweb.addTemplate("sub", "ok"); + qweb.addTemplate("caller", '