fix(language-plugin-pug): pre-map HTML to Pug offset attribute #5905
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix #5899
The issue was introduced by the post-processing of
normalizeTemplateASTin #5782.When
normalizeTemplateASTcallscreateIfBranch, it retrieves the offset to calculate the position of the conditional expression. Since@vue/language-pluginproxies theoffsetproperty,createIfBranchobtains the offset based on the Pug position.Subsequently, the node with the Pug position is added to the AST tree. The proxy from
@vue/language-pluginestablishes a proxy for the new node, causing the next retrieval ofoffsetto map the already Pug-positioned offset from HTML to Pug again, resulting in an incorrect outcome.The issue occurs in
normalizeIfBranch, so it only happens when a Pug template uses bothv-slotandv-ifon the same node.The solution is to avoid using a proxy and perform the HTML to Pug conversion in advance within
compileSFCTemplate.