fix(compiler): fix Elements not making a new ParseSourceSpan (#31190)
Change the Element constructor in r3_ast to create a new ParseSourceSpan when regenerating it rather than extending an object, which does not contain the overloaded toString(). PR Close #31190
This commit is contained in:
parent
9c06af2dfc
commit
7035f225ad
|
@ -72,7 +72,7 @@ export class Element implements Node {
|
||||||
public endSourceSpan: ParseSourceSpan|null, public i18n?: I18nAST) {
|
public endSourceSpan: ParseSourceSpan|null, public i18n?: I18nAST) {
|
||||||
// If the element is empty then the source span should include any closing tag
|
// If the element is empty then the source span should include any closing tag
|
||||||
if (children.length === 0 && startSourceSpan && endSourceSpan) {
|
if (children.length === 0 && startSourceSpan && endSourceSpan) {
|
||||||
this.sourceSpan = {...sourceSpan, end: endSourceSpan.end};
|
this.sourceSpan = new ParseSourceSpan(sourceSpan.start, endSourceSpan.end);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
visit<Result>(visitor: Visitor<Result>): Result { return visitor.visitElement(this); }
|
visit<Result>(visitor: Visitor<Result>): Result { return visitor.visitElement(this); }
|
||||||
|
|
|
@ -95,7 +95,17 @@ function expectFromR3Nodes(nodes: t.Node[]) {
|
||||||
return expect(humanizer.result);
|
return expect(humanizer.result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function expectSpanFromHtml(html: string) {
|
||||||
|
const {nodes} = parse(html);
|
||||||
|
return expect(nodes[0] !.sourceSpan.toString());
|
||||||
|
}
|
||||||
|
|
||||||
describe('R3 template transform', () => {
|
describe('R3 template transform', () => {
|
||||||
|
describe('ParseSpan on nodes toString', () => {
|
||||||
|
it('should create valid text span on Element with adjacent start and end tags',
|
||||||
|
() => { expectSpanFromHtml('<div></div>').toBe('<div></div>'); });
|
||||||
|
});
|
||||||
|
|
||||||
describe('Nodes without binding', () => {
|
describe('Nodes without binding', () => {
|
||||||
it('should parse text nodes', () => {
|
it('should parse text nodes', () => {
|
||||||
expectFromHtml('a').toEqual([
|
expectFromHtml('a').toEqual([
|
||||||
|
|
Loading…
Reference in New Issue