{"action":"created","comment":{"url":"https://api.github.com/repos/rust-lang/rust/pulls/comments/22771564","id":22771564,"diff_hunk":"@@ -71,7 +73,58 @@ impl Session {\n         self.diagnostic().handler().fatal(msg)\n     }\n     pub fn span_err(&self, sp: Span, msg: &str) {\n-        self.diagnostic().span_err(sp, msg)\n+        // Conditions for enabling multi-line errors:\n+        if !msg.contains(\"mismatched types\") &&\n+           !msg.contains(\"type mismatch resolving\") &&\n+           !msg.contains(\"if and else have incompatible types\") &&\n+           !msg.contains(\"if may be missing an else clause\") &&\n+           !msg.contains(\"match arms have incompatible types\") &&\n+           !msg.contains(\"structure constructor specifies a structure of type\") {\n+            return self.diagnostic().span_err(sp, msg);\n+        }\n+\n+        let first  = Regex::new(r\"[( ]expected\").unwrap();\n+        let second = Regex::new(r\" found\").unwrap();\n+        let third  = Regex::new(\n+            r\"\\((values differ|lifetime|cyclic type of infinite size)\").unwrap();\n+\n+        let mut new_msg = String::new();\n+        let mut beg = 0u;\n+\n+        // Insert `\\n` before expected and found.\n+        for (pos1, pos2) in  first.find_iter(msg).zip(\n+                            second.find_iter(msg)) {\n+            // A `(` may be preceded by a space and it should be trimmed\n+            new_msg = new_msg +\n+                      msg.slice(beg, pos1.0).trim_right() + // prefix","path":"src/librustc/session/mod.rs","position":37,"original_position":37,"commit_id":"fb85490f67dae94bac86d486b1fd00fb177738ab","original_commit_id":"fb85490f67dae94bac86d486b1fd00fb177738ab","user":{"login":"nick29581","id":762626,"avatar_url":"https://avatars.githubusercontent.com/u/762626?v=3","gravatar_id":"","url":"https://api.github.com/users/nick29581","html_url":"https://github.com/nick29581","followers_url":"https://api.github.com/users/nick29581/followers","following_url":"https://api.github.com/users/nick29581/following{/other_user}","gists_url":"https://api.github.com/users/nick29581/gists{/gist_id}","starred_url":"https://api.github.com/users/nick29581/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nick29581/subscriptions","organizations_url":"https://api.github.com/users/nick29581/orgs","repos_url":"https://api.github.com/users/nick29581/repos","events_url":"https://api.github.com/users/nick29581/events{/privacy}","received_events_url":"https://api.github.com/users/nick29581/received_events","type":"User","site_admin":false},"body":"prefer [] slicing notation to slice","created_at":"2015-01-11T23:06:33Z","updated_at":"2015-01-11T23:06:33Z","html_url":"https://github.com/rust-lang/rust/pull/19870#discussion_r22771564","pull_request_url":"https://api.github.com/repos/rust-lang/rust/pulls/19870","_links":{"self":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/comments/22771564"},"html":{"href":"https://github.com/rust-lang/rust/pull/19870#discussion_r22771564"},"pull_request":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/19870"}}},"pull_request":{"url":"https://api.github.com/repos/rust-lang/rust/pulls/19870","id":26055333,"html_url":"https://github.com/rust-lang/rust/pull/19870","diff_url":"https://github.com/rust-lang/rust/pull/19870.diff","patch_url":"https://github.com/rust-lang/rust/pull/19870.patch","issue_url":"https://api.github.com/repos/rust-lang/rust/issues/19870","number":19870,"state":"open","locked":false,"title":"Multi-line errors","user":{"login":"mdinger","id":4156987,"avatar_url":"https://avatars.githubusercontent.com/u/4156987?v=3","gravatar_id":"","url":"https://api.github.com/users/mdinger","html_url":"https://github.com/mdinger","followers_url":"https://api.github.com/users/mdinger/followers","following_url":"https://api.github.com/users/mdinger/following{/other_user}","gists_url":"https://api.github.com/users/mdinger/gists{/gist_id}","starred_url":"https://api.github.com/users/mdinger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mdinger/subscriptions","organizations_url":"https://api.github.com/users/mdinger/orgs","repos_url":"https://api.github.com/users/mdinger/repos","events_url":"https://api.github.com/users/mdinger/events{/privacy}","received_events_url":"https://api.github.com/users/mdinger/received_events","type":"User","site_admin":false},"body":"This is a continuation of #19203 which I apparently broke by force pushing after it was closed. I'm attempting to add multi-line errors where they are largely beneficial - to help differentiate different types in compiler messages. As before, this is still a simple fix.\r\n\r\n#### Testcase:\r\n```rust\r\nstruct S;\r\n\r\nfn test() -> Option<int> {\r\n    let s: S;\r\n\r\n    s\r\n}\r\n\r\nfn test2() -> Option<int> {\r\n    Ok(7) // Should be Some(7)\r\n}\r\n\r\nimpl Iterator<uint> for S {\r\n    fn next(&mut self) -> Result<uint, uint> { Ok(7) }\r\n}\r\n\r\nfn main(){ \r\n    test();\r\n    test2();\r\n}\r\n```\r\n\r\n---\r\n\r\n#### Single-line playpen errors:\r\n```cmd\r\n<anon>:6:5: 6:6 error: mismatched types: expected `core::option::Option<int>`, found `S` (expected enum core::option::Option, found struct S)\r\n<anon>:6     s\r\n             ^\r\n<anon>:10:5: 10:10 error: mismatched types: expected `core::option::Option<int>`, found `core::result::Result<_, _>` (expected enum core::option::Option, found enum core::result::Result)\r\n<anon>:10     Ok(7) // Should be Some(7)\r\n              ^~~~~\r\n<anon>:14:5: 14:55 error: method `next` has an incompatible type for trait: expected enum core::option::Option, found enum core::result::Result [E0053]\r\n<anon>:14     fn next(&mut self) -> Result<uint, uint> { Ok(7) }\r\n              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\nerror: aborting due to 3 previous errors\r\nplaypen: application terminated with error code 101\r\n```\r\n\r\n---\r\n\r\n#### Multi-line errors:\r\n```cmd\r\n$ ./rustc test.rs\r\ntest.rs:6:5: 6:6 error: mismatched types:\r\n expected `core::option::Option<int>`,\r\n    found `S`\r\n(expected enum `core::option::Option`,\r\n    found struct `S`)\r\ntest.rs:6     s\r\n              ^\r\ntest.rs:10:5: 10:10 error: mismatched types:\r\n expected `core::option::Option<int>`,\r\n    found `core::result::Result<_, _>`\r\n(expected enum `core::option::Option`,\r\n    found enum `core::result::Result`)\r\ntest.rs:10     Ok(7) // Should be Some(7)\r\n               ^~~~~\r\ntest.rs:14:5: 14:55 error: method `next` has an incompatible type for trait:\r\n expected enum `core::option::Option`,\r\n    found enum `core::result::Result` [E0053]\r\ntest.rs:14     fn next(&mut self) -> Result<uint, uint> { Ok(7) }\r\n               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\nerror: aborting due to 3 previous errors\r\n```\r\n\r\n---\r\n\r\n#### Positive notes\r\n* Vim worked fine with it: https://github.com/rust-lang/rust/pull/19203#issuecomment-66861668\r\n* `make check` didn't find any errors\r\n* Fixed *backtick* placement suggested by @p1start at https://github.com/rust-lang/rust/pull/19203#issuecomment-64062052\r\n\r\n#### Negative notes\r\n* Didn't check Emacs support but also wasn't provided a testcase...\r\n* Needs to be tested with macro errors but I don't have a good testcase yet\r\n* I would like to move the `E[0053]` earlier (see https://github.com/rust-lang/rust/issues/19464#issuecomment-65334301) but I don't know how\r\n* It might be better to indent the types slightly like so (but I don't know how):\r\n```cmd\r\ntest.rs:6:5: 6:6 error: mismatched types:\r\n          expected `core::option::Option<int>`,\r\n             found `S`\r\n         (expected enum `core::option::Option`,\r\n             found struct `S`)\r\ntest.rs:6     s\r\n```\r\n* Deep whitespace indentation may be a bad idea because early wrapping will cause misalignment between lines\r\n\r\n#### Other\r\n* I thought that compiler flags or something else (environment variables maybe) might be required because of comments against it but now that seems too much of a burden for users and for too little gain.\r\n* There was concern that it will make large quantities of errors difficult to distinguish but I don't find that an issue. They both look awful and multi-line errors makes the types easier to understand.\r\n\r\n---\r\n\r\n#### Single lined spew:\r\n```cmd\r\n$ rustc test2.rs \r\ntest2.rs:161:9: 170:10 error: method `next` has an incompatible type for trait: expected enum core::option::Option, found enum core::result::Result [E0053]\r\ntest2.rs:161         fn next(&mut self) -> Result<&'a str, int> {\r\ntest2.rs:162             self.curr = self.next;\r\ntest2.rs:163             \r\ntest2.rs:164             if let (Some(open), Some(close)) = Parens::find_parens(self.all, self.next) {\r\ntest2.rs:165                 self.next = if self.all.char_at(self.next) == '(' { close }\r\ntest2.rs:166                 else { open }\r\n             ...\r\ntest2.rs:164:21: 164:31 error: mismatched types: expected `core::result::Result<uint, int>`, found `core::option::Option<_>` (expected enum core::result::Result, found enum core::option::Option)\r\ntest2.rs:164             if let (Some(open), Some(close)) = Parens::find_parens(self.all, self.next) {\r\n                                 ^~~~~~~~~~\r\ntest2.rs:164:33: 164:44 error: mismatched types: expected `core::result::Result<uint, int>`, found `core::option::Option<_>` (expected enum core::result::Result, found enum core::option::Option)\r\ntest2.rs:164             if let (Some(open), Some(close)) = Parens::find_parens(self.all, self.next) {\r\n                                             ^~~~~~~~~~~\r\ntest2.rs:169:40: 169:76 error: mismatched types: expected `core::result::Result<&'a str, int>`, found `core::option::Option<&str>` (expected enum core::result::Result, found enum core::option::Option)\r\ntest2.rs:169             if self.curr != self.len { Some(self.all[self.curr..self.next]) } else { None }\r\n                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\ntest2.rs:169:86: 169:90 error: mismatched types: expected `core::result::Result<&'a str, int>`, found `core::option::Option<_>` (expected enum core::result::Result, found enum core::option::Option)\r\ntest2.rs:169             if self.curr != self.len { Some(self.all[self.curr..self.next]) } else { None }\r\n                                                                                                  ^~~~\r\ntest2.rs:205:14: 205:18 error: mismatched types: expected `core::result::Result<uint, int>`, found `core::option::Option<uint>` (expected enum core::result::Result, found enum core::option::Option)\r\ntest2.rs:205             (open, close)\r\n                          ^~~~\r\ntest2.rs:205:20: 205:25 error: mismatched types: expected `core::result::Result<uint, int>`, found `core::option::Option<uint>` (expected enum core::result::Result, found enum core::option::Option)\r\ntest2.rs:205             (open, close)\r\n                                ^~~~~\r\ntest2.rs:210:21: 210:31 error: mismatched types: expected `core::result::Result<uint, int>`, found `core::option::Option<_>` (expected enum core::result::Result, found enum core::option::Option)\r\ntest2.rs:210             if let (Some(open), _) = Parens::find_parens(self.all, 0) {\r\n                                 ^~~~~~~~~~\r\ntest2.rs:210:13: 212:28 error: mismatched types: expected `core::option::Option<&'a int>`, found `core::option::Option<&str>` (expected int, found str)\r\ntest2.rs:210             if let (Some(open), _) = Parens::find_parens(self.all, 0) {\r\ntest2.rs:211                 Some(self.all[0..open])\r\ntest2.rs:212             } else { None }\r\ntest2.rs:299:48: 299:58 error: mismatched types: expected `Box<translate::Entity>`, found `collections::vec::Vec<_>` (expected box, found struct collections::vec::Vec)\r\ntest2.rs:299         pub fn new() -> Entity { Entity::Group(Vec::new()) }\r\n                                                            ^~~~~~~~~~\r\ntest2.rs:359:51: 359:58 error: type `&mut Box<translate::Entity>` does not implement any method in scope named `push`\r\ntest2.rs:359                 Entity::Group(ref mut vec) => vec.push(e),\r\n                                                               ^~~~~~~\r\ntest2.rs:366:51: 366:85 error: type `&mut Box<translate::Entity>` does not implement any method in scope named `push`\r\ntest2.rs:366                 Entity::Group(ref mut vec) => vec.push(Entity::Inner(s.to_string())),\r\n                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\nerror: aborting due to 12 previous errors\r\n```\r\n\r\n---\r\n\r\n#### Multi-line spew:\r\n\r\n```cmd\r\n$ ./rustc test2.rs \r\ntest2.rs:161:9: 170:10 error: method `next` has an incompatible type for trait:\r\n expected enum `core::option::Option`,\r\n    found enum `core::result::Result` [E0053]\r\ntest2.rs:161         fn next(&mut self) -> Result<&'a str, int> {\r\ntest2.rs:162             self.curr = self.next;\r\ntest2.rs:163             \r\ntest2.rs:164             if let (Some(open), Some(close)) = Parens::find_parens(self.all, self.next) {\r\ntest2.rs:165                 self.next = if self.all.char_at(self.next) == '(' { close }\r\ntest2.rs:166                 else { open }\r\n             ...\r\ntest2.rs:164:21: 164:31 error: mismatched types:\r\n expected `core::result::Result<uint, int>`,\r\n    found `core::option::Option<_>`\r\n(expected enum `core::result::Result`,\r\n    found enum `core::option::Option`)\r\ntest2.rs:164             if let (Some(open), Some(close)) = Parens::find_parens(self.all, self.next) {\r\n                                 ^~~~~~~~~~\r\ntest2.rs:164:33: 164:44 error: mismatched types:\r\n expected `core::result::Result<uint, int>`,\r\n    found `core::option::Option<_>`\r\n(expected enum `core::result::Result`,\r\n    found enum `core::option::Option`)\r\ntest2.rs:164             if let (Some(open), Some(close)) = Parens::find_parens(self.all, self.next) {\r\n                                             ^~~~~~~~~~~\r\ntest2.rs:169:40: 169:76 error: mismatched types:\r\n expected `core::result::Result<&'a str, int>`,\r\n    found `core::option::Option<&str>`\r\n(expected enum `core::result::Result`,\r\n    found enum `core::option::Option`)\r\ntest2.rs:169             if self.curr != self.len { Some(self.all[self.curr..self.next]) } else { None }\r\n                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\ntest2.rs:169:86: 169:90 error: mismatched types:\r\n expected `core::result::Result<&'a str, int>`,\r\n    found `core::option::Option<_>`\r\n(expected enum `core::result::Result`,\r\n    found enum `core::option::Option`)\r\ntest2.rs:169             if self.curr != self.len { Some(self.all[self.curr..self.next]) } else { None }\r\n                                                                                                  ^~~~\r\ntest2.rs:205:14: 205:18 error: mismatched types:\r\n expected `core::result::Result<uint, int>`,\r\n    found `core::option::Option<uint>`\r\n(expected enum `core::result::Result`,\r\n    found enum `core::option::Option`)\r\ntest2.rs:205             (open, close)\r\n                          ^~~~\r\ntest2.rs:205:20: 205:25 error: mismatched types:\r\n expected `core::result::Result<uint, int>`,\r\n    found `core::option::Option<uint>`\r\n(expected enum `core::result::Result`,\r\n    found enum `core::option::Option`)\r\ntest2.rs:205             (open, close)\r\n                                ^~~~~\r\ntest2.rs:210:21: 210:31 error: mismatched types:\r\n expected `core::result::Result<uint, int>`,\r\n    found `core::option::Option<_>`\r\n(expected enum `core::result::Result`,\r\n    found enum `core::option::Option`)\r\ntest2.rs:210             if let (Some(open), _) = Parens::find_parens(self.all, 0) {\r\n                                 ^~~~~~~~~~\r\ntest2.rs:210:13: 212:28 error: mismatched types:\r\n expected `core::option::Option<&'a int>`,\r\n    found `core::option::Option<&str>`\r\n(expected int,\r\n    found str)\r\ntest2.rs:210             if let (Some(open), _) = Parens::find_parens(self.all, 0) {\r\ntest2.rs:211                 Some(self.all[0..open])\r\ntest2.rs:212             } else { None }\r\ntest2.rs:229:57: 229:96 error: the trait `core::ops::Fn<(char,), bool>` is not implemented for the type `|char| -> bool`\r\ntest2.rs:229                                              .map(|s| s.trim_chars(|c: char| c.is_whitespace()))\r\n                                                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\ntest2.rs:238:46: 239:75 error: type `core::str::CharSplits<'_, |char| -> bool>` does not implement any method in scope named `filter_map`\r\ntest2.rs:238                                             .filter_map(|s| if !s.is_empty() { Some(s.trim_chars('\\'')) }\r\ntest2.rs:239                                                             else { None })\r\ntest2.rs:237:46: 237:91 error: the trait `core::ops::Fn<(char,), bool>` is not implemented for the type `|char| -> bool`\r\ntest2.rs:237                 let vec: Vec<&str> = value[].split(|c: char| matches!(c, '(' | ')' | ','))\r\n                                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\ntest2.rs:238:65: 238:77 error: the type of this value must be known in this context\r\ntest2.rs:238                                             .filter_map(|s| if !s.is_empty() { Some(s.trim_chars('\\'')) }\r\n                                                                             ^~~~~~~~~~~~\r\ntest2.rs:299:48: 299:58 error: mismatched types:\r\n expected `Box<translate::Entity>`,\r\n    found `collections::vec::Vec<_>`\r\n(expected box,\r\n    found struct `collections::vec::Vec`)\r\ntest2.rs:299         pub fn new() -> Entity { Entity::Group(Vec::new()) }\r\n                                                            ^~~~~~~~~~\r\ntest2.rs:321:36: 322:65 error: type `core::str::CharSplits<'_, |char| -> bool>` does not implement any method in scope named `filter_map`\r\ntest2.rs:321                                   .filter_map(|s| if !s.is_empty() { Some(s.trim_chars('\\'')) }\r\ntest2.rs:322                                                   else { None })\r\ntest2.rs:320:36: 320:81 error: the trait `core::ops::Fn<(char,), bool>` is not implemented for the type `|char| -> bool`\r\ntest2.rs:320             let vec: Vec<&str> = s.split(|c: char| matches!(c, '(' | ')' | ','))\r\n                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\ntest2.rs:321:55: 321:67 error: the type of this value must be known in this context\r\ntest2.rs:321                                   .filter_map(|s| if !s.is_empty() { Some(s.trim_chars('\\'')) }\r\n                                                                   ^~~~~~~~~~~~\r\ntest2.rs:359:51: 359:58 error: type `&mut Box<translate::Entity>` does not implement any method in scope named `push`\r\ntest2.rs:359                 Entity::Group(ref mut vec) => vec.push(e),\r\n                                                               ^~~~~~~\r\ntest2.rs:366:51: 366:85 error: type `&mut Box<translate::Entity>` does not implement any method in scope named `push`\r\ntest2.rs:366                 Entity::Group(ref mut vec) => vec.push(Entity::Inner(s.to_string())),\r\n                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\nerror: aborting due to 24 previous errors\r\n```\r\n\r\nCloses #18946 #19464\r\ncc @P1start @jakub- @tomjakubowski @kballard @chris-morgan","created_at":"2014-12-15T09:15:14Z","updated_at":"2015-01-11T23:06:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1bd9fe6aee76b052484ac811ec2f70011c3876bd","assignee":{"login":"cmr","id":704250,"avatar_url":"https://avatars.githubusercontent.com/u/704250?v=3","gravatar_id":"","url":"https://api.github.com/users/cmr","html_url":"https://github.com/cmr","followers_url":"https://api.github.com/users/cmr/followers","following_url":"https://api.github.com/users/cmr/following{/other_user}","gists_url":"https://api.github.com/users/cmr/gists{/gist_id}","starred_url":"https://api.github.com/users/cmr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmr/subscriptions","organizations_url":"https://api.github.com/users/cmr/orgs","repos_url":"https://api.github.com/users/cmr/repos","events_url":"https://api.github.com/users/cmr/events{/privacy}","received_events_url":"https://api.github.com/users/cmr/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/rust-lang/rust/pulls/19870/commits","review_comments_url":"https://api.github.com/repos/rust-lang/rust/pulls/19870/comments","review_comment_url":"https://api.github.com/repos/rust-lang/rust/pulls/comments/{number}","comments_url":"https://api.github.com/repos/rust-lang/rust/issues/19870/comments","statuses_url":"https://api.github.com/repos/rust-lang/rust/statuses/fb85490f67dae94bac86d486b1fd00fb177738ab","head":{"label":"mdinger:align_error","ref":"align_error","sha":"fb85490f67dae94bac86d486b1fd00fb177738ab","user":{"login":"mdinger","id":4156987,"avatar_url":"https://avatars.githubusercontent.com/u/4156987?v=3","gravatar_id":"","url":"https://api.github.com/users/mdinger","html_url":"https://github.com/mdinger","followers_url":"https://api.github.com/users/mdinger/followers","following_url":"https://api.github.com/users/mdinger/following{/other_user}","gists_url":"https://api.github.com/users/mdinger/gists{/gist_id}","starred_url":"https://api.github.com/users/mdinger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mdinger/subscriptions","organizations_url":"https://api.github.com/users/mdinger/orgs","repos_url":"https://api.github.com/users/mdinger/repos","events_url":"https://api.github.com/users/mdinger/events{/privacy}","received_events_url":"https://api.github.com/users/mdinger/received_events","type":"User","site_admin":false},"repo":{"id":18922377,"name":"rust","full_name":"mdinger/rust","owner":{"login":"mdinger","id":4156987,"avatar_url":"https://avatars.githubusercontent.com/u/4156987?v=3","gravatar_id":"","url":"https://api.github.com/users/mdinger","html_url":"https://github.com/mdinger","followers_url":"https://api.github.com/users/mdinger/followers","following_url":"https://api.github.com/users/mdinger/following{/other_user}","gists_url":"https://api.github.com/users/mdinger/gists{/gist_id}","starred_url":"https://api.github.com/users/mdinger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mdinger/subscriptions","organizations_url":"https://api.github.com/users/mdinger/orgs","repos_url":"https://api.github.com/users/mdinger/repos","events_url":"https://api.github.com/users/mdinger/events{/privacy}","received_events_url":"https://api.github.com/users/mdinger/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mdinger/rust","description":"a safe, concurrent, practical language","fork":true,"url":"https://api.github.com/repos/mdinger/rust","forks_url":"https://api.github.com/repos/mdinger/rust/forks","keys_url":"https://api.github.com/repos/mdinger/rust/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mdinger/rust/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mdinger/rust/teams","hooks_url":"https://api.github.com/repos/mdinger/rust/hooks","issue_events_url":"https://api.github.com/repos/mdinger/rust/issues/events{/number}","events_url":"https://api.github.com/repos/mdinger/rust/events","assignees_url":"https://api.github.com/repos/mdinger/rust/assignees{/user}","branches_url":"https://api.github.com/repos/mdinger/rust/branches{/branch}","tags_url":"https://api.github.com/repos/mdinger/rust/tags","blobs_url":"https://api.github.com/repos/mdinger/rust/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mdinger/rust/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mdinger/rust/git/refs{/sha}","trees_url":"https://api.github.com/repos/mdinger/rust/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mdinger/rust/statuses/{sha}","languages_url":"https://api.github.com/repos/mdinger/rust/languages","stargazers_url":"https://api.github.com/repos/mdinger/rust/stargazers","contributors_url":"https://api.github.com/repos/mdinger/rust/contributors","subscribers_url":"https://api.github.com/repos/mdinger/rust/subscribers","subscription_url":"https://api.github.com/repos/mdinger/rust/subscription","commits_url":"https://api.github.com/repos/mdinger/rust/commits{/sha}","git_commits_url":"https://api.github.com/repos/mdinger/rust/git/commits{/sha}","comments_url":"https://api.github.com/repos/mdinger/rust/comments{/number}","issue_comment_url":"https://api.github.com/repos/mdinger/rust/issues/comments/{number}","contents_url":"https://api.github.com/repos/mdinger/rust/contents/{+path}","compare_url":"https://api.github.com/repos/mdinger/rust/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mdinger/rust/merges","archive_url":"https://api.github.com/repos/mdinger/rust/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mdinger/rust/downloads","issues_url":"https://api.github.com/repos/mdinger/rust/issues{/number}","pulls_url":"https://api.github.com/repos/mdinger/rust/pulls{/number}","milestones_url":"https://api.github.com/repos/mdinger/rust/milestones{/number}","notifications_url":"https://api.github.com/repos/mdinger/rust/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mdinger/rust/labels{/name}","releases_url":"https://api.github.com/repos/mdinger/rust/releases{/id}","created_at":"2014-04-18T18:55:17Z","updated_at":"2015-01-02T20:46:24Z","pushed_at":"2015-01-10T18:19:35Z","git_url":"git://github.com/mdinger/rust.git","ssh_url":"git@github.com:mdinger/rust.git","clone_url":"https://github.com/mdinger/rust.git","svn_url":"https://github.com/mdinger/rust","homepage":"http://www.rust-lang.org","size":214609,"stargazers_count":0,"watchers_count":0,"language":"Rust","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":"rust-lang:master","ref":"master","sha":"3b03c20c6ddaee5ba8b9797e988af1be42d612e2","user":{"login":"rust-lang","id":5430905,"avatar_url":"https://avatars.githubusercontent.com/u/5430905?v=3","gravatar_id":"","url":"https://api.github.com/users/rust-lang","html_url":"https://github.com/rust-lang","followers_url":"https://api.github.com/users/rust-lang/followers","following_url":"https://api.github.com/users/rust-lang/following{/other_user}","gists_url":"https://api.github.com/users/rust-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/rust-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rust-lang/subscriptions","organizations_url":"https://api.github.com/users/rust-lang/orgs","repos_url":"https://api.github.com/users/rust-lang/repos","events_url":"https://api.github.com/users/rust-lang/events{/privacy}","received_events_url":"https://api.github.com/users/rust-lang/received_events","type":"Organization","site_admin":false},"repo":{"id":724712,"name":"rust","full_name":"rust-lang/rust","owner":{"login":"rust-lang","id":5430905,"avatar_url":"https://avatars.githubusercontent.com/u/5430905?v=3","gravatar_id":"","url":"https://api.github.com/users/rust-lang","html_url":"https://github.com/rust-lang","followers_url":"https://api.github.com/users/rust-lang/followers","following_url":"https://api.github.com/users/rust-lang/following{/other_user}","gists_url":"https://api.github.com/users/rust-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/rust-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rust-lang/subscriptions","organizations_url":"https://api.github.com/users/rust-lang/orgs","repos_url":"https://api.github.com/users/rust-lang/repos","events_url":"https://api.github.com/users/rust-lang/events{/privacy}","received_events_url":"https://api.github.com/users/rust-lang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rust-lang/rust","description":"a safe, concurrent, practical language","fork":false,"url":"https://api.github.com/repos/rust-lang/rust","forks_url":"https://api.github.com/repos/rust-lang/rust/forks","keys_url":"https://api.github.com/repos/rust-lang/rust/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rust-lang/rust/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rust-lang/rust/teams","hooks_url":"https://api.github.com/repos/rust-lang/rust/hooks","issue_events_url":"https://api.github.com/repos/rust-lang/rust/issues/events{/number}","events_url":"https://api.github.com/repos/rust-lang/rust/events","assignees_url":"https://api.github.com/repos/rust-lang/rust/assignees{/user}","branches_url":"https://api.github.com/repos/rust-lang/rust/branches{/branch}","tags_url":"https://api.github.com/repos/rust-lang/rust/tags","blobs_url":"https://api.github.com/repos/rust-lang/rust/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rust-lang/rust/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rust-lang/rust/git/refs{/sha}","trees_url":"https://api.github.com/repos/rust-lang/rust/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rust-lang/rust/statuses/{sha}","languages_url":"https://api.github.com/repos/rust-lang/rust/languages","stargazers_url":"https://api.github.com/repos/rust-lang/rust/stargazers","contributors_url":"https://api.github.com/repos/rust-lang/rust/contributors","subscribers_url":"https://api.github.com/repos/rust-lang/rust/subscribers","subscription_url":"https://api.github.com/repos/rust-lang/rust/subscription","commits_url":"https://api.github.com/repos/rust-lang/rust/commits{/sha}","git_commits_url":"https://api.github.com/repos/rust-lang/rust/git/commits{/sha}","comments_url":"https://api.github.com/repos/rust-lang/rust/comments{/number}","issue_comment_url":"https://api.github.com/repos/rust-lang/rust/issues/comments/{number}","contents_url":"https://api.github.com/repos/rust-lang/rust/contents/{+path}","compare_url":"https://api.github.com/repos/rust-lang/rust/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rust-lang/rust/merges","archive_url":"https://api.github.com/repos/rust-lang/rust/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rust-lang/rust/downloads","issues_url":"https://api.github.com/repos/rust-lang/rust/issues{/number}","pulls_url":"https://api.github.com/repos/rust-lang/rust/pulls{/number}","milestones_url":"https://api.github.com/repos/rust-lang/rust/milestones{/number}","notifications_url":"https://api.github.com/repos/rust-lang/rust/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rust-lang/rust/labels{/name}","releases_url":"https://api.github.com/repos/rust-lang/rust/releases{/id}","created_at":"2010-06-16T20:39:03Z","updated_at":"2015-01-11T22:50:14Z","pushed_at":"2015-01-11T22:15:52Z","git_url":"git://github.com/rust-lang/rust.git","ssh_url":"git@github.com:rust-lang/rust.git","clone_url":"https://github.com/rust-lang/rust.git","svn_url":"https://github.com/rust-lang/rust","homepage":"http://www.rust-lang.org","size":426764,"stargazers_count":8545,"watchers_count":8545,"language":"Rust","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1662,"mirror_url":null,"open_issues_count":2389,"forks":1662,"open_issues":2389,"watchers":8545,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/19870"},"html":{"href":"https://github.com/rust-lang/rust/pull/19870"},"issue":{"href":"https://api.github.com/repos/rust-lang/rust/issues/19870"},"comments":{"href":"https://api.github.com/repos/rust-lang/rust/issues/19870/comments"},"review_comments":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/19870/comments"},"review_comment":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/rust-lang/rust/pulls/19870/commits"},"statuses":{"href":"https://api.github.com/repos/rust-lang/rust/statuses/fb85490f67dae94bac86d486b1fd00fb177738ab"}}}}