{"action":"closed","number":27159,"pull_request":{"url":"https://api.github.com/repos/angular/angular/pulls/27159","id":231812482,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMxODEyNDgy","html_url":"https://github.com/angular/angular/pull/27159","diff_url":"https://github.com/angular/angular/pull/27159.diff","patch_url":"https://github.com/angular/angular/pull/27159.patch","issue_url":"https://api.github.com/repos/angular/angular/issues/27159","number":27159,"state":"closed","locked":false,"title":"fix(ivy): prevent ngcc from inadvertently dropping Ivy definitions","user":{"login":"JoostK","id":123679,"node_id":"MDQ6VXNlcjEyMzY3OQ==","avatar_url":"https://avatars3.githubusercontent.com/u/123679?v=4","gravatar_id":"","url":"https://api.github.com/users/JoostK","html_url":"https://github.com/JoostK","followers_url":"https://api.github.com/users/JoostK/followers","following_url":"https://api.github.com/users/JoostK/following{/other_user}","gists_url":"https://api.github.com/users/JoostK/gists{/gist_id}","starred_url":"https://api.github.com/users/JoostK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JoostK/subscriptions","organizations_url":"https://api.github.com/users/JoostK/orgs","repos_url":"https://api.github.com/users/JoostK/repos","events_url":"https://api.github.com/users/JoostK/events{/privacy}","received_events_url":"https://api.github.com/users/JoostK/received_events","type":"User","site_admin":false},"body":"A surprising interaction with the MagicString library caused inserted\r\nIvy definitions to be dropped during the removal of decorators, iff all\r\ndecorators on the class could be removed. In that case, the removal\r\nlocation corresponds with the exact location where Ivy definitions were\r\ninserted into.\r\n\r\nThis commit moves the removal of decorators to occur before Ivy\r\ndefinitions are inserted. This effectively avoids the problem, as later\r\ninserted text fragments will be retained by MagicString.\r\n\r\n## PR Checklist\r\nPlease check if your PR fulfills the following requirements:\r\n\r\n- [x] The commit message follows our guidelines: https://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit\r\n- [x] Tests for the changes have been added (for bug fixes / features)\r\n- [x] Docs have been added / updated (for bug fixes / features)\r\n\r\n\r\n## PR Type\r\nWhat kind of change does this PR introduce?\r\n\r\n<!-- Please check the one that applies to this PR using \"x\". -->\r\n\r\n- [x] Bugfix\r\n- [ ] Feature\r\n- [ ] Code style update (formatting, local variables)\r\n- [ ] Refactoring (no functional changes, no api changes)\r\n- [ ] Build related changes\r\n- [ ] CI related changes\r\n- [ ] Documentation content changes\r\n- [ ] angular.io application / infrastructure changes\r\n- [ ] Other... Please describe:\r\n\r\n\r\n## What is the current behavior?\r\n<!-- Please describe the current behavior that you are modifying, or link to a relevant issue. -->\r\n\r\nngcc would inadvertently drop the hard work of ngtsc.\r\n\r\nAmong others, ES5 bundles of Angular's `CommonModule` would not have been given an `ngModuleDef` and friends. Basically all empty modules were affected by this in ES5 bundles.\r\n\r\n## What is the new behavior?\r\n\r\nCompilation output is no longer dropped when removing decorators.\r\n\r\n## Does this PR introduce a breaking change?\r\n\r\n- [ ] Yes\r\n- [x] No\r\n\r\n\r\n<!-- If this PR contains a breaking change, please describe the impact and migration path for existing applications below. -->\r\n\r\n\r\n## Other information","created_at":"2018-11-18T20:41:38Z","updated_at":"2018-12-14T23:40:59Z","closed_at":"2018-12-14T23:40:58Z","merged_at":null,"merge_commit_sha":"179efbbf6baa964605ad9877b2463d4faa2e54ec","assignee":{"login":"alxhub","id":4175141,"node_id":"MDQ6VXNlcjQxNzUxNDE=","avatar_url":"https://avatars0.githubusercontent.com/u/4175141?v=4","gravatar_id":"","url":"https://api.github.com/users/alxhub","html_url":"https://github.com/alxhub","followers_url":"https://api.github.com/users/alxhub/followers","following_url":"https://api.github.com/users/alxhub/following{/other_user}","gists_url":"https://api.github.com/users/alxhub/gists{/gist_id}","starred_url":"https://api.github.com/users/alxhub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alxhub/subscriptions","organizations_url":"https://api.github.com/users/alxhub/orgs","repos_url":"https://api.github.com/users/alxhub/repos","events_url":"https://api.github.com/users/alxhub/events{/privacy}","received_events_url":"https://api.github.com/users/alxhub/received_events","type":"User","site_admin":false},"assignees":[{"login":"alxhub","id":4175141,"node_id":"MDQ6VXNlcjQxNzUxNDE=","avatar_url":"https://avatars0.githubusercontent.com/u/4175141?v=4","gravatar_id":"","url":"https://api.github.com/users/alxhub","html_url":"https://github.com/alxhub","followers_url":"https://api.github.com/users/alxhub/followers","following_url":"https://api.github.com/users/alxhub/following{/other_user}","gists_url":"https://api.github.com/users/alxhub/gists{/gist_id}","starred_url":"https://api.github.com/users/alxhub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alxhub/subscriptions","organizations_url":"https://api.github.com/users/alxhub/orgs","repos_url":"https://api.github.com/users/alxhub/repos","events_url":"https://api.github.com/users/alxhub/events{/privacy}","received_events_url":"https://api.github.com/users/alxhub/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":133556520,"node_id":"MDU6TGFiZWwxMzM1NTY1MjA=","url":"https://api.github.com/repos/angular/angular/labels/PR%20action:%20merge","name":"PR action: merge","color":"99ff66","default":false},{"id":770639208,"node_id":"MDU6TGFiZWw3NzA2MzkyMDg=","url":"https://api.github.com/repos/angular/angular/labels/PR%20action:%20merge-assistance","name":"PR action: merge-assistance","color":"d93f0b","default":false},{"id":660621334,"node_id":"MDU6TGFiZWw2NjA2MjEzMzQ=","url":"https://api.github.com/repos/angular/angular/labels/PR%20target:%20master-only","name":"PR target: master-only","color":"5319e7","default":false},{"id":149476251,"node_id":"MDU6TGFiZWwxNDk0NzYyNTE=","url":"https://api.github.com/repos/angular/angular/labels/cla:%20yes","name":"cla: yes","color":"009800","default":false},{"id":799860804,"node_id":"MDU6TGFiZWw3OTk4NjA4MDQ=","url":"https://api.github.com/repos/angular/angular/labels/comp:%20ivy","name":"comp: ivy","color":"c5def5","default":false},{"id":218358951,"node_id":"MDU6TGFiZWwyMTgzNTg5NTE=","url":"https://api.github.com/repos/angular/angular/labels/effort1:%20hours","name":"effort1: hours","color":"bfe5bf","default":false},{"id":375497160,"node_id":"MDU6TGFiZWwzNzU0OTcxNjA=","url":"https://api.github.com/repos/angular/angular/labels/freq2:%20medium","name":"freq2: medium","color":"fbca04","default":false},{"id":836688282,"node_id":"MDU6TGFiZWw4MzY2ODgyODI=","url":"https://api.github.com/repos/angular/angular/labels/risk:%20low","name":"risk: low","color":"ffe6ff","default":false},{"id":130606843,"node_id":"MDU6TGFiZWwxMzA2MDY4NDM=","url":"https://api.github.com/repos/angular/angular/labels/type:%20bug/fix","name":"type: bug/fix","color":"EEEEEE","default":false}],"milestone":{"url":"https://api.github.com/repos/angular/angular/milestones/82","html_url":"https://github.com/angular/angular/milestone/82","labels_url":"https://api.github.com/repos/angular/angular/milestones/82/labels","id":3045967,"node_id":"MDk6TWlsZXN0b25lMzA0NTk2Nw==","number":82,"title":"Backlog","description":"Milestone for triaged issues that have not yet been scheduled for resolution.","creator":{"login":"IgorMinar","id":216296,"node_id":"MDQ6VXNlcjIxNjI5Ng==","avatar_url":"https://avatars3.githubusercontent.com/u/216296?v=4","gravatar_id":"","url":"https://api.github.com/users/IgorMinar","html_url":"https://github.com/IgorMinar","followers_url":"https://api.github.com/users/IgorMinar/followers","following_url":"https://api.github.com/users/IgorMinar/following{/other_user}","gists_url":"https://api.github.com/users/IgorMinar/gists{/gist_id}","starred_url":"https://api.github.com/users/IgorMinar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IgorMinar/subscriptions","organizations_url":"https://api.github.com/users/IgorMinar/orgs","repos_url":"https://api.github.com/users/IgorMinar/repos","events_url":"https://api.github.com/users/IgorMinar/events{/privacy}","received_events_url":"https://api.github.com/users/IgorMinar/received_events","type":"User","site_admin":false},"open_issues":2126,"closed_issues":602,"state":"open","created_at":"2018-01-18T16:52:20Z","updated_at":"2018-12-14T23:40:58Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/angular/angular/pulls/27159/commits","review_comments_url":"https://api.github.com/repos/angular/angular/pulls/27159/comments","review_comment_url":"https://api.github.com/repos/angular/angular/pulls/comments{/number}","comments_url":"https://api.github.com/repos/angular/angular/issues/27159/comments","statuses_url":"https://api.github.com/repos/angular/angular/statuses/1dbf9413372e09071221b531023c4dab13200eae","head":{"label":"JoostK:ivy-ngcc-prevent-missing-code","ref":"ivy-ngcc-prevent-missing-code","sha":"1dbf9413372e09071221b531023c4dab13200eae","user":{"login":"JoostK","id":123679,"node_id":"MDQ6VXNlcjEyMzY3OQ==","avatar_url":"https://avatars3.githubusercontent.com/u/123679?v=4","gravatar_id":"","url":"https://api.github.com/users/JoostK","html_url":"https://github.com/JoostK","followers_url":"https://api.github.com/users/JoostK/followers","following_url":"https://api.github.com/users/JoostK/following{/other_user}","gists_url":"https://api.github.com/users/JoostK/gists{/gist_id}","starred_url":"https://api.github.com/users/JoostK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JoostK/subscriptions","organizations_url":"https://api.github.com/users/JoostK/orgs","repos_url":"https://api.github.com/users/JoostK/repos","events_url":"https://api.github.com/users/JoostK/events{/privacy}","received_events_url":"https://api.github.com/users/JoostK/received_events","type":"User","site_admin":false},"repo":{"id":107854570,"node_id":"MDEwOlJlcG9zaXRvcnkxMDc4NTQ1NzA=","name":"angular","full_name":"JoostK/angular","private":false,"owner":{"login":"JoostK","id":123679,"node_id":"MDQ6VXNlcjEyMzY3OQ==","avatar_url":"https://avatars3.githubusercontent.com/u/123679?v=4","gravatar_id":"","url":"https://api.github.com/users/JoostK","html_url":"https://github.com/JoostK","followers_url":"https://api.github.com/users/JoostK/followers","following_url":"https://api.github.com/users/JoostK/following{/other_user}","gists_url":"https://api.github.com/users/JoostK/gists{/gist_id}","starred_url":"https://api.github.com/users/JoostK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JoostK/subscriptions","organizations_url":"https://api.github.com/users/JoostK/orgs","repos_url":"https://api.github.com/users/JoostK/repos","events_url":"https://api.github.com/users/JoostK/events{/privacy}","received_events_url":"https://api.github.com/users/JoostK/received_events","type":"User","site_admin":false},"html_url":"https://github.com/JoostK/angular","description":"One framework. Mobile & desktop.","fork":true,"url":"https://api.github.com/repos/JoostK/angular","forks_url":"https://api.github.com/repos/JoostK/angular/forks","keys_url":"https://api.github.com/repos/JoostK/angular/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JoostK/angular/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JoostK/angular/teams","hooks_url":"https://api.github.com/repos/JoostK/angular/hooks","issue_events_url":"https://api.github.com/repos/JoostK/angular/issues/events{/number}","events_url":"https://api.github.com/repos/JoostK/angular/events","assignees_url":"https://api.github.com/repos/JoostK/angular/assignees{/user}","branches_url":"https://api.github.com/repos/JoostK/angular/branches{/branch}","tags_url":"https://api.github.com/repos/JoostK/angular/tags","blobs_url":"https://api.github.com/repos/JoostK/angular/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JoostK/angular/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JoostK/angular/git/refs{/sha}","trees_url":"https://api.github.com/repos/JoostK/angular/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JoostK/angular/statuses/{sha}","languages_url":"https://api.github.com/repos/JoostK/angular/languages","stargazers_url":"https://api.github.com/repos/JoostK/angular/stargazers","contributors_url":"https://api.github.com/repos/JoostK/angular/contributors","subscribers_url":"https://api.github.com/repos/JoostK/angular/subscribers","subscription_url":"https://api.github.com/repos/JoostK/angular/subscription","commits_url":"https://api.github.com/repos/JoostK/angular/commits{/sha}","git_commits_url":"https://api.github.com/repos/JoostK/angular/git/commits{/sha}","comments_url":"https://api.github.com/repos/JoostK/angular/comments{/number}","issue_comment_url":"https://api.github.com/repos/JoostK/angular/issues/comments{/number}","contents_url":"https://api.github.com/repos/JoostK/angular/contents/{+path}","compare_url":"https://api.github.com/repos/JoostK/angular/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JoostK/angular/merges","archive_url":"https://api.github.com/repos/JoostK/angular/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JoostK/angular/downloads","issues_url":"https://api.github.com/repos/JoostK/angular/issues{/number}","pulls_url":"https://api.github.com/repos/JoostK/angular/pulls{/number}","milestones_url":"https://api.github.com/repos/JoostK/angular/milestones{/number}","notifications_url":"https://api.github.com/repos/JoostK/angular/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JoostK/angular/labels{/name}","releases_url":"https://api.github.com/repos/JoostK/angular/releases{/id}","deployments_url":"https://api.github.com/repos/JoostK/angular/deployments","created_at":"2017-10-22T09:58:30Z","updated_at":"2018-12-09T14:34:30Z","pushed_at":"2018-12-13T07:57:10Z","git_url":"git://github.com/JoostK/angular.git","ssh_url":"git@github.com:JoostK/angular.git","clone_url":"https://github.com/JoostK/angular.git","svn_url":"https://github.com/JoostK/angular","homepage":"https://angular.io","size":94291,"stargazers_count":0,"watchers_count":0,"language":"TypeScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"angular:master","ref":"master","sha":"9c7fb0dfe186a9822cd48958269fa15e4dc70f48","user":{"login":"angular","id":139426,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzOTQyNg==","avatar_url":"https://avatars3.githubusercontent.com/u/139426?v=4","gravatar_id":"","url":"https://api.github.com/users/angular","html_url":"https://github.com/angular","followers_url":"https://api.github.com/users/angular/followers","following_url":"https://api.github.com/users/angular/following{/other_user}","gists_url":"https://api.github.com/users/angular/gists{/gist_id}","starred_url":"https://api.github.com/users/angular/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/angular/subscriptions","organizations_url":"https://api.github.com/users/angular/orgs","repos_url":"https://api.github.com/users/angular/repos","events_url":"https://api.github.com/users/angular/events{/privacy}","received_events_url":"https://api.github.com/users/angular/received_events","type":"Organization","site_admin":false},"repo":{"id":24195339,"node_id":"MDEwOlJlcG9zaXRvcnkyNDE5NTMzOQ==","name":"angular","full_name":"angular/angular","private":false,"owner":{"login":"angular","id":139426,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzOTQyNg==","avatar_url":"https://avatars3.githubusercontent.com/u/139426?v=4","gravatar_id":"","url":"https://api.github.com/users/angular","html_url":"https://github.com/angular","followers_url":"https://api.github.com/users/angular/followers","following_url":"https://api.github.com/users/angular/following{/other_user}","gists_url":"https://api.github.com/users/angular/gists{/gist_id}","starred_url":"https://api.github.com/users/angular/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/angular/subscriptions","organizations_url":"https://api.github.com/users/angular/orgs","repos_url":"https://api.github.com/users/angular/repos","events_url":"https://api.github.com/users/angular/events{/privacy}","received_events_url":"https://api.github.com/users/angular/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/angular/angular","description":"One framework. Mobile & desktop.","fork":false,"url":"https://api.github.com/repos/angular/angular","forks_url":"https://api.github.com/repos/angular/angular/forks","keys_url":"https://api.github.com/repos/angular/angular/keys{/key_id}","collaborators_url":"https://api.github.com/repos/angular/angular/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/angular/angular/teams","hooks_url":"https://api.github.com/repos/angular/angular/hooks","issue_events_url":"https://api.github.com/repos/angular/angular/issues/events{/number}","events_url":"https://api.github.com/repos/angular/angular/events","assignees_url":"https://api.github.com/repos/angular/angular/assignees{/user}","branches_url":"https://api.github.com/repos/angular/angular/branches{/branch}","tags_url":"https://api.github.com/repos/angular/angular/tags","blobs_url":"https://api.github.com/repos/angular/angular/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/angular/angular/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/angular/angular/git/refs{/sha}","trees_url":"https://api.github.com/repos/angular/angular/git/trees{/sha}","statuses_url":"https://api.github.com/repos/angular/angular/statuses/{sha}","languages_url":"https://api.github.com/repos/angular/angular/languages","stargazers_url":"https://api.github.com/repos/angular/angular/stargazers","contributors_url":"https://api.github.com/repos/angular/angular/contributors","subscribers_url":"https://api.github.com/repos/angular/angular/subscribers","subscription_url":"https://api.github.com/repos/angular/angular/subscription","commits_url":"https://api.github.com/repos/angular/angular/commits{/sha}","git_commits_url":"https://api.github.com/repos/angular/angular/git/commits{/sha}","comments_url":"https://api.github.com/repos/angular/angular/comments{/number}","issue_comment_url":"https://api.github.com/repos/angular/angular/issues/comments{/number}","contents_url":"https://api.github.com/repos/angular/angular/contents/{+path}","compare_url":"https://api.github.com/repos/angular/angular/compare/{base}...{head}","merges_url":"https://api.github.com/repos/angular/angular/merges","archive_url":"https://api.github.com/repos/angular/angular/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/angular/angular/downloads","issues_url":"https://api.github.com/repos/angular/angular/issues{/number}","pulls_url":"https://api.github.com/repos/angular/angular/pulls{/number}","milestones_url":"https://api.github.com/repos/angular/angular/milestones{/number}","notifications_url":"https://api.github.com/repos/angular/angular/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/angular/angular/labels{/name}","releases_url":"https://api.github.com/repos/angular/angular/releases{/id}","deployments_url":"https://api.github.com/repos/angular/angular/deployments","created_at":"2014-09-18T16:12:01Z","updated_at":"2018-12-14T23:31:59Z","pushed_at":"2018-12-14T23:27:44Z","git_url":"git://github.com/angular/angular.git","ssh_url":"git@github.com:angular/angular.git","clone_url":"https://github.com/angular/angular.git","svn_url":"https://github.com/angular/angular","homepage":"https://angular.io","size":96100,"stargazers_count":43517,"watchers_count":43517,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":11158,"mirror_url":null,"archived":false,"open_issues_count":2606,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":11158,"open_issues":2606,"watchers":43517,"default_branch":"2.0.x"}},"_links":{"self":{"href":"https://api.github.com/repos/angular/angular/pulls/27159"},"html":{"href":"https://github.com/angular/angular/pull/27159"},"issue":{"href":"https://api.github.com/repos/angular/angular/issues/27159"},"comments":{"href":"https://api.github.com/repos/angular/angular/issues/27159/comments"},"review_comments":{"href":"https://api.github.com/repos/angular/angular/pulls/27159/comments"},"review_comment":{"href":"https://api.github.com/repos/angular/angular/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/angular/angular/pulls/27159/commits"},"statuses":{"href":"https://api.github.com/repos/angular/angular/statuses/1dbf9413372e09071221b531023c4dab13200eae"}},"author_association":"NONE","merged":false,"mergeable":true,"rebaseable":false,"mergeable_state":"unstable","merged_by":null,"comments":4,"review_comments":8,"maintainer_can_modify":false,"commits":2,"additions":38,"deletions":24,"changed_files":4}}
{"actor":{"display_login":"mhevery"}}