{"record":{"id":"889ebe178c951c33","repo":"emberjs/ember.js","slug":"a-resolved-helper-cannot-be-passed-as-a-named-argu","errorCode":null,"errorMessage":"A resolved helper cannot be passed as a named argument as the syntax is ambiguously a pass-by-reference or invocation. Use the `{{helper 'foo-helper}}` helper to pass by reference or explicitly invoke the helper with parens: `{{(fooHelper)}}`.","messagePattern":"A resolved helper cannot be passed as a named argument as the syntax is ambiguously a pass-by-reference or invocation\\. Use the `(.+?)\\}` helper to pass by reference or explicitly invoke the helper with parens: `(.+?)\\}`\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/@ember/-internals/glimmer/lib/environment.ts","lineNumber":71,"sourceCode":"    );\n  },\n\n  assert(test: unknown, msg: string, options?: { id: string }) {\n    if (DEBUG) {\n      let id = options?.id;\n\n      let override = VM_ASSERTION_OVERRIDES.filter((o) => o.id === id)[0];\n\n      assert(override?.message ?? msg, test);\n    }\n  },\n\n  deprecate(msg: string, test: unknown, options: { id: string }) {\n    if (DEBUG) {\n      let { id } = options;\n\n      if (id === 'argument-less-helper-paren-less-invocation') {\n        throw new Error(\n          `A resolved helper cannot be passed as a named argument as the syntax is ` +\n            `ambiguously a pass-by-reference or invocation. Use the ` +\n            `\\`{{helper 'foo-helper}}\\` helper to pass by reference or explicitly ` +\n            `invoke the helper with parens: \\`{{(fooHelper)}}\\`.`\n        );\n      }\n\n      let override = VM_DEPRECATION_OVERRIDES.filter((o) => o.id === id)[0];\n\n      if (!override) throw new Error(`deprecation override for ${id} not found`);\n\n      // allow deprecations to be disabled in the VM_DEPRECATION_OVERRIDES array below\n      if (!override.disabled) {\n        deprecate(override.message ?? msg, Boolean(test), override);\n      }\n    }\n  },\n});","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/emberjs/ember.js/blob/26f97246a8bf2e28edf26ac3093da2e86c04ffc5/packages/@ember/-internals/glimmer/lib/environment.ts#L53-L89","documentation":"In DEBUG, Glimmer's deprecate hook hard-throws for the 'argument-less-helper-paren-less-invocation' deprecation instead of warning. Passing a resolved helper as a named argument without parens is ambiguous (pass-by-reference vs invocation), so Ember errors to force explicit syntax.","triggerScenarios":"Using a helper name as a named argument value without invoking it, e.g. <Foo @bar=someHelper/> where someHelper resolves to a helper, in a DEBUG build.","commonSituations":"Migrating codebases after the paren-less helper invocation deprecation; typos omitting parentheses; addons shipping templates with legacy helper-as-argument syntax run in dev mode.","solutions":["Invoke the helper explicitly with parentheses: @bar={{(someHelper)}}","Pass by reference deliberately with the helper keyword: @bar={{helper 'some-helper'}}","If a plain value was intended, rename the colliding helper or fix the argument value"],"exampleFix":"// before\n<MyInput @validator=requiredHelper />\n// after\n<MyInput @validator={{(requiredHelper)}} />","handlingStrategy":"validation","validationCode":"// in dev, search templates for helper names used as bare named-arg values\n// e.g. regex: @[\\w-]+=[a-zA-Z][\\w-]*$","typeGuard":null,"tryCatchPattern":"try { render(); } catch (e) { if (String(e.message).includes('A resolved helper cannot be passed as a named argument')) { /* fix template syntax */ } throw e; }","preventionTips":["Always parenthesize helper invocation in named args: {{(helper)}}","Use {{helper 'name'}} for pass-by-reference","Run ember-template-lint to catch paren-less usage","Keep templates updated when deprecations land"],"tags":["ember","glimmer","helpers","syntax","deprecation"],"backgroundTag":"paren-less-helper-invocation","analyzedSha":"26f97246a8bf2e28edf26ac3093da2e86c04ffc5","analyzedAt":"2026-09-01T05:01:28.182Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}