From 5d4e8b552b084f0133290f56859ff0d002d457fa Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Tue, 17 Feb 2026 15:45:08 -0500 Subject: [PATCH] Extract rule: template-deprecated-render-helper --- README.md | 1 + .../template-deprecated-render-helper.md | 23 ++++++++++ .../template-deprecated-render-helper.js | 44 +++++++++++++++++++ .../template-deprecated-render-helper.js | 18 ++++++++ 4 files changed, 86 insertions(+) create mode 100644 docs/rules/template-deprecated-render-helper.md create mode 100644 lib/rules/template-deprecated-render-helper.js create mode 100644 tests/lib/rules/template-deprecated-render-helper.js diff --git a/README.md b/README.md index 1997fcd7ea..6224713570 100644 --- a/README.md +++ b/README.md @@ -236,6 +236,7 @@ rules in templates can be disabled with eslint directives with mustache or html | [no-observers](docs/rules/no-observers.md) | disallow usage of observers | ✅ | | | | [no-old-shims](docs/rules/no-old-shims.md) | disallow usage of old shims for modules | ✅ | 🔧 | | | [no-string-prototype-extensions](docs/rules/no-string-prototype-extensions.md) | disallow usage of `String` prototype extensions | ✅ | | | +| [template-deprecated-render-helper](docs/rules/template-deprecated-render-helper.md) | disallow {{render}} helper | | | | ### Ember Data diff --git a/docs/rules/template-deprecated-render-helper.md b/docs/rules/template-deprecated-render-helper.md new file mode 100644 index 0000000000..31b9ff554c --- /dev/null +++ b/docs/rules/template-deprecated-render-helper.md @@ -0,0 +1,23 @@ +# ember/template-deprecated-render-helper + + + +Disallows the {{render}} helper which is deprecated. + +## Examples + +Incorrect: + +```gjs + +``` + +Correct: + +```gjs + +``` + +## References + +- [ember-template-lint deprecated-render-helper](https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/deprecated-render-helper.md) diff --git a/lib/rules/template-deprecated-render-helper.js b/lib/rules/template-deprecated-render-helper.js new file mode 100644 index 0000000000..c214cbe717 --- /dev/null +++ b/lib/rules/template-deprecated-render-helper.js @@ -0,0 +1,44 @@ +/** @type {import('eslint').Rule.RuleModule} */ +module.exports = { + meta: { + type: 'suggestion', + docs: { + description: 'disallow {{render}} helper', + category: 'Deprecations', + strictGjs: true, + strictGts: true, + url: 'https://github.com/ember-cli/eslint-plugin-ember/tree/master/docs/rules/template-deprecated-render-helper.md', + }, + fixable: null, + schema: [], + messages: { + deprecated: + 'The render helper is deprecated in favor of using components. See https://emberjs.com/deprecations/v2.x/#toc_code-render-code-helper', + }, + }, + + create(context) { + function checkForRender(node) { + if ( + node.path && + node.path.type === 'GlimmerPathExpression' && + node.path.original === 'render' + ) { + context.report({ + node, + messageId: 'deprecated', + }); + } + } + + return { + GlimmerMustacheStatement(node) { + checkForRender(node); + }, + + GlimmerBlockStatement(node) { + checkForRender(node); + }, + }; + }, +}; diff --git a/tests/lib/rules/template-deprecated-render-helper.js b/tests/lib/rules/template-deprecated-render-helper.js new file mode 100644 index 0000000000..393b639ebd --- /dev/null +++ b/tests/lib/rules/template-deprecated-render-helper.js @@ -0,0 +1,18 @@ +const rule = require('../../../lib/rules/template-deprecated-render-helper'); +const RuleTester = require('eslint').RuleTester; + +const ruleTester = new RuleTester({ + parser: require.resolve('ember-eslint-parser'), + parserOptions: { ecmaVersion: 2022, sourceType: 'module' }, +}); + +ruleTester.run('template-deprecated-render-helper', rule, { + valid: ['', ''], + invalid: [ + { + code: '', + output: null, + errors: [{ messageId: 'deprecated' }], + }, + ], +});