fix(compiler): ignore calls to unresolved symbols in metadata (#15970)
This only shows up in the language service. Calls to symbols that are not resolve resulted in null instead of being resolved causing the language service to see exceptions when the null was not expected such as in the animations array. Fixes #15969
This commit is contained in:

committed by
Tobias Bosch

parent
2e47a0d19f
commit
ce47d33cd9
@ -546,6 +546,30 @@ describe('StaticReflector', () => {
|
||||
expect(annotation.providers).toEqual([1, 2, 3, 4, 5, 6, 7]);
|
||||
});
|
||||
|
||||
it('should ignore unresolved calls', () => {
|
||||
const data = Object.create(DEFAULT_TEST_DATA);
|
||||
const file = '/tmp/src/invalid-component.ts';
|
||||
data[file] = `
|
||||
import {Component} from '@angular/core';
|
||||
import {unknown} from 'unresolved';
|
||||
|
||||
@Component({
|
||||
selector: 'tmp',
|
||||
template: () => {},
|
||||
providers: [triggers()]
|
||||
})
|
||||
export class BadComponent {
|
||||
|
||||
}
|
||||
`;
|
||||
init(data, [], () => {}, {verboseInvalidExpression: true});
|
||||
|
||||
const badComponent = reflector.getStaticSymbol(file, 'BadComponent');
|
||||
const annotations = reflector.annotations(badComponent);
|
||||
const annotation = annotations[0];
|
||||
expect(annotation.providers).toEqual([]);
|
||||
});
|
||||
|
||||
describe('inheritance', () => {
|
||||
class ClassDecorator {
|
||||
constructor(public value: any) {}
|
||||
|
Reference in New Issue
Block a user