From 8a0e9792f74fbb0273afdad4c979e1c56aae4b90 Mon Sep 17 00:00:00 2001 From: patrickpircher Date: Fri, 26 Jan 2024 15:12:58 +0100 Subject: [PATCH] fix element block params loc --- packages/@glimmer/syntax/lib/utils.ts | 17 ++++++++++++++++- packages/@glimmer/syntax/test/loc-node-test.ts | 8 +++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/@glimmer/syntax/lib/utils.ts b/packages/@glimmer/syntax/lib/utils.ts index a967b23c20..3b69a829e4 100644 --- a/packages/@glimmer/syntax/lib/utils.ts +++ b/packages/@glimmer/syntax/lib/utils.ts @@ -89,10 +89,25 @@ function parseBlockParams(element: ASTv1.ElementNode): Nullable param.length) { + loc = loc.slice({ + skipEnd: loc.endPosition.column - loc.startPosition.column - param.length, + }); + } + params.push({ type: 'BlockParam', value: param, - loc: element.attributes[i]!.loc, + loc, }); } } diff --git a/packages/@glimmer/syntax/test/loc-node-test.ts b/packages/@glimmer/syntax/test/loc-node-test.ts index 96ff509c8f..979ccd88f7 100644 --- a/packages/@glimmer/syntax/test/loc-node-test.ts +++ b/packages/@glimmer/syntax/test/loc-node-test.ts @@ -320,14 +320,16 @@ test('element block params', () => { let [Foo] = ast.body; if (assertNodeType(Foo, 'ElementNode')) { let [ab, cd, efg] = guardArray({ blockParamNodes: Foo.blockParamNodes }, { min: 3 }); - locEqual(ab, 1, 8, 1, 12); - locEqual(cd, 1, 12, 1, 15); - locEqual(efg, 1, 15, 1, 19); + locEqual(ab, 1, 9, 1, 11); + locEqual(cd, 1, 12, 1, 14); + locEqual(efg, 1, 15, 1, 18); } }); test('mustache block params', () => { let ast = parse(`{{#Foo as |ab cd efg|}}{{/Foo}}`); + ` +{{#Foo as |ab cd efg|}}{{/Foo}}`; let [Foo] = ast.body; if (assertNodeType(Foo, 'BlockStatement')) {