{"action":"created","issue":{"url":"https://api.github.com/repos/emicklei/proto/issues/15","repository_url":"https://api.github.com/repos/emicklei/proto","labels_url":"https://api.github.com/repos/emicklei/proto/issues/15/labels{/name}","comments_url":"https://api.github.com/repos/emicklei/proto/issues/15/comments","events_url":"https://api.github.com/repos/emicklei/proto/issues/15/events","html_url":"https://github.com/emicklei/proto/issues/15","id":278343972,"number":15,"title":"Parser errors result in error lines that will are not compatible with linters","user":{"login":"peter-edge","id":4228796,"avatar_url":"https://avatars1.githubusercontent.com/u/4228796?v=4","gravatar_id":"","url":"https://api.github.com/users/peter-edge","html_url":"https://github.com/peter-edge","followers_url":"https://api.github.com/users/peter-edge/followers","following_url":"https://api.github.com/users/peter-edge/following{/other_user}","gists_url":"https://api.github.com/users/peter-edge/gists{/gist_id}","starred_url":"https://api.github.com/users/peter-edge/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peter-edge/subscriptions","organizations_url":"https://api.github.com/users/peter-edge/orgs","repos_url":"https://api.github.com/users/peter-edge/repos","events_url":"https://api.github.com/users/peter-edge/events{/privacy}","received_events_url":"https://api.github.com/users/peter-edge/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-12-01T03:09:39Z","updated_at":"2017-12-01T14:49:45Z","closed_at":"2017-12-01T14:49:45Z","author_association":"CONTRIBUTOR","body":"For things like https://github.com/vim-syntastic/syntastic for example, they need something like `FILE:LINE:COLUMN:ERROR`, which `protoc` gives you. Say I have:\r\n\r\n```\r\nsyntax = \"proto3\";\r\n\r\npkg foo\r\n```\r\n\r\nNote `pkg` not `package`. If I do `protofmt`:\r\n\r\n```\r\n$ protofmt tmp.proto\r\ntmp.proto found \"pkg\" on <input>:3:1, expected [.proto element {comment|option|import|syntax|enum|service|package|message}]\r\n```\r\n\r\nIf I do `protoc`, which produces something valid:\r\n\r\n```\r\n$ protoc --java_out=/tmp tmp.proto\r\ntmp.proto:3:1: Expected top-level statement (e.g. \"message\").\r\n```\r\n\r\nIf I'm building a linter, I could \"solve\" this by shelling out to protoc first to make sure the file compiles, and then running the linter based on the parser here - and maybe I'll have to do that anyways, as compiling Protobuf is a more complicated task especially when you get into imports - but it would be nicer to not have to do this and for this to produce valid errors.\r\n\r\nRelated to https://github.com/emicklei/proto/issues/14."},"comment":{"url":"https://api.github.com/repos/emicklei/proto/issues/comments/348513708","html_url":"https://github.com/emicklei/proto/issues/15#issuecomment-348513708","issue_url":"https://api.github.com/repos/emicklei/proto/issues/15","id":348513708,"user":{"login":"peter-edge","id":4228796,"avatar_url":"https://avatars1.githubusercontent.com/u/4228796?v=4","gravatar_id":"","url":"https://api.github.com/users/peter-edge","html_url":"https://github.com/peter-edge","followers_url":"https://api.github.com/users/peter-edge/followers","following_url":"https://api.github.com/users/peter-edge/following{/other_user}","gists_url":"https://api.github.com/users/peter-edge/gists{/gist_id}","starred_url":"https://api.github.com/users/peter-edge/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peter-edge/subscriptions","organizations_url":"https://api.github.com/users/peter-edge/orgs","repos_url":"https://api.github.com/users/peter-edge/repos","events_url":"https://api.github.com/users/peter-edge/events{/privacy}","received_events_url":"https://api.github.com/users/peter-edge/received_events","type":"User","site_admin":false},"created_at":"2017-12-01T14:49:45Z","updated_at":"2017-12-01T14:49:45Z","author_association":"CONTRIBUTOR","body":"Fixed."}}
{"actor":{"display_login":"peter-edge"}}