{"action":"created","comment":{"url":"https://api.github.com/repos/freechipsproject/firrtl/pulls/comments/223790314","pull_request_review_id":163003826,"id":223790314,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyMzc5MDMxNA==","diff_hunk":"@@ -4,113 +4,341 @@ package firrtl\n \n import logger._\n import java.io.Writer\n+\n import annotations._\n-import scala.collection.mutable\n+import firrtl.RenameMap.IllegalRename\n \n-import firrtl.annotations._  // Note that wildcard imports are not great....\n-import firrtl.ir.Circuit\n+import scala.collection.mutable\n+import firrtl.annotations._\n+import firrtl.ir.{Circuit, Expression}\n import firrtl.Utils.{error, throwInternalError}\n+import firrtl.annotations.TargetToken._\n+import firrtl.annotations.transforms.{EliminateTargetPaths, ResolvePaths}\n \n object RenameMap {\n-  def apply(map: Map[Named, Seq[Named]]) = {\n+  def apply(map: Map[CompleteTarget, Seq[CompleteTarget]]) = {\n     val rm = new RenameMap\n     rm.addMap(map)\n     rm\n   }\n+  case class IllegalRename(reason: String) extends Exception(reason)\n   def apply() = new RenameMap\n }\n+\n /** Map old names to new names\n   *\n   * Transforms that modify names should return a [[RenameMap]] with the [[CircuitState]]\n   * These are mutable datastructures for convenience\n   */\n // TODO This should probably be refactored into immutable and mutable versions\n final class RenameMap private () {","path":"src/main/scala/firrtl/Compiler.scala","position":35,"original_position":35,"commit_id":"f52c3c42bc4866acb2d6d387e563c8df3db0db2b","original_commit_id":"f52c3c42bc4866acb2d6d387e563c8df3db0db2b","user":{"login":"azidar","id":5377148,"node_id":"MDQ6VXNlcjUzNzcxNDg=","avatar_url":"https://avatars1.githubusercontent.com/u/5377148?v=4","gravatar_id":"","url":"https://api.github.com/users/azidar","html_url":"https://github.com/azidar","followers_url":"https://api.github.com/users/azidar/followers","following_url":"https://api.github.com/users/azidar/following{/other_user}","gists_url":"https://api.github.com/users/azidar/gists{/gist_id}","starred_url":"https://api.github.com/users/azidar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/azidar/subscriptions","organizations_url":"https://api.github.com/users/azidar/orgs","repos_url":"https://api.github.com/users/azidar/repos","events_url":"https://api.github.com/users/azidar/events{/privacy}","received_events_url":"https://api.github.com/users/azidar/received_events","type":"User","site_admin":false},"body":"Agreed, we can do this in a future PR.","created_at":"2018-10-09T17:19:14Z","updated_at":"2018-10-09T17:19:15Z","html_url":"https://github.com/freechipsproject/firrtl/pull/865#discussion_r223790314","pull_request_url":"https://api.github.com/repos/freechipsproject/firrtl/pulls/865","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/freechipsproject/firrtl/pulls/comments/223790314"},"html":{"href":"https://github.com/freechipsproject/firrtl/pull/865#discussion_r223790314"},"pull_request":{"href":"https://api.github.com/repos/freechipsproject/firrtl/pulls/865"}},"in_reply_to_id":222057018},"pull_request":{"url":"https://api.github.com/repos/freechipsproject/firrtl/pulls/865","id":206110105,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2MTEwMTA1","html_url":"https://github.com/freechipsproject/firrtl/pull/865","diff_url":"https://github.com/freechipsproject/firrtl/pull/865.diff","patch_url":"https://github.com/freechipsproject/firrtl/pull/865.patch","issue_url":"https://api.github.com/repos/freechipsproject/firrtl/issues/865","number":865,"state":"open","locked":false,"title":"Instance Annotations","user":{"login":"azidar","id":5377148,"node_id":"MDQ6VXNlcjUzNzcxNDg=","avatar_url":"https://avatars1.githubusercontent.com/u/5377148?v=4","gravatar_id":"","url":"https://api.github.com/users/azidar","html_url":"https://github.com/azidar","followers_url":"https://api.github.com/users/azidar/followers","following_url":"https://api.github.com/users/azidar/following{/other_user}","gists_url":"https://api.github.com/users/azidar/gists{/gist_id}","starred_url":"https://api.github.com/users/azidar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/azidar/subscriptions","organizations_url":"https://api.github.com/users/azidar/orgs","repos_url":"https://api.github.com/users/azidar/repos","events_url":"https://api.github.com/users/azidar/events{/privacy}","received_events_url":"https://api.github.com/users/azidar/received_events","type":"User","site_admin":false},"body":"Target Inheritance (green are case classes, blue are traits, strikethrough are deprecated):\r\n<img width=\"1659\" alt=\"screen shot 2018-09-12 at 2 38 03 pm\" src=\"https://user-images.githubusercontent.com/5377148/45454776-ddaaa600-b699-11e8-8b4f-8503cc63dd9b.png\">\r\n\r\nMajor Code Changes/Features Added:\r\n- Added Target trait as replacement for Named\r\n- Added TargetToken as token in building Target\r\n- Added GenericTarget as a catch-all Target\r\n- Added CircuitTarget, ModuleTarget, ReferenceTarget, and InstanceTarget\r\n- Added ResolvePaths annotation\r\n- Added EliminateTargetPaths (and helper class DuplicationHelper)\r\n- Updated Dedup to work with instance annotations\r\n- Updated RenameMap to work with instance annotations\r\n- DCE & ConstantProp extend ResolveAnnotationPaths\r\n\r\nOngoing Discussion:\r\n- [x] Annotation now extends Product, and has `getTargets` API (**Ok, makes sense**)\r\n- [x] RenameMap.get now calculates rename without the Option[Seq], which might be slower? Hard to tell. (**Probably ok**)\r\n- [x] RenameMap.get is ~O(N^3), where N is the hierarchy depth of Target - I think its impossible to calculate in linear time (**ok, maybe check if there are hierarchy/module/instance name changes**)\r\n- [x] Semantics of renaming - EliminateTargetPaths renames instances to modules (**make this legal**)\r\n- [x] Semantics of deletion - if Dedup maps two modules+their annotations to the same module/annotations, do the prior annotations get a DeletedAnnotation, or are they more 'renamed' and thus aren't 'deleted' (**delete them, but print to logger**)\r\n- [ ] New API: Added resolvePaths, resolvePathsOf, getAnnotationsOf to CircuitState for easy per-transform resolution of instance annotations\r\n- [ ] New API: Added prepare to Transform, allowing transforms to modify input CircuitState before execute\r\n- [ ] New API: Added ResolvedAnnotationPaths (requiring implementing ```val annotationClasses```)which allows transforms to automatically resolve instance annotations prior to `execute`\r\n\r\n\r\nTODO:\r\n- [x] Remove IRLookup, as is unrelated to this PR\r\n- [x] Check BrittleAnnotation (which might be unnecessary to this PR)\r\n- [x] Refactor \"Component\" to \"Target\"?\r\n- [x] Restrict targets to be renamed only to pathless targets\r\n- [x] Check completeness of Target prior to renaming it to/from\r\n- [x] Check validity of Target prior to eliminating its path\r\n- [x] Add filtering for long paths to avoid long runtimes\r\n- [x] Fix scaladoc comments\r\n- [x] Clean up code style\r\n- [x] Add better exceptions for Target-related code\r\n- [ ] Write more Target Tests\r\n- [x] Write more Dedup Tests\r\n- [x] Write more Rename Tests\r\n- [x] Write more EliminateTargetPaths Tests\r\n- [X] Support mapping refs to modules\r\n- [x] Log 'deleted' annotations\r\n- [X] Check if there are hierarchy/module/instance name changes\r\n\r\nOld Discussion:\r\n\r\nRegarding RenameMap.get, it appears to be between O(N^3) and O(N^4), but caching reduces this significantly so that I don't think its an issue any more:\r\n<img width=\"580\" alt=\"screen shot 2018-08-31 at 11 59 24 am\" src=\"https://user-images.githubusercontent.com/5377148/44923174-7d207e00-ad15-11e8-97cf-46277fdaf534.png\">\r\n\r\n","created_at":"2018-08-03T18:47:06Z","updated_at":"2018-10-09T17:19:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"395a97cdb2f297481f4c44b8e5491564d5ca2546","assignee":{"login":"chick","id":923223,"node_id":"MDQ6VXNlcjkyMzIyMw==","avatar_url":"https://avatars2.githubusercontent.com/u/923223?v=4","gravatar_id":"","url":"https://api.github.com/users/chick","html_url":"https://github.com/chick","followers_url":"https://api.github.com/users/chick/followers","following_url":"https://api.github.com/users/chick/following{/other_user}","gists_url":"https://api.github.com/users/chick/gists{/gist_id}","starred_url":"https://api.github.com/users/chick/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chick/subscriptions","organizations_url":"https://api.github.com/users/chick/orgs","repos_url":"https://api.github.com/users/chick/repos","events_url":"https://api.github.com/users/chick/events{/privacy}","received_events_url":"https://api.github.com/users/chick/received_events","type":"User","site_admin":false},"assignees":[{"login":"chick","id":923223,"node_id":"MDQ6VXNlcjkyMzIyMw==","avatar_url":"https://avatars2.githubusercontent.com/u/923223?v=4","gravatar_id":"","url":"https://api.github.com/users/chick","html_url":"https://github.com/chick","followers_url":"https://api.github.com/users/chick/followers","following_url":"https://api.github.com/users/chick/following{/other_user}","gists_url":"https://api.github.com/users/chick/gists{/gist_id}","starred_url":"https://api.github.com/users/chick/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chick/subscriptions","organizations_url":"https://api.github.com/users/chick/orgs","repos_url":"https://api.github.com/users/chick/repos","events_url":"https://api.github.com/users/chick/events{/privacy}","received_events_url":"https://api.github.com/users/chick/received_events","type":"User","site_admin":false},{"login":"seldridge","id":1018530,"node_id":"MDQ6VXNlcjEwMTg1MzA=","avatar_url":"https://avatars0.githubusercontent.com/u/1018530?v=4","gravatar_id":"","url":"https://api.github.com/users/seldridge","html_url":"https://github.com/seldridge","followers_url":"https://api.github.com/users/seldridge/followers","following_url":"https://api.github.com/users/seldridge/following{/other_user}","gists_url":"https://api.github.com/users/seldridge/gists{/gist_id}","starred_url":"https://api.github.com/users/seldridge/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/seldridge/subscriptions","organizations_url":"https://api.github.com/users/seldridge/orgs","repos_url":"https://api.github.com/users/seldridge/repos","events_url":"https://api.github.com/users/seldridge/events{/privacy}","received_events_url":"https://api.github.com/users/seldridge/received_events","type":"User","site_admin":false},{"login":"jackkoenig","id":8584418,"node_id":"MDQ6VXNlcjg1ODQ0MTg=","avatar_url":"https://avatars3.githubusercontent.com/u/8584418?v=4","gravatar_id":"","url":"https://api.github.com/users/jackkoenig","html_url":"https://github.com/jackkoenig","followers_url":"https://api.github.com/users/jackkoenig/followers","following_url":"https://api.github.com/users/jackkoenig/following{/other_user}","gists_url":"https://api.github.com/users/jackkoenig/gists{/gist_id}","starred_url":"https://api.github.com/users/jackkoenig/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jackkoenig/subscriptions","organizations_url":"https://api.github.com/users/jackkoenig/orgs","repos_url":"https://api.github.com/users/jackkoenig/repos","events_url":"https://api.github.com/users/jackkoenig/events{/privacy}","received_events_url":"https://api.github.com/users/jackkoenig/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":764805910,"node_id":"MDU6TGFiZWw3NjQ4MDU5MTA=","url":"https://api.github.com/repos/freechipsproject/firrtl/labels/API%20Modification","name":"API Modification","color":"b60205","default":false},{"id":486065772,"node_id":"MDU6TGFiZWw0ODYwNjU3NzI=","url":"https://api.github.com/repos/freechipsproject/firrtl/labels/requesting%20review","name":"requesting review","color":"fbca04","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/freechipsproject/firrtl/pulls/865/commits","review_comments_url":"https://api.github.com/repos/freechipsproject/firrtl/pulls/865/comments","review_comment_url":"https://api.github.com/repos/freechipsproject/firrtl/pulls/comments{/number}","comments_url":"https://api.github.com/repos/freechipsproject/firrtl/issues/865/comments","statuses_url":"https://api.github.com/repos/freechipsproject/firrtl/statuses/f52c3c42bc4866acb2d6d387e563c8df3db0db2b","head":{"label":"freechipsproject:cicl","ref":"cicl","sha":"f52c3c42bc4866acb2d6d387e563c8df3db0db2b","user":{"login":"freechipsproject","id":25232510,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI1MjMyNTEw","avatar_url":"https://avatars2.githubusercontent.com/u/25232510?v=4","gravatar_id":"","url":"https://api.github.com/users/freechipsproject","html_url":"https://github.com/freechipsproject","followers_url":"https://api.github.com/users/freechipsproject/followers","following_url":"https://api.github.com/users/freechipsproject/following{/other_user}","gists_url":"https://api.github.com/users/freechipsproject/gists{/gist_id}","starred_url":"https://api.github.com/users/freechipsproject/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/freechipsproject/subscriptions","organizations_url":"https://api.github.com/users/freechipsproject/orgs","repos_url":"https://api.github.com/users/freechipsproject/repos","events_url":"https://api.github.com/users/freechipsproject/events{/privacy}","received_events_url":"https://api.github.com/users/freechipsproject/received_events","type":"Organization","site_admin":false},"repo":{"id":30780129,"node_id":"MDEwOlJlcG9zaXRvcnkzMDc4MDEyOQ==","name":"firrtl","full_name":"freechipsproject/firrtl","private":false,"owner":{"login":"freechipsproject","id":25232510,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI1MjMyNTEw","avatar_url":"https://avatars2.githubusercontent.com/u/25232510?v=4","gravatar_id":"","url":"https://api.github.com/users/freechipsproject","html_url":"https://github.com/freechipsproject","followers_url":"https://api.github.com/users/freechipsproject/followers","following_url":"https://api.github.com/users/freechipsproject/following{/other_user}","gists_url":"https://api.github.com/users/freechipsproject/gists{/gist_id}","starred_url":"https://api.github.com/users/freechipsproject/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/freechipsproject/subscriptions","organizations_url":"https://api.github.com/users/freechipsproject/orgs","repos_url":"https://api.github.com/users/freechipsproject/repos","events_url":"https://api.github.com/users/freechipsproject/events{/privacy}","received_events_url":"https://api.github.com/users/freechipsproject/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/freechipsproject/firrtl","description":"Flexible Intermediate Representation for RTL","fork":false,"url":"https://api.github.com/repos/freechipsproject/firrtl","forks_url":"https://api.github.com/repos/freechipsproject/firrtl/forks","keys_url":"https://api.github.com/repos/freechipsproject/firrtl/keys{/key_id}","collaborators_url":"https://api.github.com/repos/freechipsproject/firrtl/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/freechipsproject/firrtl/teams","hooks_url":"https://api.github.com/repos/freechipsproject/firrtl/hooks","issue_events_url":"https://api.github.com/repos/freechipsproject/firrtl/issues/events{/number}","events_url":"https://api.github.com/repos/freechipsproject/firrtl/events","assignees_url":"https://api.github.com/repos/freechipsproject/firrtl/assignees{/user}","branches_url":"https://api.github.com/repos/freechipsproject/firrtl/branches{/branch}","tags_url":"https://api.github.com/repos/freechipsproject/firrtl/tags","blobs_url":"https://api.github.com/repos/freechipsproject/firrtl/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/freechipsproject/firrtl/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/freechipsproject/firrtl/git/refs{/sha}","trees_url":"https://api.github.com/repos/freechipsproject/firrtl/git/trees{/sha}","statuses_url":"https://api.github.com/repos/freechipsproject/firrtl/statuses/{sha}","languages_url":"https://api.github.com/repos/freechipsproject/firrtl/languages","stargazers_url":"https://api.github.com/repos/freechipsproject/firrtl/stargazers","contributors_url":"https://api.github.com/repos/freechipsproject/firrtl/contributors","subscribers_url":"https://api.github.com/repos/freechipsproject/firrtl/subscribers","subscription_url":"https://api.github.com/repos/freechipsproject/firrtl/subscription","commits_url":"https://api.github.com/repos/freechipsproject/firrtl/commits{/sha}","git_commits_url":"https://api.github.com/repos/freechipsproject/firrtl/git/commits{/sha}","comments_url":"https://api.github.com/repos/freechipsproject/firrtl/comments{/number}","issue_comment_url":"https://api.github.com/repos/freechipsproject/firrtl/issues/comments{/number}","contents_url":"https://api.github.com/repos/freechipsproject/firrtl/contents/{+path}","compare_url":"https://api.github.com/repos/freechipsproject/firrtl/compare/{base}...{head}","merges_url":"https://api.github.com/repos/freechipsproject/firrtl/merges","archive_url":"https://api.github.com/repos/freechipsproject/firrtl/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/freechipsproject/firrtl/downloads","issues_url":"https://api.github.com/repos/freechipsproject/firrtl/issues{/number}","pulls_url":"https://api.github.com/repos/freechipsproject/firrtl/pulls{/number}","milestones_url":"https://api.github.com/repos/freechipsproject/firrtl/milestones{/number}","notifications_url":"https://api.github.com/repos/freechipsproject/firrtl/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/freechipsproject/firrtl/labels{/name}","releases_url":"https://api.github.com/repos/freechipsproject/firrtl/releases{/id}","deployments_url":"https://api.github.com/repos/freechipsproject/firrtl/deployments","created_at":"2015-02-13T23:04:44Z","updated_at":"2018-10-09T11:02:18Z","pushed_at":"2018-10-08T22:25:20Z","git_url":"git://github.com/freechipsproject/firrtl.git","ssh_url":"git@github.com:freechipsproject/firrtl.git","clone_url":"https://github.com/freechipsproject/firrtl.git","svn_url":"https://github.com/freechipsproject/firrtl","homepage":"http://freechipsproject.github.io/firrtl/","size":47892,"stargazers_count":123,"watchers_count":123,"language":"Scala","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":54,"mirror_url":null,"archived":false,"open_issues_count":141,"license":null,"forks":54,"open_issues":141,"watchers":123,"default_branch":"master"}},"base":{"label":"freechipsproject:master","ref":"master","sha":"860e6844708e4b87ced04bcef0eda7810cba106a","user":{"login":"freechipsproject","id":25232510,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI1MjMyNTEw","avatar_url":"https://avatars2.githubusercontent.com/u/25232510?v=4","gravatar_id":"","url":"https://api.github.com/users/freechipsproject","html_url":"https://github.com/freechipsproject","followers_url":"https://api.github.com/users/freechipsproject/followers","following_url":"https://api.github.com/users/freechipsproject/following{/other_user}","gists_url":"https://api.github.com/users/freechipsproject/gists{/gist_id}","starred_url":"https://api.github.com/users/freechipsproject/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/freechipsproject/subscriptions","organizations_url":"https://api.github.com/users/freechipsproject/orgs","repos_url":"https://api.github.com/users/freechipsproject/repos","events_url":"https://api.github.com/users/freechipsproject/events{/privacy}","received_events_url":"https://api.github.com/users/freechipsproject/received_events","type":"Organization","site_admin":false},"repo":{"id":30780129,"node_id":"MDEwOlJlcG9zaXRvcnkzMDc4MDEyOQ==","name":"firrtl","full_name":"freechipsproject/firrtl","private":false,"owner":{"login":"freechipsproject","id":25232510,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI1MjMyNTEw","avatar_url":"https://avatars2.githubusercontent.com/u/25232510?v=4","gravatar_id":"","url":"https://api.github.com/users/freechipsproject","html_url":"https://github.com/freechipsproject","followers_url":"https://api.github.com/users/freechipsproject/followers","following_url":"https://api.github.com/users/freechipsproject/following{/other_user}","gists_url":"https://api.github.com/users/freechipsproject/gists{/gist_id}","starred_url":"https://api.github.com/users/freechipsproject/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/freechipsproject/subscriptions","organizations_url":"https://api.github.com/users/freechipsproject/orgs","repos_url":"https://api.github.com/users/freechipsproject/repos","events_url":"https://api.github.com/users/freechipsproject/events{/privacy}","received_events_url":"https://api.github.com/users/freechipsproject/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/freechipsproject/firrtl","description":"Flexible Intermediate Representation for RTL","fork":false,"url":"https://api.github.com/repos/freechipsproject/firrtl","forks_url":"https://api.github.com/repos/freechipsproject/firrtl/forks","keys_url":"https://api.github.com/repos/freechipsproject/firrtl/keys{/key_id}","collaborators_url":"https://api.github.com/repos/freechipsproject/firrtl/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/freechipsproject/firrtl/teams","hooks_url":"https://api.github.com/repos/freechipsproject/firrtl/hooks","issue_events_url":"https://api.github.com/repos/freechipsproject/firrtl/issues/events{/number}","events_url":"https://api.github.com/repos/freechipsproject/firrtl/events","assignees_url":"https://api.github.com/repos/freechipsproject/firrtl/assignees{/user}","branches_url":"https://api.github.com/repos/freechipsproject/firrtl/branches{/branch}","tags_url":"https://api.github.com/repos/freechipsproject/firrtl/tags","blobs_url":"https://api.github.com/repos/freechipsproject/firrtl/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/freechipsproject/firrtl/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/freechipsproject/firrtl/git/refs{/sha}","trees_url":"https://api.github.com/repos/freechipsproject/firrtl/git/trees{/sha}","statuses_url":"https://api.github.com/repos/freechipsproject/firrtl/statuses/{sha}","languages_url":"https://api.github.com/repos/freechipsproject/firrtl/languages","stargazers_url":"https://api.github.com/repos/freechipsproject/firrtl/stargazers","contributors_url":"https://api.github.com/repos/freechipsproject/firrtl/contributors","subscribers_url":"https://api.github.com/repos/freechipsproject/firrtl/subscribers","subscription_url":"https://api.github.com/repos/freechipsproject/firrtl/subscription","commits_url":"https://api.github.com/repos/freechipsproject/firrtl/commits{/sha}","git_commits_url":"https://api.github.com/repos/freechipsproject/firrtl/git/commits{/sha}","comments_url":"https://api.github.com/repos/freechipsproject/firrtl/comments{/number}","issue_comment_url":"https://api.github.com/repos/freechipsproject/firrtl/issues/comments{/number}","contents_url":"https://api.github.com/repos/freechipsproject/firrtl/contents/{+path}","compare_url":"https://api.github.com/repos/freechipsproject/firrtl/compare/{base}...{head}","merges_url":"https://api.github.com/repos/freechipsproject/firrtl/merges","archive_url":"https://api.github.com/repos/freechipsproject/firrtl/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/freechipsproject/firrtl/downloads","issues_url":"https://api.github.com/repos/freechipsproject/firrtl/issues{/number}","pulls_url":"https://api.github.com/repos/freechipsproject/firrtl/pulls{/number}","milestones_url":"https://api.github.com/repos/freechipsproject/firrtl/milestones{/number}","notifications_url":"https://api.github.com/repos/freechipsproject/firrtl/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/freechipsproject/firrtl/labels{/name}","releases_url":"https://api.github.com/repos/freechipsproject/firrtl/releases{/id}","deployments_url":"https://api.github.com/repos/freechipsproject/firrtl/deployments","created_at":"2015-02-13T23:04:44Z","updated_at":"2018-10-09T11:02:18Z","pushed_at":"2018-10-08T22:25:20Z","git_url":"git://github.com/freechipsproject/firrtl.git","ssh_url":"git@github.com:freechipsproject/firrtl.git","clone_url":"https://github.com/freechipsproject/firrtl.git","svn_url":"https://github.com/freechipsproject/firrtl","homepage":"http://freechipsproject.github.io/firrtl/","size":47892,"stargazers_count":123,"watchers_count":123,"language":"Scala","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":54,"mirror_url":null,"archived":false,"open_issues_count":141,"license":null,"forks":54,"open_issues":141,"watchers":123,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/freechipsproject/firrtl/pulls/865"},"html":{"href":"https://github.com/freechipsproject/firrtl/pull/865"},"issue":{"href":"https://api.github.com/repos/freechipsproject/firrtl/issues/865"},"comments":{"href":"https://api.github.com/repos/freechipsproject/firrtl/issues/865/comments"},"review_comments":{"href":"https://api.github.com/repos/freechipsproject/firrtl/pulls/865/comments"},"review_comment":{"href":"https://api.github.com/repos/freechipsproject/firrtl/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/freechipsproject/firrtl/pulls/865/commits"},"statuses":{"href":"https://api.github.com/repos/freechipsproject/firrtl/statuses/f52c3c42bc4866acb2d6d387e563c8df3db0db2b"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"azidar"}}