diff --git a/src/qweb.ts b/src/qweb.ts index d93fa1d4..d345d753 100644 --- a/src/qweb.ts +++ b/src/qweb.ts @@ -932,6 +932,9 @@ const onDirective: Directive = { atNodeCreation({ ctx, fullName, value, nodeID }) { ctx.rootContext.shouldDefineOwner = true; const eventName = fullName.slice(5); + if (!eventName) { + throw new Error("Missing event name with t-on directive"); + } let extraArgs; let handler = value.replace(/\(.*\)/, function(args) { extraArgs = args.slice(1, -1); diff --git a/tests/qweb.test.ts b/tests/qweb.test.ts index 5ba1043e..41e97ecf 100644 --- a/tests/qweb.test.ts +++ b/tests/qweb.test.ts @@ -115,6 +115,13 @@ describe("error handling", () => { ); }); + test("nice error when t-on is evaluated with a missing event", () => { + qweb.addTemplate("templatename", `
`); + expect(() => + qweb.render("templatename", { someMethod() {} }, { handlers: [] }) + ).toThrow("Missing event name with t-on directive"); + }); + test("error when compiled code is invalid", () => { qweb.addTemplate( "templatename",