{"action":"created","comment":{"url":"https://api.github.com/repos/sleekbyte/tailor/pulls/comments/46914354","id":46914354,"diff_hunk":"@@ -0,0 +1,49 @@\n+package com.sleekbyte.tailor.listeners.whitespace;\n+\n+import com.sleekbyte.tailor.antlr.SwiftBaseListener;\n+import com.sleekbyte.tailor.antlr.SwiftParser;\n+import com.sleekbyte.tailor.common.Rules;\n+import com.sleekbyte.tailor.output.Printer;\n+import com.sleekbyte.tailor.utils.WhitespaceVerifier;\n+\n+/**\n+ * Parse tree listener to flag illegal whitespace in parentheses.\n+ */\n+public final class ParenthesisWhitespaceListener extends SwiftBaseListener {\n+    private WhitespaceVerifier verifier;\n+\n+    public ParenthesisWhitespaceListener(Printer printer) {\n+        this.verifier = new WhitespaceVerifier(printer, Rules.PARENTHESIS_WHITESPACE);\n+    }\n+\n+    @Override\n+    public void enterGenericParameterClause(SwiftParser.GenericParameterClauseContext ctx) {\n+        verifier.verifyParenthesisContentWhitespace(ctx);\n+    }\n+\n+    @Override\n+    public void enterParameterClause(SwiftParser.ParameterClauseContext ctx) {\n+        verifier.verifyParenthesisContentWhitespace(ctx);","path":"src/main/java/com/sleekbyte/tailor/listeners/whitespace/ParenthesisWhitespaceListener.java","position":26,"original_position":26,"commit_id":"1ef83ce2f9282f95124b134320751581ade064ed","original_commit_id":"1ef83ce2f9282f95124b134320751581ade064ed","user":{"login":"a4sriniv","id":6434147,"avatar_url":"https://avatars.githubusercontent.com/u/6434147?v=3","gravatar_id":"","url":"https://api.github.com/users/a4sriniv","html_url":"https://github.com/a4sriniv","followers_url":"https://api.github.com/users/a4sriniv/followers","following_url":"https://api.github.com/users/a4sriniv/following{/other_user}","gists_url":"https://api.github.com/users/a4sriniv/gists{/gist_id}","starred_url":"https://api.github.com/users/a4sriniv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/a4sriniv/subscriptions","organizations_url":"https://api.github.com/users/a4sriniv/orgs","repos_url":"https://api.github.com/users/a4sriniv/repos","events_url":"https://api.github.com/users/a4sriniv/events{/privacy}","received_events_url":"https://api.github.com/users/a4sriniv/received_events","type":"User","site_admin":false},"body":"this won't work if `...` is specified after the `parameterList`","created_at":"2015-12-08T04:35:48Z","updated_at":"2015-12-08T04:35:48Z","html_url":"https://github.com/sleekbyte/tailor/pull/260#discussion_r46914354","pull_request_url":"https://api.github.com/repos/sleekbyte/tailor/pulls/260","_links":{"self":{"href":"https://api.github.com/repos/sleekbyte/tailor/pulls/comments/46914354"},"html":{"href":"https://github.com/sleekbyte/tailor/pull/260#discussion_r46914354"},"pull_request":{"href":"https://api.github.com/repos/sleekbyte/tailor/pulls/260"}}},"pull_request":{"url":"https://api.github.com/repos/sleekbyte/tailor/pulls/260","id":52808898,"html_url":"https://github.com/sleekbyte/tailor/pull/260","diff_url":"https://github.com/sleekbyte/tailor/pull/260.diff","patch_url":"https://github.com/sleekbyte/tailor/pull/260.patch","issue_url":"https://api.github.com/repos/sleekbyte/tailor/issues/260","number":260,"state":"open","locked":false,"title":"#87: Flag redundant whitespace in and around parentheses","user":{"login":"adityatrivedi","id":1791760,"avatar_url":"https://avatars.githubusercontent.com/u/1791760?v=3","gravatar_id":"","url":"https://api.github.com/users/adityatrivedi","html_url":"https://github.com/adityatrivedi","followers_url":"https://api.github.com/users/adityatrivedi/followers","following_url":"https://api.github.com/users/adityatrivedi/following{/other_user}","gists_url":"https://api.github.com/users/adityatrivedi/gists{/gist_id}","starred_url":"https://api.github.com/users/adityatrivedi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adityatrivedi/subscriptions","organizations_url":"https://api.github.com/users/adityatrivedi/orgs","repos_url":"https://api.github.com/users/adityatrivedi/repos","events_url":"https://api.github.com/users/adityatrivedi/events{/privacy}","received_events_url":"https://api.github.com/users/adityatrivedi/received_events","type":"User","site_admin":false},"body":"Resolves #87.","created_at":"2015-12-07T06:11:37Z","updated_at":"2015-12-08T04:35:48Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fc68c9823aac715cc4ddb626b9bdeaee94074767","assignee":{"login":"a4sriniv","id":6434147,"avatar_url":"https://avatars.githubusercontent.com/u/6434147?v=3","gravatar_id":"","url":"https://api.github.com/users/a4sriniv","html_url":"https://github.com/a4sriniv","followers_url":"https://api.github.com/users/a4sriniv/followers","following_url":"https://api.github.com/users/a4sriniv/following{/other_user}","gists_url":"https://api.github.com/users/a4sriniv/gists{/gist_id}","starred_url":"https://api.github.com/users/a4sriniv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/a4sriniv/subscriptions","organizations_url":"https://api.github.com/users/a4sriniv/orgs","repos_url":"https://api.github.com/users/a4sriniv/repos","events_url":"https://api.github.com/users/a4sriniv/events{/privacy}","received_events_url":"https://api.github.com/users/a4sriniv/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/sleekbyte/tailor/milestones/11","html_url":"https://github.com/sleekbyte/tailor/milestones/Sprint%2011","labels_url":"https://api.github.com/repos/sleekbyte/tailor/milestones/11/labels","id":1446465,"number":11,"title":"Sprint 11","description":"","creator":{"login":"adityatrivedi","id":1791760,"avatar_url":"https://avatars.githubusercontent.com/u/1791760?v=3","gravatar_id":"","url":"https://api.github.com/users/adityatrivedi","html_url":"https://github.com/adityatrivedi","followers_url":"https://api.github.com/users/adityatrivedi/followers","following_url":"https://api.github.com/users/adityatrivedi/following{/other_user}","gists_url":"https://api.github.com/users/adityatrivedi/gists{/gist_id}","starred_url":"https://api.github.com/users/adityatrivedi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adityatrivedi/subscriptions","organizations_url":"https://api.github.com/users/adityatrivedi/orgs","repos_url":"https://api.github.com/users/adityatrivedi/repos","events_url":"https://api.github.com/users/adityatrivedi/events{/privacy}","received_events_url":"https://api.github.com/users/adityatrivedi/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":0,"state":"open","created_at":"2015-12-06T17:43:20Z","updated_at":"2015-12-08T03:18:16Z","due_on":"2015-12-17T18:30:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/sleekbyte/tailor/pulls/260/commits","review_comments_url":"https://api.github.com/repos/sleekbyte/tailor/pulls/260/comments","review_comment_url":"https://api.github.com/repos/sleekbyte/tailor/pulls/comments{/number}","comments_url":"https://api.github.com/repos/sleekbyte/tailor/issues/260/comments","statuses_url":"https://api.github.com/repos/sleekbyte/tailor/statuses/1ef83ce2f9282f95124b134320751581ade064ed","head":{"label":"sleekbyte:at-87-absence-of-spaces","ref":"at-87-absence-of-spaces","sha":"1ef83ce2f9282f95124b134320751581ade064ed","user":{"login":"sleekbyte","id":9437324,"avatar_url":"https://avatars.githubusercontent.com/u/9437324?v=3","gravatar_id":"","url":"https://api.github.com/users/sleekbyte","html_url":"https://github.com/sleekbyte","followers_url":"https://api.github.com/users/sleekbyte/followers","following_url":"https://api.github.com/users/sleekbyte/following{/other_user}","gists_url":"https://api.github.com/users/sleekbyte/gists{/gist_id}","starred_url":"https://api.github.com/users/sleekbyte/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sleekbyte/subscriptions","organizations_url":"https://api.github.com/users/sleekbyte/orgs","repos_url":"https://api.github.com/users/sleekbyte/repos","events_url":"https://api.github.com/users/sleekbyte/events{/privacy}","received_events_url":"https://api.github.com/users/sleekbyte/received_events","type":"Organization","site_admin":false},"repo":{"id":36204628,"name":"tailor","full_name":"sleekbyte/tailor","owner":{"login":"sleekbyte","id":9437324,"avatar_url":"https://avatars.githubusercontent.com/u/9437324?v=3","gravatar_id":"","url":"https://api.github.com/users/sleekbyte","html_url":"https://github.com/sleekbyte","followers_url":"https://api.github.com/users/sleekbyte/followers","following_url":"https://api.github.com/users/sleekbyte/following{/other_user}","gists_url":"https://api.github.com/users/sleekbyte/gists{/gist_id}","starred_url":"https://api.github.com/users/sleekbyte/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sleekbyte/subscriptions","organizations_url":"https://api.github.com/users/sleekbyte/orgs","repos_url":"https://api.github.com/users/sleekbyte/repos","events_url":"https://api.github.com/users/sleekbyte/events{/privacy}","received_events_url":"https://api.github.com/users/sleekbyte/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sleekbyte/tailor","description":"Static analyzer for Swift.","fork":false,"url":"https://api.github.com/repos/sleekbyte/tailor","forks_url":"https://api.github.com/repos/sleekbyte/tailor/forks","keys_url":"https://api.github.com/repos/sleekbyte/tailor/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sleekbyte/tailor/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sleekbyte/tailor/teams","hooks_url":"https://api.github.com/repos/sleekbyte/tailor/hooks","issue_events_url":"https://api.github.com/repos/sleekbyte/tailor/issues/events{/number}","events_url":"https://api.github.com/repos/sleekbyte/tailor/events","assignees_url":"https://api.github.com/repos/sleekbyte/tailor/assignees{/user}","branches_url":"https://api.github.com/repos/sleekbyte/tailor/branches{/branch}","tags_url":"https://api.github.com/repos/sleekbyte/tailor/tags","blobs_url":"https://api.github.com/repos/sleekbyte/tailor/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sleekbyte/tailor/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sleekbyte/tailor/git/refs{/sha}","trees_url":"https://api.github.com/repos/sleekbyte/tailor/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sleekbyte/tailor/statuses/{sha}","languages_url":"https://api.github.com/repos/sleekbyte/tailor/languages","stargazers_url":"https://api.github.com/repos/sleekbyte/tailor/stargazers","contributors_url":"https://api.github.com/repos/sleekbyte/tailor/contributors","subscribers_url":"https://api.github.com/repos/sleekbyte/tailor/subscribers","subscription_url":"https://api.github.com/repos/sleekbyte/tailor/subscription","commits_url":"https://api.github.com/repos/sleekbyte/tailor/commits{/sha}","git_commits_url":"https://api.github.com/repos/sleekbyte/tailor/git/commits{/sha}","comments_url":"https://api.github.com/repos/sleekbyte/tailor/comments{/number}","issue_comment_url":"https://api.github.com/repos/sleekbyte/tailor/issues/comments{/number}","contents_url":"https://api.github.com/repos/sleekbyte/tailor/contents/{+path}","compare_url":"https://api.github.com/repos/sleekbyte/tailor/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sleekbyte/tailor/merges","archive_url":"https://api.github.com/repos/sleekbyte/tailor/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sleekbyte/tailor/downloads","issues_url":"https://api.github.com/repos/sleekbyte/tailor/issues{/number}","pulls_url":"https://api.github.com/repos/sleekbyte/tailor/pulls{/number}","milestones_url":"https://api.github.com/repos/sleekbyte/tailor/milestones{/number}","notifications_url":"https://api.github.com/repos/sleekbyte/tailor/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sleekbyte/tailor/labels{/name}","releases_url":"https://api.github.com/repos/sleekbyte/tailor/releases{/id}","created_at":"2015-05-25T02:11:10Z","updated_at":"2015-12-08T04:35:48Z","pushed_at":"2015-12-08T03:23:33Z","git_url":"git://github.com/sleekbyte/tailor.git","ssh_url":"git@github.com:sleekbyte/tailor.git","clone_url":"https://github.com/sleekbyte/tailor.git","svn_url":"https://github.com/sleekbyte/tailor","homepage":"https://tailor.sh","size":2171,"stargazers_count":198,"watchers_count":198,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1,"mirror_url":null,"open_issues_count":10,"forks":1,"open_issues":10,"watchers":198,"default_branch":"master"}},"base":{"label":"sleekbyte:master","ref":"master","sha":"95e8cb34564ac85028d104d0507a9447476fea83","user":{"login":"sleekbyte","id":9437324,"avatar_url":"https://avatars.githubusercontent.com/u/9437324?v=3","gravatar_id":"","url":"https://api.github.com/users/sleekbyte","html_url":"https://github.com/sleekbyte","followers_url":"https://api.github.com/users/sleekbyte/followers","following_url":"https://api.github.com/users/sleekbyte/following{/other_user}","gists_url":"https://api.github.com/users/sleekbyte/gists{/gist_id}","starred_url":"https://api.github.com/users/sleekbyte/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sleekbyte/subscriptions","organizations_url":"https://api.github.com/users/sleekbyte/orgs","repos_url":"https://api.github.com/users/sleekbyte/repos","events_url":"https://api.github.com/users/sleekbyte/events{/privacy}","received_events_url":"https://api.github.com/users/sleekbyte/received_events","type":"Organization","site_admin":false},"repo":{"id":36204628,"name":"tailor","full_name":"sleekbyte/tailor","owner":{"login":"sleekbyte","id":9437324,"avatar_url":"https://avatars.githubusercontent.com/u/9437324?v=3","gravatar_id":"","url":"https://api.github.com/users/sleekbyte","html_url":"https://github.com/sleekbyte","followers_url":"https://api.github.com/users/sleekbyte/followers","following_url":"https://api.github.com/users/sleekbyte/following{/other_user}","gists_url":"https://api.github.com/users/sleekbyte/gists{/gist_id}","starred_url":"https://api.github.com/users/sleekbyte/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sleekbyte/subscriptions","organizations_url":"https://api.github.com/users/sleekbyte/orgs","repos_url":"https://api.github.com/users/sleekbyte/repos","events_url":"https://api.github.com/users/sleekbyte/events{/privacy}","received_events_url":"https://api.github.com/users/sleekbyte/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sleekbyte/tailor","description":"Static analyzer for Swift.","fork":false,"url":"https://api.github.com/repos/sleekbyte/tailor","forks_url":"https://api.github.com/repos/sleekbyte/tailor/forks","keys_url":"https://api.github.com/repos/sleekbyte/tailor/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sleekbyte/tailor/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sleekbyte/tailor/teams","hooks_url":"https://api.github.com/repos/sleekbyte/tailor/hooks","issue_events_url":"https://api.github.com/repos/sleekbyte/tailor/issues/events{/number}","events_url":"https://api.github.com/repos/sleekbyte/tailor/events","assignees_url":"https://api.github.com/repos/sleekbyte/tailor/assignees{/user}","branches_url":"https://api.github.com/repos/sleekbyte/tailor/branches{/branch}","tags_url":"https://api.github.com/repos/sleekbyte/tailor/tags","blobs_url":"https://api.github.com/repos/sleekbyte/tailor/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sleekbyte/tailor/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sleekbyte/tailor/git/refs{/sha}","trees_url":"https://api.github.com/repos/sleekbyte/tailor/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sleekbyte/tailor/statuses/{sha}","languages_url":"https://api.github.com/repos/sleekbyte/tailor/languages","stargazers_url":"https://api.github.com/repos/sleekbyte/tailor/stargazers","contributors_url":"https://api.github.com/repos/sleekbyte/tailor/contributors","subscribers_url":"https://api.github.com/repos/sleekbyte/tailor/subscribers","subscription_url":"https://api.github.com/repos/sleekbyte/tailor/subscription","commits_url":"https://api.github.com/repos/sleekbyte/tailor/commits{/sha}","git_commits_url":"https://api.github.com/repos/sleekbyte/tailor/git/commits{/sha}","comments_url":"https://api.github.com/repos/sleekbyte/tailor/comments{/number}","issue_comment_url":"https://api.github.com/repos/sleekbyte/tailor/issues/comments{/number}","contents_url":"https://api.github.com/repos/sleekbyte/tailor/contents/{+path}","compare_url":"https://api.github.com/repos/sleekbyte/tailor/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sleekbyte/tailor/merges","archive_url":"https://api.github.com/repos/sleekbyte/tailor/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sleekbyte/tailor/downloads","issues_url":"https://api.github.com/repos/sleekbyte/tailor/issues{/number}","pulls_url":"https://api.github.com/repos/sleekbyte/tailor/pulls{/number}","milestones_url":"https://api.github.com/repos/sleekbyte/tailor/milestones{/number}","notifications_url":"https://api.github.com/repos/sleekbyte/tailor/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sleekbyte/tailor/labels{/name}","releases_url":"https://api.github.com/repos/sleekbyte/tailor/releases{/id}","created_at":"2015-05-25T02:11:10Z","updated_at":"2015-12-08T04:35:48Z","pushed_at":"2015-12-08T03:23:33Z","git_url":"git://github.com/sleekbyte/tailor.git","ssh_url":"git@github.com:sleekbyte/tailor.git","clone_url":"https://github.com/sleekbyte/tailor.git","svn_url":"https://github.com/sleekbyte/tailor","homepage":"https://tailor.sh","size":2171,"stargazers_count":198,"watchers_count":198,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1,"mirror_url":null,"open_issues_count":10,"forks":1,"open_issues":10,"watchers":198,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/sleekbyte/tailor/pulls/260"},"html":{"href":"https://github.com/sleekbyte/tailor/pull/260"},"issue":{"href":"https://api.github.com/repos/sleekbyte/tailor/issues/260"},"comments":{"href":"https://api.github.com/repos/sleekbyte/tailor/issues/260/comments"},"review_comments":{"href":"https://api.github.com/repos/sleekbyte/tailor/pulls/260/comments"},"review_comment":{"href":"https://api.github.com/repos/sleekbyte/tailor/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/sleekbyte/tailor/pulls/260/commits"},"statuses":{"href":"https://api.github.com/repos/sleekbyte/tailor/statuses/1ef83ce2f9282f95124b134320751581ade064ed"}}}}