refactor(compiler): element.startSourceSpan is required (#38581)
Previously, the `startSourceSpan` property could be null but in reality it is always well defined - except for a legacy case in the old i18n extraction/merging code, where the typings for source-spans are already being undermined. Making this property non-null, simplifies code elsewhere in the project. PR Close #38581
This commit is contained in:

committed by
Andrew Scott

parent
86e11f1110
commit
a68f1a78a7
@ -42,7 +42,7 @@ class _Humanizer implements html.Visitor {
|
||||
visitElement(element: html.Element, context: any): any {
|
||||
const res = this._appendContext(element, [html.Element, element.name, this.elDepth++]);
|
||||
if (this.includeSourceSpan) {
|
||||
res.push(element.startSourceSpan?.toString() ?? null);
|
||||
res.push(element.startSourceSpan.toString() ?? null);
|
||||
res.push(element.endSourceSpan?.toString() ?? null);
|
||||
}
|
||||
this.result.push(res);
|
||||
@ -82,7 +82,7 @@ class _Humanizer implements html.Visitor {
|
||||
|
||||
private _appendContext(ast: html.Node, input: any[]): any[] {
|
||||
if (!this.includeSourceSpan) return input;
|
||||
input.push(ast.sourceSpan!.toString());
|
||||
input.push(ast.sourceSpan.toString());
|
||||
return input;
|
||||
}
|
||||
}
|
||||
|
@ -667,8 +667,8 @@ import {humanizeDom, humanizeDomSourceSpans, humanizeLineColumn} from './ast_spe
|
||||
it('should set the start and end source spans', () => {
|
||||
const node = <html.Element>parser.parse('<div>a</div>', 'TestComp').rootNodes[0];
|
||||
|
||||
expect(node.startSourceSpan!.start.offset).toEqual(0);
|
||||
expect(node.startSourceSpan!.end.offset).toEqual(5);
|
||||
expect(node.startSourceSpan.start.offset).toEqual(0);
|
||||
expect(node.startSourceSpan.end.offset).toEqual(5);
|
||||
|
||||
expect(node.endSourceSpan!.start.offset).toEqual(6);
|
||||
expect(node.endSourceSpan!.end.offset).toEqual(12);
|
||||
|
@ -56,10 +56,10 @@ import {humanizeNodes} from './ast_spec_utils';
|
||||
const nodes = expand(`{messages.length, plural,=0 {<b>bold</b>}}`).nodes;
|
||||
|
||||
const container: html.Element = <html.Element>nodes[0];
|
||||
expect(container.sourceSpan!.start.col).toEqual(0);
|
||||
expect(container.sourceSpan!.end.col).toEqual(42);
|
||||
expect(container.startSourceSpan!.start.col).toEqual(0);
|
||||
expect(container.startSourceSpan!.end.col).toEqual(42);
|
||||
expect(container.sourceSpan.start.col).toEqual(0);
|
||||
expect(container.sourceSpan.end.col).toEqual(42);
|
||||
expect(container.startSourceSpan.start.col).toEqual(0);
|
||||
expect(container.startSourceSpan.end.col).toEqual(42);
|
||||
expect(container.endSourceSpan!.start.col).toEqual(0);
|
||||
expect(container.endSourceSpan!.end.col).toEqual(42);
|
||||
|
||||
@ -68,15 +68,15 @@ import {humanizeNodes} from './ast_spec_utils';
|
||||
expect(switchExp.sourceSpan.end.col).toEqual(16);
|
||||
|
||||
const template: html.Element = <html.Element>container.children[0];
|
||||
expect(template.sourceSpan!.start.col).toEqual(25);
|
||||
expect(template.sourceSpan!.end.col).toEqual(41);
|
||||
expect(template.sourceSpan.start.col).toEqual(25);
|
||||
expect(template.sourceSpan.end.col).toEqual(41);
|
||||
|
||||
const switchCheck = template.attrs[0];
|
||||
expect(switchCheck.sourceSpan.start.col).toEqual(25);
|
||||
expect(switchCheck.sourceSpan.end.col).toEqual(28);
|
||||
|
||||
const b: html.Element = <html.Element>template.children[0];
|
||||
expect(b.sourceSpan!.start.col).toEqual(29);
|
||||
expect(b.sourceSpan.start.col).toEqual(29);
|
||||
expect(b.endSourceSpan!.end.col).toEqual(40);
|
||||
});
|
||||
|
||||
|
Reference in New Issue
Block a user