Skip to content

Commit 9d1cb9c

Browse files
committed
Add GlimmerElementNode block param tracking to prevent false positives
1 parent 131cd12 commit 9d1cb9c

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

lib/rules/template-no-curly-component-invocation.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ module.exports = {
118118
create(context) {
119119
const config = parseConfig(context.options[0]);
120120

121-
// Stack of block-param name arrays, one entry per active GlimmerBlockStatement.
121+
// Stack of block-param name arrays, one entry per active GlimmerBlockStatement or GlimmerElementNode.
122122
const blockParamStack = [];
123123
let insideAttrNode = false;
124124

@@ -289,6 +289,14 @@ module.exports = {
289289
blockParamStack.pop();
290290
},
291291

292+
GlimmerElementNode(node) {
293+
blockParamStack.push(node.blockParams ?? []);
294+
},
295+
296+
'GlimmerElementNode:exit'() {
297+
blockParamStack.pop();
298+
},
299+
292300
GlimmerAttrNode() {
293301
insideAttrNode = true;
294302
},

tests/lib/rules/template-no-curly-component-invocation.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ ruleTester.run('template-no-curly-component-invocation', rule, {
2828
'<template>{{true}}</template>',
2929
'<template>{{foo bar}}</template>',
3030
'<template>{{#each items as |item|}}{{item}}{{/each}}</template>',
31+
// ElementNode block params should be recognized as local variables
32+
'<template><Foo as |bar|>{{bar}}</Foo></template>',
33+
'<template><Foo as |bar|>{{bar.baz}}</Foo></template>',
3134
'<template>{{#if someProperty}}yay{{/if}}</template>',
3235
'<template><FooBar /></template>',
3336
{
@@ -200,6 +203,9 @@ hbsRuleTester.run('template-no-curly-component-invocation', rule, {
200203
// Built-in helpers / keywords (always valid)
201204
'{{#each items as |item|}}{{item}}{{/each}}',
202205
'{{#each items as |item|}}{{item.foo}}{{/each}}',
206+
// ElementNode block params should be recognized as local variables
207+
'<Foo as |bar|>{{bar}}</Foo>',
208+
'<Foo as |bar|>{{bar.baz}}</Foo>',
203209
'{{42}}',
204210
'{{true}}',
205211
'{{undefined}}',

0 commit comments

Comments
 (0)