fix(language-service): fix error of array-index out of bounds exception (#33928)
PR Close #33928
This commit is contained in:
parent
5a227d8d7c
commit
c5006e025f
|
@ -295,7 +295,8 @@ class TypeWrapper implements Symbol {
|
||||||
if (nType) {
|
if (nType) {
|
||||||
// get the right tuple type by value, like 'var t: [number, string];'
|
// get the right tuple type by value, like 'var t: [number, string];'
|
||||||
if (nType.isUnion()) {
|
if (nType.isUnion()) {
|
||||||
return new TypeWrapper(nType.types[value], this.context);
|
// return undefined if array index out of bound.
|
||||||
|
return nType.types[value] && new TypeWrapper(nType.types[value], this.context);
|
||||||
}
|
}
|
||||||
return new TypeWrapper(nType, this.context);
|
return new TypeWrapper(nType, this.context);
|
||||||
}
|
}
|
||||||
|
|
|
@ -159,6 +159,13 @@ describe('diagnostics', () => {
|
||||||
.toBe(`Identifier 'badProperty' is not defined. 'Hero' does not contain such a member`);
|
.toBe(`Identifier 'badProperty' is not defined. 'Hero' does not contain such a member`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should not produce errors if tuple array index out of bound', () => {
|
||||||
|
mockHost.override(TEST_TEMPLATE, `
|
||||||
|
{{tupleArray[2].badProperty}}`);
|
||||||
|
const diags = ngLS.getDiagnostics(TEST_TEMPLATE);
|
||||||
|
expect(diags).toEqual([]);
|
||||||
|
});
|
||||||
|
|
||||||
it('should not produce errors on function.bind()', () => {
|
it('should not produce errors on function.bind()', () => {
|
||||||
mockHost.override(TEST_TEMPLATE, `
|
mockHost.override(TEST_TEMPLATE, `
|
||||||
<test-comp (test)="myClick.bind(this)">
|
<test-comp (test)="myClick.bind(this)">
|
||||||
|
|
Loading…
Reference in New Issue