Skip to content

Commit 8235952

Browse files
committed
Soften HBS comment; update message to reflect Ember 4.0 removal
The comment "LinkTo always refers to..." overstated our certainty in classic HBS — a user-defined component could shadow it, though we can't detect that without resolver info. The message said "deprecated" but @TagName was fully removed in Ember 4.0 (deprecation ID: ember.built-in-components.legacy-arguments, deprecated in 3.27, removed in 4.0.0, Dec 2021).
1 parent 05df701 commit 8235952

2 files changed

Lines changed: 9 additions & 6 deletions

File tree

lib/rules/template-no-link-to-tagname.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ module.exports = {
1010
},
1111
schema: [],
1212
messages: {
13-
noLinkToTagname: 'tagName attribute on LinkTo is deprecated',
13+
noLinkToTagname:
14+
'@tagName on <LinkTo> is not supported (removed in Ember 4.0). <LinkTo> always renders an <a> element.',
1415
},
1516
originallyFrom: {
1617
name: 'ember-template-lint',
@@ -24,7 +25,9 @@ module.exports = {
2425
const filename = context.filename;
2526
const isStrictMode = filename.endsWith('.gjs') || filename.endsWith('.gts');
2627

27-
// In HBS, LinkTo always refers to Ember's router link component.
28+
// In HBS, `LinkTo` almost always refers to Ember's router link component; a
29+
// user-defined `link-to` could shadow it, but detecting that in classic HBS
30+
// would require resolver-level info the rule doesn't have.
2831
// In GJS/GTS, LinkTo must be explicitly imported from '@ember/routing'
2932
// (and may be renamed, e.g. `import { LinkTo as Link } from '@ember/routing'`).
3033
// local alias → true

tests/lib/rules/template-no-link-to-tagname.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,22 +118,22 @@ hbsRuleTester.run('template-no-link-to-tagname', rule, {
118118
{
119119
code: '<LinkTo @route="routeName" @tagName="button">Link text</LinkTo>',
120120
output: null,
121-
errors: [{ message: 'tagName attribute on LinkTo is deprecated' }],
121+
errors: [{ message: '@tagName on <LinkTo> is not supported (removed in Ember 4.0). <LinkTo> always renders an <a> element.' }],
122122
},
123123
{
124124
code: '<link-to @route="contact" @tagName="div">Contact</link-to>',
125125
output: null,
126-
errors: [{ message: 'tagName attribute on LinkTo is deprecated' }],
126+
errors: [{ message: '@tagName on <LinkTo> is not supported (removed in Ember 4.0). <LinkTo> always renders an <a> element.' }],
127127
},
128128
{
129129
code: '{{#link-to "routeName" tagName="button"}}Link text{{/link-to}}',
130130
output: null,
131-
errors: [{ message: 'tagName attribute on LinkTo is deprecated' }],
131+
errors: [{ message: '@tagName on <LinkTo> is not supported (removed in Ember 4.0). <LinkTo> always renders an <a> element.' }],
132132
},
133133
{
134134
code: '{{link-to "Link text" "routeName" tagName="button"}}',
135135
output: null,
136-
errors: [{ message: 'tagName attribute on LinkTo is deprecated' }],
136+
errors: [{ message: '@tagName on <LinkTo> is not supported (removed in Ember 4.0). <LinkTo> always renders an <a> element.' }],
137137
},
138138
],
139139
});

0 commit comments

Comments
 (0)