diff --git a/.changeset/lemon-coats-grow.md b/.changeset/lemon-coats-grow.md new file mode 100644 index 0000000000..e60df80662 --- /dev/null +++ b/.changeset/lemon-coats-grow.md @@ -0,0 +1,5 @@ +--- +"@marko/runtime-tags": patch +--- + +Fix attribute tags not being included in pre analyze transforms. diff --git a/packages/runtime-tags/src/translator/visitors/program/pre-analyze.ts b/packages/runtime-tags/src/translator/visitors/program/pre-analyze.ts index 26484f00d7..bb920f0d40 100644 --- a/packages/runtime-tags/src/translator/visitors/program/pre-analyze.ts +++ b/packages/runtime-tags/src/translator/visitors/program/pre-analyze.ts @@ -25,13 +25,19 @@ export function preAnalyze(program: t.NodePath) { function normalizeBody( state: State, - body: t.NodePath< - t.Program["body"][number] | t.MarkoTagBody["body"][number] - >[], + body: + | undefined + | t.NodePath< + | t.Program["body"][number] + | t.MarkoTagBody["body"][number] + | t.MarkoTag["attributeTags"] + >[], ) { - for (const child of body) { - if (child.isMarkoTag()) { - normalizeTag(state, child); + if (body?.length) { + for (const child of body) { + if (child.isMarkoTag()) { + normalizeTag(state, child); + } } } } @@ -40,6 +46,7 @@ function normalizeTag(state: State, tag: t.NodePath) { const { node } = tag; const { name, attributes } = node; normalizeBody(state, tag.get("body").get("body")); + normalizeBody(state, tag.get("attributeTags")); if (node.var) { const insertions = getAssignmentInsertions(node.var);