Skip to content

Commit 4a2fdca

Browse files
committed
fix(core): reset builder extension after compiled each template
1 parent 59d9e37 commit 4a2fdca

File tree

2 files changed

+25
-0
lines changed
  • packages/core

2 files changed

+25
-0
lines changed

packages/core/src/lib/template-engine/built-in-extensions/query-builder/reqTagBuilder.ts

+7
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ export class ReqTagBuilder extends TagBuilder {
100100
if (!this.hasMainBuilder) {
101101
this.wrapOutputWithBuilder();
102102
}
103+
this.reset();
103104
}
104105

105106
public override getMetadata() {
@@ -147,4 +148,10 @@ export class ReqTagBuilder extends TagBuilder {
147148
const builder = this.createAsyncExtensionNode(args, originalChildren);
148149
this.root.children = [builder];
149150
}
151+
152+
private reset() {
153+
this.variableList.clear();
154+
this.root = undefined;
155+
this.hasMainBuilder = false;
156+
}
150157
}

packages/core/test/template-engine/built-in-extensions/query-builder/builder.spec.ts

+18
Original file line numberDiff line numberDiff line change
@@ -127,3 +127,21 @@ it('Extension should throw an error if there are multiple builders using same na
127127
`We can't declare multiple builder with same name. Duplicated name: user (declared at 1:7 and 2:7)`
128128
);
129129
});
130+
131+
it('Extension should reset after compiled each template', async () => {
132+
// Arrange
133+
const { compiler } = await createTestCompiler();
134+
compiler.compile(
135+
`
136+
{% req user main %} select * from users; {% endreq %}
137+
`
138+
);
139+
// Act, Arrange
140+
await expect(
141+
compiler.compile(
142+
`
143+
{% req user main %} select * from users; {% endreq %}
144+
`
145+
)
146+
).resolves.not.toThrow();
147+
});

0 commit comments

Comments
 (0)