{"action":"created","comment":{"url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments/107252124","pull_request_review_id":28204232,"id":107252124,"diff_hunk":"@@ -2188,6 +2191,466 @@ namespace ts {\n             return result;\r\n         }\r\n \r\n+        function createTypeParameterDeclarationFromType(type: TypeParameter, enclosingDeclaration: Node): TypeParameterDeclaration {\r\n+            if (!(type && type.symbol && type.flags & TypeFlags.TypeParameter)) {\r\n+                return undefined;\r\n+            }\r\n+\r\n+            const constraint = createTypeNode(getConstraintFromTypeParameter(type), enclosingDeclaration);\r\n+            const defaultParameter = createTypeNode(getDefaultFromTypeParameter(type), enclosingDeclaration);\r\n+\r\n+            const name = symbolToString(type.symbol);\r\n+            return createTypeParameterDeclaration(name, constraint, defaultParameter);\r\n+        }\r\n+\r\n+        function createParameterDeclarationFromSymbol(parameterSymbol: Symbol, enclosingDeclaration: Node): ParameterDeclaration {\r\n+            const parameterDeclaration = parameterSymbol.declarations[0] as ParameterDeclaration;\r\n+            const parameterType = getTypeOfSymbol(parameterSymbol);\r\n+            const parameterTypeNode = createTypeNode(parameterType, enclosingDeclaration);\r\n+            // TODO: how should we clone members/modifiers?\r\n+            // TODO: check initializer accessibility correctly.\r\n+            const parameterNode = createParameter(\r\n+                parameterDeclaration.decorators && parameterDeclaration.decorators.map(getSynthesizedDeepClone),\r\n+                parameterDeclaration.modifiers && parameterDeclaration.modifiers.map(getSynthesizedDeepClone),\r\n+                parameterDeclaration.dotDotDotToken && createToken(SyntaxKind.DotDotDotToken),\r\n+                getSynthesizedDeepClone(parameterDeclaration.name),\r\n+                parameterDeclaration.questionToken && createToken(SyntaxKind.QuestionToken),\r\n+                parameterTypeNode,\r\n+                parameterDeclaration.initializer && getSynthesizedDeepClone(parameterDeclaration.initializer));\r\n+            return parameterNode;\r\n+        }\r\n+\r\n+        function createSignatureParts(signature: Signature, enclosingDeclaration: Node): SignatureParts {\r\n+            return {\r\n+                typeParameters: signature.typeParameters && signature.typeParameters.map(parameter => createTypeParameterDeclarationFromType(parameter,enclosingDeclaration)),\r\n+                parameters: signature.parameters.map(parameter => createParameterDeclarationFromSymbol(parameter,enclosingDeclaration)),\r\n+                type: createTypeNodeExceptAny(getReturnTypeOfSignature(signature))\r\n+            }\r\n+\r\n+            function createTypeNodeExceptAny(type: Type): TypeNode | undefined {\r\n+                const typeNode = createTypeNode(type, enclosingDeclaration);\r\n+                return typeNode && typeNode.kind !== SyntaxKind.AnyKeyword ? typeNode : undefined;\r\n+            }\r\n+        }\r\n+\r\n+        function createTypeNode(type: Type, enclosingDeclaration: Node): TypeNode {\r\n+            let undefinedArgumentIsError = true;\r\n+            let encounteredError = false;\r\n+            let inObjectTypeLiteral = false;\r\n+            let checkAlias = true;\r\n+            let symbolStack: Symbol[] = undefined;\r\n+\r\n+            const result = createTypeNodeWorker(type);\r\n+            return encounteredError ? undefined: result;\r\n+\r\n+            function createTypeNodeWorker(type: Type): TypeNode {\r\n+                if (!type) {\r\n+                    if (undefinedArgumentIsError) { encounteredError = true; }\r\n+                    return undefined;\r\n+                }\r\n+\r\n+                if (type.flags & TypeFlags.Any) {\r\n+                    return createKeywordTypeNode(SyntaxKind.AnyKeyword);\r\n+                }\r\n+                if (type.flags & TypeFlags.String) {\r\n+                    return createKeywordTypeNode(SyntaxKind.StringKeyword);\r\n+                }\r\n+                if (type.flags & TypeFlags.Number) {\r\n+                    return createKeywordTypeNode(SyntaxKind.NumberKeyword);\r\n+                }\r\n+                if(type.flags & TypeFlags.Boolean) {\r\n+                    return createKeywordTypeNode(SyntaxKind.BooleanKeyword);\r\n+                }\r\n+                if (type.flags & TypeFlags.Enum) {\r\n+                    throw new Error (\"enums not implemented\")\r\n+                }\r\n+                if (type.flags & (TypeFlags.StringLiteral)) {\r\n+                    return createLiteralTypeNode((createLiteral((<LiteralType>type).text)));\r\n+                }\r\n+                if (type.flags & (TypeFlags.NumberLiteral)) {\r\n+                    return createLiteralTypeNode((createNumericLiteral((<LiteralType>type).text)));\r\n+                }\r\n+                if(type.flags & TypeFlags.BooleanLiteral) {\r\n+                    return (<IntrinsicType>type).intrinsicName === \"true\" ? createTrue() : createFalse();\r\n+                }\r\n+                if (type.flags & TypeFlags.EnumLiteral) {\r\n+                    throw new Error(\"enum literal not implemented\");\r\n+                }\r\n+                if (type.flags & TypeFlags.Void) {\r\n+                    return createKeywordTypeNode(SyntaxKind.VoidKeyword);\r\n+                }\r\n+                if (type.flags & TypeFlags.Undefined) {\r\n+                    return createKeywordTypeNode(SyntaxKind.UndefinedKeyword);\r\n+                }\r\n+                if (type.flags & TypeFlags.Null) {\r\n+                    return createKeywordTypeNode(SyntaxKind.NullKeyword);\r\n+                }\r\n+                if (type.flags & TypeFlags.Never) {\r\n+                    return createKeywordTypeNode(SyntaxKind.NeverKeyword);\r\n+                }\r\n+                if (type.flags & TypeFlags.ESSymbol) {\r\n+                    throw new Error(\"ESSymbol not implemented\");\r\n+                }\r\n+                if (type.flags & TypeFlags.NonPrimitive) {\r\n+                    throw new Error(\"Non primitive not implemented\");\r\n+                }\r\n+                if (type.flags & TypeFlags.TypeParameter && (type as TypeParameter).isThisType) {\r\n+                    if (inObjectTypeLiteral) {\r\n+                        encounteredError = true;\r\n+                    }\r\n+                    return createThis();\r\n+                }\r\n+\r\n+                const objectFlags = getObjectFlags(type);\r\n+\r\n+                if (objectFlags & ObjectFlags.Reference) {\r\n+                    Debug.assert(!!(type.flags & TypeFlags.Object));\r\n+                    return createTypeReferenceNodeFromType(<TypeReference>type);\r\n+                }\r\n+                if (objectFlags & ObjectFlags.ClassOrInterface) {\r\n+                    Debug.assert(!!(type.flags & TypeFlags.Object));\r\n+                    const name = createNameFromSymbol(type.symbol);\r\n+                    // TODO: handle type arguments.\r\n+                    return createTypeReferenceNode(name, /*typeArguments*/ undefined);\r\n+                }\r\n+                if (type.flags & TypeFlags.TypeParameter) {\r\n+                    const name = createNameFromSymbol(type.symbol);\r\n+                    // Ignore constraint/default when creating a usage (as opposed to declaration) of a type parameter.\r\n+                    return createTypeReferenceNode(name, /*typeArguments*/ undefined);\r\n+                }\r\n+\r\n+                if (checkAlias && type.aliasSymbol) {\r\n+                    const name = createNameFromSymbol(type.aliasSymbol);\r\n+                    const typeArgumentNodes = mapToTypeNodeArray(type.aliasTypeArguments);\r\n+                    return createTypeReferenceNode(name, typeArgumentNodes);\r\n+                }\r\n+                checkAlias = false;\r\n+\r\n+                if (type.flags & TypeFlags.Union) {\r\n+                    return createUnionOrIntersectionTypeNode(SyntaxKind.UnionType, mapToTypeNodeArray(formatUnionTypes((<UnionType>type).types)));\r\n+                }\r\n+\r\n+                if (type.flags & TypeFlags.Intersection) {\r\n+                    return createUnionOrIntersectionTypeNode(SyntaxKind.IntersectionType, mapToTypeNodeArray((type as UnionType).types));\r\n+                }\r\n+\r\n+                if (objectFlags & (ObjectFlags.Anonymous | ObjectFlags.Mapped)) {\r\n+                    Debug.assert(!!(type.flags & TypeFlags.Object));\r\n+                    // The type is an object literal type.\r\n+                    return createAnonymousTypeNode(<ObjectType>type);\r\n+                }\r\n+                \r\n+                // TODO (aozgaa): implement string and number literals here once there is a testable case.\r","path":"src/compiler/checker.ts","position":163,"original_position":163,"commit_id":"ff061a1b934406a41f0fe5f3d95be5fae5793743","original_commit_id":"ff061a1b934406a41f0fe5f3d95be5fae5793743","user":{"login":"mhegazy","id":8000722,"avatar_url":"https://avatars0.githubusercontent.com/u/8000722?v=3","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},"body":"these are already handled earlier.","created_at":"2017-03-21T19:26:07Z","updated_at":"2017-03-21T19:39:08Z","html_url":"https://github.com/Microsoft/TypeScript/pull/14709#discussion_r107252124","pull_request_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/14709","_links":{"self":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments/107252124"},"html":{"href":"https://github.com/Microsoft/TypeScript/pull/14709#discussion_r107252124"},"pull_request":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/14709"}}},"pull_request":{"url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/14709","id":111350065,"html_url":"https://github.com/Microsoft/TypeScript/pull/14709","diff_url":"https://github.com/Microsoft/TypeScript/pull/14709.diff","patch_url":"https://github.com/Microsoft/TypeScript/pull/14709.patch","issue_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/14709","number":14709,"state":"open","locked":false,"title":"Create type node","user":{"login":"aozgaa","id":3226984,"avatar_url":"https://avatars3.githubusercontent.com/u/3226984?v=3","gravatar_id":"","url":"https://api.github.com/users/aozgaa","html_url":"https://github.com/aozgaa","followers_url":"https://api.github.com/users/aozgaa/followers","following_url":"https://api.github.com/users/aozgaa/following{/other_user}","gists_url":"https://api.github.com/users/aozgaa/gists{/gist_id}","starred_url":"https://api.github.com/users/aozgaa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aozgaa/subscriptions","organizations_url":"https://api.github.com/users/aozgaa/orgs","repos_url":"https://api.github.com/users/aozgaa/repos","events_url":"https://api.github.com/users/aozgaa/events{/privacy}","received_events_url":"https://api.github.com/users/aozgaa/received_events","type":"User","site_admin":false},"body":"<!--\r\nThank you for submitting a pull request!\r\n\r\nHere's a checklist you might find useful.\r\n[ ] There is an associated issue that is labelled\r\n  'Bug' or 'Accepting PRs' or is in the Community milestone\r\n[ ] Code is up-to-date with the `master` branch\r\n[ ] You've successfully run `jake runtests` locally\r\n[ ] You've signed the CLA\r\n[ ] There are new or updated unit tests validating the change\r\n\r\nRefer to CONTRIBUTING.MD for more details.\r\n  https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md\r\n-->\r\n\r\n\r\nMigrating away from `typeToString` in codefixes, with the eventual hope of eliminating `typeToString`.\r\n\r\nWhile there is still work to be done, I'm putting this up now to solicit feedback.\r\nKnown issues:\r\n- we can't represent some forms emitted by `typeToString` in the AST. This is most notable with type references that have type arguments in the middle of their qualified names.\r\n- I'm unsure if the method `getSynthesizeDeepClone` is necessary (https://github.com/Microsoft/TypeScript/compare/master...aozgaa:createTypeNode?expand=1#diff-9c914fcc05c72a72db62c0a023b15f3fR71).\r\n- I've only roughly implemented error handling. Do we want to return a more informative value than `undefined` if we enocunter an error?\r\n- In `buildSymbolDisplay`, we could register a callback to track symbols. Do we want analogous functionality for symbols used in creating type nodes (callback would be at https://github.com/Microsoft/TypeScript/compare/master...aozgaa:createTypeNode?expand=1#diff-c3ed224e4daa84352f7f1abcd23e8ccaR2576). This would be useful for checking whether the resulting identifiers are accessible under the `enclosingDeclaration` argument.\r\n- ~~in https://github.com/Microsoft/TypeScript/pull/14642, we discussed adding a tokenVisitor so that token's don't need to be visited except by callers who want to see them. We are such a caller as we use the textChanges API, which requires that we synthesize clones of all children, including tokens.~~ (added)\r\n- the types for `createSignatureDeclaration` and `updateSignatureDeclaration` are wonky (https://github.com/Microsoft/TypeScript/compare/master...aozgaa:createTypeNode?expand=1#diff-9c914fcc05c72a72db62c0a023b15f3fR392)\r\n","created_at":"2017-03-17T19:27:19Z","updated_at":"2017-03-21T19:39:08Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5507035f41e53046b4d20ccfdc168c9f7994115b","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/14709/commits","review_comments_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/14709/comments","review_comment_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/14709/comments","statuses_url":"https://api.github.com/repos/Microsoft/TypeScript/statuses/ff061a1b934406a41f0fe5f3d95be5fae5793743","head":{"label":"aozgaa:createTypeNode","ref":"createTypeNode","sha":"ff061a1b934406a41f0fe5f3d95be5fae5793743","user":{"login":"aozgaa","id":3226984,"avatar_url":"https://avatars3.githubusercontent.com/u/3226984?v=3","gravatar_id":"","url":"https://api.github.com/users/aozgaa","html_url":"https://github.com/aozgaa","followers_url":"https://api.github.com/users/aozgaa/followers","following_url":"https://api.github.com/users/aozgaa/following{/other_user}","gists_url":"https://api.github.com/users/aozgaa/gists{/gist_id}","starred_url":"https://api.github.com/users/aozgaa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aozgaa/subscriptions","organizations_url":"https://api.github.com/users/aozgaa/orgs","repos_url":"https://api.github.com/users/aozgaa/repos","events_url":"https://api.github.com/users/aozgaa/events{/privacy}","received_events_url":"https://api.github.com/users/aozgaa/received_events","type":"User","site_admin":false},"repo":{"id":79482657,"name":"TypeScript","full_name":"aozgaa/TypeScript","owner":{"login":"aozgaa","id":3226984,"avatar_url":"https://avatars3.githubusercontent.com/u/3226984?v=3","gravatar_id":"","url":"https://api.github.com/users/aozgaa","html_url":"https://github.com/aozgaa","followers_url":"https://api.github.com/users/aozgaa/followers","following_url":"https://api.github.com/users/aozgaa/following{/other_user}","gists_url":"https://api.github.com/users/aozgaa/gists{/gist_id}","starred_url":"https://api.github.com/users/aozgaa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aozgaa/subscriptions","organizations_url":"https://api.github.com/users/aozgaa/orgs","repos_url":"https://api.github.com/users/aozgaa/repos","events_url":"https://api.github.com/users/aozgaa/events{/privacy}","received_events_url":"https://api.github.com/users/aozgaa/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/aozgaa/TypeScript","description":"TypeScript is a superset of JavaScript that compiles to clean JavaScript output.","fork":true,"url":"https://api.github.com/repos/aozgaa/TypeScript","forks_url":"https://api.github.com/repos/aozgaa/TypeScript/forks","keys_url":"https://api.github.com/repos/aozgaa/TypeScript/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aozgaa/TypeScript/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aozgaa/TypeScript/teams","hooks_url":"https://api.github.com/repos/aozgaa/TypeScript/hooks","issue_events_url":"https://api.github.com/repos/aozgaa/TypeScript/issues/events{/number}","events_url":"https://api.github.com/repos/aozgaa/TypeScript/events","assignees_url":"https://api.github.com/repos/aozgaa/TypeScript/assignees{/user}","branches_url":"https://api.github.com/repos/aozgaa/TypeScript/branches{/branch}","tags_url":"https://api.github.com/repos/aozgaa/TypeScript/tags","blobs_url":"https://api.github.com/repos/aozgaa/TypeScript/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aozgaa/TypeScript/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aozgaa/TypeScript/git/refs{/sha}","trees_url":"https://api.github.com/repos/aozgaa/TypeScript/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aozgaa/TypeScript/statuses/{sha}","languages_url":"https://api.github.com/repos/aozgaa/TypeScript/languages","stargazers_url":"https://api.github.com/repos/aozgaa/TypeScript/stargazers","contributors_url":"https://api.github.com/repos/aozgaa/TypeScript/contributors","subscribers_url":"https://api.github.com/repos/aozgaa/TypeScript/subscribers","subscription_url":"https://api.github.com/repos/aozgaa/TypeScript/subscription","commits_url":"https://api.github.com/repos/aozgaa/TypeScript/commits{/sha}","git_commits_url":"https://api.github.com/repos/aozgaa/TypeScript/git/commits{/sha}","comments_url":"https://api.github.com/repos/aozgaa/TypeScript/comments{/number}","issue_comment_url":"https://api.github.com/repos/aozgaa/TypeScript/issues/comments{/number}","contents_url":"https://api.github.com/repos/aozgaa/TypeScript/contents/{+path}","compare_url":"https://api.github.com/repos/aozgaa/TypeScript/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aozgaa/TypeScript/merges","archive_url":"https://api.github.com/repos/aozgaa/TypeScript/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aozgaa/TypeScript/downloads","issues_url":"https://api.github.com/repos/aozgaa/TypeScript/issues{/number}","pulls_url":"https://api.github.com/repos/aozgaa/TypeScript/pulls{/number}","milestones_url":"https://api.github.com/repos/aozgaa/TypeScript/milestones{/number}","notifications_url":"https://api.github.com/repos/aozgaa/TypeScript/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aozgaa/TypeScript/labels{/name}","releases_url":"https://api.github.com/repos/aozgaa/TypeScript/releases{/id}","deployments_url":"https://api.github.com/repos/aozgaa/TypeScript/deployments","created_at":"2017-01-19T18:34:34Z","updated_at":"2017-01-19T18:35:30Z","pushed_at":"2017-03-17T21:56:13Z","git_url":"git://github.com/aozgaa/TypeScript.git","ssh_url":"git@github.com:aozgaa/TypeScript.git","clone_url":"https://github.com/aozgaa/TypeScript.git","svn_url":"https://github.com/aozgaa/TypeScript","homepage":"http://www.typescriptlang.org","size":351934,"stargazers_count":0,"watchers_count":0,"language":"TypeScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Microsoft:master","ref":"master","sha":"595342615b8e9c729626668f3a1eff3c764fb77b","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars1.githubusercontent.com/u/6154722?v=3","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://avatars1.githubusercontent.com/u/6154722?v=3","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-03-21T19:02:41Z","pushed_at":"2017-03-21T19:31:50Z","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":358762,"stargazers_count":20107,"watchers_count":20107,"language":"TypeScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":2854,"mirror_url":null,"open_issues_count":2256,"forks":2854,"open_issues":2256,"watchers":20107,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/14709"},"html":{"href":"https://github.com/Microsoft/TypeScript/pull/14709"},"issue":{"href":"https://api.github.com/repos/Microsoft/TypeScript/issues/14709"},"comments":{"href":"https://api.github.com/repos/Microsoft/TypeScript/issues/14709/comments"},"review_comments":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/14709/comments"},"review_comment":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/14709/commits"},"statuses":{"href":"https://api.github.com/repos/Microsoft/TypeScript/statuses/ff061a1b934406a41f0fe5f3d95be5fae5793743"}}}}
{"actor":{"display_login":"mhegazy"}}