diff --git a/packages/@ember/-internals/glimmer/lib/helpers/fn.ts b/packages/@ember/-internals/glimmer/lib/helpers/fn.ts index 36ed5dec393..34f28fabc7a 100644 --- a/packages/@ember/-internals/glimmer/lib/helpers/fn.ts +++ b/packages/@ember/-internals/glimmer/lib/helpers/fn.ts @@ -85,8 +85,9 @@ function fn({ positional }: CapturedArguments) { if (DEBUG && typeof callbackRef[INVOKE] !== 'function') { let callback = callbackRef.value(); + const debug = (callbackRef).debug && (callbackRef).debug(); assert( - `You must pass a function as the \`fn\` helpers first argument, you passed ${callback}`, + `You must pass a function as the \`fn\` helpers first argument, you passed ${debug} to \`fn\` but it was ${callback}`, typeof callback === 'function' ); } diff --git a/packages/@ember/-internals/glimmer/lib/modifiers/on.ts b/packages/@ember/-internals/glimmer/lib/modifiers/on.ts index 2c126cea48b..5ccf9121198 100644 --- a/packages/@ember/-internals/glimmer/lib/modifiers/on.ts +++ b/packages/@ember/-internals/glimmer/lib/modifiers/on.ts @@ -100,11 +100,15 @@ export class OnModifierState { this.eventName = eventName; this.shouldUpdate = true; } + if (DEBUG) { + const debug = args.positional.at(1) && (args.positional.at(1)).debug(); + const value = args.positional.at(1) && args.positional.at(1).value(); + assert( + `You must pass a function as the second argument to the \`on\` modifier, you passed ${debug} to \`on\` but it was ${value}`, + value !== undefined && typeof value === 'function' + ); + } - assert( - 'You must pass a function as the second argument to the `on` modifier', - args.positional.at(1) !== undefined && typeof args.positional.at(1).value() === 'function' - ); let userProvidedCallback = args.positional.at(1).value() as EventListener; if (userProvidedCallback !== this.userProvidedCallback) { this.userProvidedCallback = userProvidedCallback; diff --git a/packages/@ember/-internals/glimmer/tests/integration/helpers/fn-test.js b/packages/@ember/-internals/glimmer/tests/integration/helpers/fn-test.js index 24a3e7581ff..2a12e852a85 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/helpers/fn-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/helpers/fn-test.js @@ -127,7 +127,7 @@ moduleFor( arg1: 'foo', arg2: 'bar', }); - }, /You must pass a function as the `fn` helpers first argument, you passed null/); + }, /You must pass a function as the `fn` helpers first argument, you passed this.myFunc to `fn` but it was null/); } '@test asserts if the provided function accesses `this` without being bound prior to passing to fn'(