{"action":"created","issue":{"url":"https://api.github.com/repos/apple/swift/issues/7550","repository_url":"https://api.github.com/repos/apple/swift","labels_url":"https://api.github.com/repos/apple/swift/issues/7550/labels{/name}","comments_url":"https://api.github.com/repos/apple/swift/issues/7550/comments","events_url":"https://api.github.com/repos/apple/swift/issues/7550/events","html_url":"https://github.com/apple/swift/pull/7550","id":208300690,"number":7550,"title":"[WIP] [GenericSig Builder] Rework RequirementSource to describe requirement path","user":{"login":"DougGregor","id":989428,"avatar_url":"https://avatars.githubusercontent.com/u/989428?v=3","gravatar_id":"","url":"https://api.github.com/users/DougGregor","html_url":"https://github.com/DougGregor","followers_url":"https://api.github.com/users/DougGregor/followers","following_url":"https://api.github.com/users/DougGregor/following{/other_user}","gists_url":"https://api.github.com/users/DougGregor/gists{/gist_id}","starred_url":"https://api.github.com/users/DougGregor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DougGregor/subscriptions","organizations_url":"https://api.github.com/users/DougGregor/orgs","repos_url":"https://api.github.com/users/DougGregor/repos","events_url":"https://api.github.com/users/DougGregor/events{/privacy}","received_events_url":"https://api.github.com/users/DougGregor/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-02-17T01:05:37Z","updated_at":"2017-02-17T01:05:48Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/apple/swift/pulls/7550","html_url":"https://github.com/apple/swift/pull/7550","diff_url":"https://github.com/apple/swift/pull/7550.diff","patch_url":"https://github.com/apple/swift/pull/7550.patch"},"body":"Reimplement the RequirementSource class, which captures how\r\na particular requirement is satisfied by a generic signature. The\r\nprimary goal of this rework is to keep the complete path one follows\r\nin a generic signature to get from some explicit requirement in the\r\ngeneric signature to some derived requirement or type, e.g.,\r\n\r\n1) Start at an explicit requirement \"C: Collection\"\r\n2) Go to the inherited protocol Sequence,\r\n3) Get the \"Iterator\" associated type\r\n4) Get its conformance to \"IteratorProtocol\"\r\n5) Get the \"Element\" associated type\r\n\r\nWe don't currently capture all of the information we want in the path,\r\nbut the basic structure is there, and should also allow us to capture\r\nmore source-location information, find the \"optimal\" path, etc. There are\r\nare a number of potential uses:\r\n\r\n* IRGen could eventually use this to dig out the witness tables and\r\n  type metadata it needs, instead of using its own fulfillment\r\n  strategy\r\n* SubstitutionMap could use this to lookup conformances, rather than\r\n  it's egregious hacks\r\n* The canonical generic signature builder could use this to lookup\r\n  conformances as needed, e.g., for the recursive-conformances case.\r\n\r\n... and probably more simplifications, once we get this right."},"comment":{"url":"https://api.github.com/repos/apple/swift/issues/comments/280517670","html_url":"https://github.com/apple/swift/pull/7550#issuecomment-280517670","issue_url":"https://api.github.com/repos/apple/swift/issues/7550","id":280517670,"user":{"login":"DougGregor","id":989428,"avatar_url":"https://avatars.githubusercontent.com/u/989428?v=3","gravatar_id":"","url":"https://api.github.com/users/DougGregor","html_url":"https://github.com/DougGregor","followers_url":"https://api.github.com/users/DougGregor/followers","following_url":"https://api.github.com/users/DougGregor/following{/other_user}","gists_url":"https://api.github.com/users/DougGregor/gists{/gist_id}","starred_url":"https://api.github.com/users/DougGregor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DougGregor/subscriptions","organizations_url":"https://api.github.com/users/DougGregor/orgs","repos_url":"https://api.github.com/users/DougGregor/repos","events_url":"https://api.github.com/users/DougGregor/events{/privacy}","received_events_url":"https://api.github.com/users/DougGregor/received_events","type":"User","site_admin":false},"created_at":"2017-02-17T01:05:48Z","updated_at":"2017-02-17T01:05:48Z","body":"@swift-ci please smoke test"}}
{"actor":{"display_login":"DougGregor"}}