diff --git a/packages/@ember/-internals/glimmer/lib/helpers/fn.ts b/packages/@ember/-internals/glimmer/lib/helpers/fn.ts index 63a3f7e87d5..7c4dca12077 100644 --- a/packages/@ember/-internals/glimmer/lib/helpers/fn.ts +++ b/packages/@ember/-internals/glimmer/lib/helpers/fn.ts @@ -98,7 +98,7 @@ export default function (args: VMArguments) { if (DEBUG) assertCallbackIsFn(callbackRef); if (isInvokableRef(callbackRef)) { - let value = args[0] || invocationArgs[0]; + let value = args.length > 0 ? args[0] : invocationArgs[0]; return updateRef(callbackRef, value); } else { return (fn as Function).call(context, ...args, ...invocationArgs); 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 7a3f6c9cdc1..6b9986d3547 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/helpers/fn-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/helpers/fn-test.js @@ -244,5 +244,18 @@ moduleFor( this.assertText('bar'); } + + '@test can be used on the result of `mut` with a falsy value'() { + this.render(`{{this.arg1}}{{stash stashedFn=(fn (mut this.arg1) this.arg2)}}`, { + arg1: 'foo', + arg2: false, + }); + + this.assertText('foo'); + + runTask(() => this.stashedFn()); + + this.assertText('false'); + } } );