This commit fixes a bug in View Engine whereby the compiler errorneously thinks that a method of a component has decorator metadata when that method is one of those in `Object.prototype`, for example `toString`. This bug is discovered in v10.0.4 of `@angular/language-service` after the default bundle format was switched from ES5 to ES2015. ES5 output: ```js if (propMetadata[propName]) { decorators.push.apply(decorators, __spread(propMetadata[propName])); } ``` ES2015 output: ```js if (propMetadata[propName]) { decorators.push(...propMetadata[propName]); } ``` The bug was not discovered in ES5 because the polyfill for the spread operator happily accepts parameters that do not have the `iterable` symbol: ```js function __spread() { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; } ``` whereas in es2015 it’ll fail since the iterable symbol is not present in `propMetadata['toString']` which evaluates to a function. Fixes https://github.com/angular/vscode-ng-language-service/issues/859 PR Close #38292
Angular
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages.
Quickstart
Changelog
Learn about the latest improvements.
Want to help?
Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our guidelines for contributing and then check out one of our issues in the hotlist: community-help.
Description
Languages
TypeScript
68.6%
HTML
12.8%
JavaScript
8.4%
Pug
7%
Starlark
1.4%
Other
1.7%