{"action":"created","comment":{"url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments/144420293","pull_request_review_id":69073350,"id":144420293,"diff_hunk":"@@ -1163,12 +1185,27 @@ namespace ts {\n          * @param member The class element node.\r\n          * @param isStatic A value indicating whether the member should be a static or instance member.\r\n          */\r\n-        function isInitializedProperty(member: ClassElement, isStatic: boolean) {\r\n+        function isInitializedProperty(member: ClassElement, isStatic: boolean): member is PropertyDeclaration {\r\n             return member.kind === SyntaxKind.PropertyDeclaration\r\n                 && isStatic === hasModifier(member, ModifierFlags.Static)\r\n                 && (<PropertyDeclaration>member).initializer !== undefined;\r\n         }\r\n \r\n+        function isComputedNameWhichRequiresHoisting(member: ClassElement, isStatic: boolean): member is PropertyDeclaration {\r","path":"src/compiler/transformers/ts.ts","position":221,"original_position":221,"commit_id":"6b1d89bd1dc3cc04473b4fd39570d9c97359b357","original_commit_id":"6b1d89bd1dc3cc04473b4fd39570d9c97359b357","user":{"login":"rbuckton","id":3902892,"avatar_url":"https://avatars2.githubusercontent.com/u/3902892?v=4","gravatar_id":"","url":"https://api.github.com/users/rbuckton","html_url":"https://github.com/rbuckton","followers_url":"https://api.github.com/users/rbuckton/followers","following_url":"https://api.github.com/users/rbuckton/following{/other_user}","gists_url":"https://api.github.com/users/rbuckton/gists{/gist_id}","starred_url":"https://api.github.com/users/rbuckton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rbuckton/subscriptions","organizations_url":"https://api.github.com/users/rbuckton/orgs","repos_url":"https://api.github.com/users/rbuckton/repos","events_url":"https://api.github.com/users/rbuckton/events{/privacy}","received_events_url":"https://api.github.com/users/rbuckton/received_events","type":"User","site_admin":false},"body":"Judging from the one place I see this called, `isStatic` is only ever `false`.","created_at":"2017-10-12T21:55:18Z","updated_at":"2017-10-12T21:55:40Z","html_url":"https://github.com/Microsoft/TypeScript/pull/18350#discussion_r144420293","pull_request_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/18350","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments/144420293"},"html":{"href":"https://github.com/Microsoft/TypeScript/pull/18350#discussion_r144420293"},"pull_request":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/18350"}},"in_reply_to_id":144419290},"pull_request":{"url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/18350","id":140140920,"html_url":"https://github.com/Microsoft/TypeScript/pull/18350","diff_url":"https://github.com/Microsoft/TypeScript/pull/18350.diff","patch_url":"https://github.com/Microsoft/TypeScript/pull/18350.patch","issue_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/18350","number":18350,"state":"open","locked":false,"title":"Rework computed property name + decorator emit","user":{"login":"weswigham","id":2932786,"avatar_url":"https://avatars3.githubusercontent.com/u/2932786?v=4","gravatar_id":"","url":"https://api.github.com/users/weswigham","html_url":"https://github.com/weswigham","followers_url":"https://api.github.com/users/weswigham/followers","following_url":"https://api.github.com/users/weswigham/following{/other_user}","gists_url":"https://api.github.com/users/weswigham/gists{/gist_id}","starred_url":"https://api.github.com/users/weswigham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/weswigham/subscriptions","organizations_url":"https://api.github.com/users/weswigham/orgs","repos_url":"https://api.github.com/users/weswigham/repos","events_url":"https://api.github.com/users/weswigham/events{/privacy}","received_events_url":"https://api.github.com/users/weswigham/received_events","type":"User","site_admin":false},"body":"Fixes #17028\r\n\r\nComputed property names for properties were being elided if uninitialized, or, if initialized, run within the constructor of the class. This is incorrect - for reference, computed property names for methods/getters/setters execute outside the class, and only once. This change makes a computed property name be hoisted to outside of the class declaration if it is not \"simple\" (and could have observable side effects from being invoked multiple times on each construction of the class). Then, if hoisted, the hoisted identifier is used in the decorator emit if need be. If not hoisted, but still decorated (if the expression is simple), then the simple expression is duplicated into the decorator emit. As an added bonus, we also no longer omit a computed property name expression whose execution may have observable side effects if there is no initializer.\r\n\r\nWe issue errors on the usage of most complex expressions in computed property names today, but this brings the property computed name emit (when it could matter) in-line with the method/getter/setter computed name runtime behavior. This shouldn't be considered a breaking change, since we issue an error on computed names on properties which are not directly a string/number/symbol; but should now have correct emit for if/when we allow it as part of allowing local symbol types as computed property names or other proposals around expanding what we allow for computed property names. \r\n\r\nAs of now, a \"simple\" computed property is defined as a numeric literal, a string literal, a no substitution template literal, a keyword, or a syntactically well-known symbol - it is possible that there is room to expand this if anyone has further suggestions.","created_at":"2017-09-08T23:02:37Z","updated_at":"2017-10-12T21:55:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"814808c34bf3b61649e9d38d3a73d5824889654a","assignee":null,"assignees":[],"requested_reviewers":[{"login":"sandersn","id":293473,"avatar_url":"https://avatars1.githubusercontent.com/u/293473?v=4","gravatar_id":"","url":"https://api.github.com/users/sandersn","html_url":"https://github.com/sandersn","followers_url":"https://api.github.com/users/sandersn/followers","following_url":"https://api.github.com/users/sandersn/following{/other_user}","gists_url":"https://api.github.com/users/sandersn/gists{/gist_id}","starred_url":"https://api.github.com/users/sandersn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sandersn/subscriptions","organizations_url":"https://api.github.com/users/sandersn/orgs","repos_url":"https://api.github.com/users/sandersn/repos","events_url":"https://api.github.com/users/sandersn/events{/privacy}","received_events_url":"https://api.github.com/users/sandersn/received_events","type":"User","site_admin":false},{"login":"mhegazy","id":8000722,"avatar_url":"https://avatars3.githubusercontent.com/u/8000722?v=4","gravatar_id":"","url":"https://api.github.com/users/mhegazy","html_url":"https://github.com/mhegazy","followers_url":"https://api.github.com/users/mhegazy/followers","following_url":"https://api.github.com/users/mhegazy/following{/other_user}","gists_url":"https://api.github.com/users/mhegazy/gists{/gist_id}","starred_url":"https://api.github.com/users/mhegazy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mhegazy/subscriptions","organizations_url":"https://api.github.com/users/mhegazy/orgs","repos_url":"https://api.github.com/users/mhegazy/repos","events_url":"https://api.github.com/users/mhegazy/events{/privacy}","received_events_url":"https://api.github.com/users/mhegazy/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/18350/commits","review_comments_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/18350/comments","review_comment_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/18350/comments","statuses_url":"https://api.github.com/repos/Microsoft/TypeScript/statuses/6b1d89bd1dc3cc04473b4fd39570d9c97359b357","head":{"label":"weswigham:computed-property-decorator-emit","ref":"computed-property-decorator-emit","sha":"6b1d89bd1dc3cc04473b4fd39570d9c97359b357","user":{"login":"weswigham","id":2932786,"avatar_url":"https://avatars3.githubusercontent.com/u/2932786?v=4","gravatar_id":"","url":"https://api.github.com/users/weswigham","html_url":"https://github.com/weswigham","followers_url":"https://api.github.com/users/weswigham/followers","following_url":"https://api.github.com/users/weswigham/following{/other_user}","gists_url":"https://api.github.com/users/weswigham/gists{/gist_id}","starred_url":"https://api.github.com/users/weswigham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/weswigham/subscriptions","organizations_url":"https://api.github.com/users/weswigham/orgs","repos_url":"https://api.github.com/users/weswigham/repos","events_url":"https://api.github.com/users/weswigham/events{/privacy}","received_events_url":"https://api.github.com/users/weswigham/received_events","type":"User","site_admin":false},"repo":{"id":37160442,"name":"TypeScript","full_name":"weswigham/TypeScript","owner":{"login":"weswigham","id":2932786,"avatar_url":"https://avatars3.githubusercontent.com/u/2932786?v=4","gravatar_id":"","url":"https://api.github.com/users/weswigham","html_url":"https://github.com/weswigham","followers_url":"https://api.github.com/users/weswigham/followers","following_url":"https://api.github.com/users/weswigham/following{/other_user}","gists_url":"https://api.github.com/users/weswigham/gists{/gist_id}","starred_url":"https://api.github.com/users/weswigham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/weswigham/subscriptions","organizations_url":"https://api.github.com/users/weswigham/orgs","repos_url":"https://api.github.com/users/weswigham/repos","events_url":"https://api.github.com/users/weswigham/events{/privacy}","received_events_url":"https://api.github.com/users/weswigham/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/weswigham/TypeScript","description":"TypeScript is a superset of JavaScript that compiles to clean JavaScript output.","fork":true,"url":"https://api.github.com/repos/weswigham/TypeScript","forks_url":"https://api.github.com/repos/weswigham/TypeScript/forks","keys_url":"https://api.github.com/repos/weswigham/TypeScript/keys{/key_id}","collaborators_url":"https://api.github.com/repos/weswigham/TypeScript/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/weswigham/TypeScript/teams","hooks_url":"https://api.github.com/repos/weswigham/TypeScript/hooks","issue_events_url":"https://api.github.com/repos/weswigham/TypeScript/issues/events{/number}","events_url":"https://api.github.com/repos/weswigham/TypeScript/events","assignees_url":"https://api.github.com/repos/weswigham/TypeScript/assignees{/user}","branches_url":"https://api.github.com/repos/weswigham/TypeScript/branches{/branch}","tags_url":"https://api.github.com/repos/weswigham/TypeScript/tags","blobs_url":"https://api.github.com/repos/weswigham/TypeScript/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/weswigham/TypeScript/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/weswigham/TypeScript/git/refs{/sha}","trees_url":"https://api.github.com/repos/weswigham/TypeScript/git/trees{/sha}","statuses_url":"https://api.github.com/repos/weswigham/TypeScript/statuses/{sha}","languages_url":"https://api.github.com/repos/weswigham/TypeScript/languages","stargazers_url":"https://api.github.com/repos/weswigham/TypeScript/stargazers","contributors_url":"https://api.github.com/repos/weswigham/TypeScript/contributors","subscribers_url":"https://api.github.com/repos/weswigham/TypeScript/subscribers","subscription_url":"https://api.github.com/repos/weswigham/TypeScript/subscription","commits_url":"https://api.github.com/repos/weswigham/TypeScript/commits{/sha}","git_commits_url":"https://api.github.com/repos/weswigham/TypeScript/git/commits{/sha}","comments_url":"https://api.github.com/repos/weswigham/TypeScript/comments{/number}","issue_comment_url":"https://api.github.com/repos/weswigham/TypeScript/issues/comments{/number}","contents_url":"https://api.github.com/repos/weswigham/TypeScript/contents/{+path}","compare_url":"https://api.github.com/repos/weswigham/TypeScript/compare/{base}...{head}","merges_url":"https://api.github.com/repos/weswigham/TypeScript/merges","archive_url":"https://api.github.com/repos/weswigham/TypeScript/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/weswigham/TypeScript/downloads","issues_url":"https://api.github.com/repos/weswigham/TypeScript/issues{/number}","pulls_url":"https://api.github.com/repos/weswigham/TypeScript/pulls{/number}","milestones_url":"https://api.github.com/repos/weswigham/TypeScript/milestones{/number}","notifications_url":"https://api.github.com/repos/weswigham/TypeScript/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/weswigham/TypeScript/labels{/name}","releases_url":"https://api.github.com/repos/weswigham/TypeScript/releases{/id}","deployments_url":"https://api.github.com/repos/weswigham/TypeScript/deployments","created_at":"2015-06-09T21:48:48Z","updated_at":"2016-02-04T07:57:52Z","pushed_at":"2017-10-12T19:53:16Z","git_url":"git://github.com/weswigham/TypeScript.git","ssh_url":"git@github.com:weswigham/TypeScript.git","clone_url":"https://github.com/weswigham/TypeScript.git","svn_url":"https://github.com/weswigham/TypeScript","homepage":"http://www.typescriptlang.org","size":366920,"stargazers_count":0,"watchers_count":0,"language":"TypeScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":0,"forks":2,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Microsoft:master","ref":"master","sha":"4487917f89bd5e068a4d35e8db22bf728cab4b74","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":20929025,"name":"TypeScript","full_name":"Microsoft/TypeScript","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/TypeScript","description":"TypeScript is a superset of JavaScript that compiles to clean JavaScript output.","fork":false,"url":"https://api.github.com/repos/Microsoft/TypeScript","forks_url":"https://api.github.com/repos/Microsoft/TypeScript/forks","keys_url":"https://api.github.com/repos/Microsoft/TypeScript/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/TypeScript/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/TypeScript/teams","hooks_url":"https://api.github.com/repos/Microsoft/TypeScript/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/TypeScript/events","assignees_url":"https://api.github.com/repos/Microsoft/TypeScript/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/TypeScript/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/TypeScript/tags","blobs_url":"https://api.github.com/repos/Microsoft/TypeScript/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/TypeScript/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/TypeScript/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/TypeScript/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/TypeScript/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/TypeScript/languages","stargazers_url":"https://api.github.com/repos/Microsoft/TypeScript/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/TypeScript/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/TypeScript/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/TypeScript/subscription","commits_url":"https://api.github.com/repos/Microsoft/TypeScript/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/TypeScript/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/TypeScript/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/TypeScript/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/TypeScript/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/TypeScript/merges","archive_url":"https://api.github.com/repos/Microsoft/TypeScript/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/TypeScript/downloads","issues_url":"https://api.github.com/repos/Microsoft/TypeScript/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/TypeScript/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/TypeScript/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/TypeScript/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/TypeScript/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/TypeScript/deployments","created_at":"2014-06-17T15:28:39Z","updated_at":"2017-10-12T21:20:22Z","pushed_at":"2017-10-12T21:29:19Z","git_url":"git://github.com/Microsoft/TypeScript.git","ssh_url":"git@github.com:Microsoft/TypeScript.git","clone_url":"https://github.com/Microsoft/TypeScript.git","svn_url":"https://github.com/Microsoft/TypeScript","homepage":"http://www.typescriptlang.org","size":464430,"stargazers_count":26583,"watchers_count":26583,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":3957,"mirror_url":null,"open_issues_count":2464,"forks":3957,"open_issues":2464,"watchers":26583,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/18350"},"html":{"href":"https://github.com/Microsoft/TypeScript/pull/18350"},"issue":{"href":"https://api.github.com/repos/Microsoft/TypeScript/issues/18350"},"comments":{"href":"https://api.github.com/repos/Microsoft/TypeScript/issues/18350/comments"},"review_comments":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/18350/comments"},"review_comment":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/18350/commits"},"statuses":{"href":"https://api.github.com/repos/Microsoft/TypeScript/statuses/6b1d89bd1dc3cc04473b4fd39570d9c97359b357"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"rbuckton"}}