{"action":"created","issue":{"url":"https://api.github.com/repos/elixir-lang/elixir/issues/3581","labels_url":"https://api.github.com/repos/elixir-lang/elixir/issues/3581/labels{/name}","comments_url":"https://api.github.com/repos/elixir-lang/elixir/issues/3581/comments","events_url":"https://api.github.com/repos/elixir-lang/elixir/issues/3581/events","html_url":"https://github.com/elixir-lang/elixir/pull/3581","id":100895613,"number":3581,"title":"@callback can now be used directly (without Behaviour). Add @macrocallback.","user":{"login":"antipax","id":56482,"avatar_url":"https://avatars.githubusercontent.com/u/56482?v=3","gravatar_id":"","url":"https://api.github.com/users/antipax","html_url":"https://github.com/antipax","followers_url":"https://api.github.com/users/antipax/followers","following_url":"https://api.github.com/users/antipax/following{/other_user}","gists_url":"https://api.github.com/users/antipax/gists{/gist_id}","starred_url":"https://api.github.com/users/antipax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antipax/subscriptions","organizations_url":"https://api.github.com/users/antipax/orgs","repos_url":"https://api.github.com/users/antipax/repos","events_url":"https://api.github.com/users/antipax/events{/privacy}","received_events_url":"https://api.github.com/users/antipax/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-08-13T23:50:52Z","updated_at":"2015-08-14T02:17:27Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/elixir-lang/elixir/pulls/3581","html_url":"https://github.com/elixir-lang/elixir/pull/3581","diff_url":"https://github.com/elixir-lang/elixir/pull/3581.diff","patch_url":"https://github.com/elixir-lang/elixir/pull/3581.patch"},"body":"Implements (at least part of!) #3465.\r\n\r\n* Updates existing `@callback` attr to attach `@doc` and raise on invalid use of defaults in typespec\r\n* Adds new `@macrocallback` attr, which can be used to define behaviour macro callbacks. Also supports `@doc` and raise on invalid use of defaults in typespec\r\n* Refactors `Behaviour` as a thin layer above the \"new\" `@callback` and `@macrocallback` attrs\r\n* Adds `Kernel.Typespec.beam_callbackdocs/1`, which returns all callback docs from the given module's beam code."},"comment":{"url":"https://api.github.com/repos/elixir-lang/elixir/issues/comments/130926419","html_url":"https://github.com/elixir-lang/elixir/pull/3581#issuecomment-130926419","issue_url":"https://api.github.com/repos/elixir-lang/elixir/issues/3581","id":130926419,"user":{"login":"josevalim","id":9582,"avatar_url":"https://avatars.githubusercontent.com/u/9582?v=3","gravatar_id":"","url":"https://api.github.com/users/josevalim","html_url":"https://github.com/josevalim","followers_url":"https://api.github.com/users/josevalim/followers","following_url":"https://api.github.com/users/josevalim/following{/other_user}","gists_url":"https://api.github.com/users/josevalim/gists{/gist_id}","starred_url":"https://api.github.com/users/josevalim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/josevalim/subscriptions","organizations_url":"https://api.github.com/users/josevalim/orgs","repos_url":"https://api.github.com/users/josevalim/repos","events_url":"https://api.github.com/users/josevalim/events{/privacy}","received_events_url":"https://api.github.com/users/josevalim/received_events","type":"User","site_admin":false},"created_at":"2015-08-14T02:17:27Z","updated_at":"2015-08-14T02:17:27Z","body":"This is very good! We are almost there! The good news is that now we only need to make it simpler. :) I have added a comment."}}