{"action":"created","comment":{"url":"https://api.github.com/repos/brownplt/pyret-lang/pulls/comments/208649425","pull_request_review_id":144502926,"id":208649425,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwODY0OTQyNQ==","diff_hunk":"@@ -401,6 +401,12 @@ R([\"pyret-base/js/pyret-tokenizer\", \"pyret-base/js/pyret-parser\", \"fs\"], functio\n       expect(parse(\"a :: List<A, B> = a\")).not.toBe(false);\n     });\n \n+    it(\"should parse angle brackets with trailing whitespace in annotations\", function() {\n+      expect(parse(\"a :: List#|comment|#<A> = a\")).not.toBe(false);\n+      expect(parse(\"a :: List<A > = a\")).not.toBe(false);\n+      expect(parse(\"a :: List<A, B#|comment|#> = a\")).not.toBe(false);\n+    });\n+","path":"tests/parse/parse.js","position":9,"original_position":9,"commit_id":"b70cc242538dc9260a9d3bf009fd5559e66e98bf","original_commit_id":"b70cc242538dc9260a9d3bf009fd5559e66e98bf","user":{"login":"blerner","id":918464,"node_id":"MDQ6VXNlcjkxODQ2NA==","avatar_url":"https://avatars1.githubusercontent.com/u/918464?v=4","gravatar_id":"","url":"https://api.github.com/users/blerner","html_url":"https://github.com/blerner","followers_url":"https://api.github.com/users/blerner/followers","following_url":"https://api.github.com/users/blerner/following{/other_user}","gists_url":"https://api.github.com/users/blerner/gists{/gist_id}","starred_url":"https://api.github.com/users/blerner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blerner/subscriptions","organizations_url":"https://api.github.com/users/blerner/orgs","repos_url":"https://api.github.com/users/blerner/repos","events_url":"https://api.github.com/users/blerner/events{/privacy}","received_events_url":"https://api.github.com/users/blerner/received_events","type":"User","site_admin":false},"body":"I left all the tests of `because` to CPO; those tests seemed far more useful to me than just checking for parsing of `because` here.","created_at":"2018-08-08T16:30:04Z","updated_at":"2018-08-08T16:30:04Z","html_url":"https://github.com/brownplt/pyret-lang/pull/1386#discussion_r208649425","pull_request_url":"https://api.github.com/repos/brownplt/pyret-lang/pulls/1386","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/brownplt/pyret-lang/pulls/comments/208649425"},"html":{"href":"https://github.com/brownplt/pyret-lang/pull/1386#discussion_r208649425"},"pull_request":{"href":"https://api.github.com/repos/brownplt/pyret-lang/pulls/1386"}},"in_reply_to_id":208646733},"pull_request":{"url":"https://api.github.com/repos/brownplt/pyret-lang/pulls/1386","id":206162774,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2MTYyNzc0","html_url":"https://github.com/brownplt/pyret-lang/pull/1386","diff_url":"https://github.com/brownplt/pyret-lang/pull/1386.diff","patch_url":"https://github.com/brownplt/pyret-lang/pull/1386.patch","issue_url":"https://api.github.com/repos/brownplt/pyret-lang/issues/1386","number":1386,"state":"open","locked":false,"title":"Fix 1350","user":{"login":"blerner","id":918464,"node_id":"MDQ6VXNlcjkxODQ2NA==","avatar_url":"https://avatars1.githubusercontent.com/u/918464?v=4","gravatar_id":"","url":"https://api.github.com/users/blerner","html_url":"https://github.com/blerner","followers_url":"https://api.github.com/users/blerner/followers","following_url":"https://api.github.com/users/blerner/following{/other_user}","gists_url":"https://api.github.com/users/blerner/gists{/gist_id}","starred_url":"https://api.github.com/users/blerner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blerner/subscriptions","organizations_url":"https://api.github.com/users/blerner/orgs","repos_url":"https://api.github.com/users/blerner/repos","events_url":"https://api.github.com/users/blerner/events{/privacy}","received_events_url":"https://api.github.com/users/blerner/received_events","type":"User","site_admin":false},"body":"This should be a complete implementation of `because` clauses for testing operators, as discussed in #1350.  Selenium tests for these are in the CPO#fix-1350 branch.\r\n\r\nNote that this PR loosens the behavior of `is%(...)` tests (and their variants `is==`, `is-not=~`, etc), such that the predicate passed in can have the signature `Any, Any -> Boolean` or `Any, Any -> EqualityResult`.  This is needed to prevent the otherwise absurd-looking behavior of\r\n```\r\ncheck:\r\n  ~3 is ~4\r\n  is-number is is-string\r\n  ~3 is=~ ~4\r\n  is-number is=~ is-string\r\nend\r\n```\r\nThese two pairs currently have very different behaviors: the latter two cause \"unexpected exceptions\", but these are utterly predictable, and due entirely to our desugaring, which uses `equal-now` instead of `equal-now3` etc.\r\n\r\n(I have not made an analogous change to the predicates for `satisfies`/`violates`/`raises-satisfies`/`raises-violates`, because those operators take functions that are explicitly provided, and can explicitly handle these kinds of errors, and because the boolean output of those predicates doesn't mean the same thing as Equal vs NotEqual.)\r\n\r\nI have hardened the behavior of satisfies et al when provided things that aren't proper functions: `check: 3 satisfies 5 end` or `3 satisfies num-modulo` will now give a useful error rather than dying with an \"unexpected exception\".  In general, testing operations should never result in \"unexpected exceptions\" if we can help it.","created_at":"2018-08-04T00:06:32Z","updated_at":"2018-08-08T16:30:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/brownplt/pyret-lang/pulls/1386/commits","review_comments_url":"https://api.github.com/repos/brownplt/pyret-lang/pulls/1386/comments","review_comment_url":"https://api.github.com/repos/brownplt/pyret-lang/pulls/comments{/number}","comments_url":"https://api.github.com/repos/brownplt/pyret-lang/issues/1386/comments","statuses_url":"https://api.github.com/repos/brownplt/pyret-lang/statuses/b70cc242538dc9260a9d3bf009fd5559e66e98bf","head":{"label":"brownplt:fix-1350","ref":"fix-1350","sha":"b70cc242538dc9260a9d3bf009fd5559e66e98bf","user":{"login":"brownplt","id":391839,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5MTgzOQ==","avatar_url":"https://avatars1.githubusercontent.com/u/391839?v=4","gravatar_id":"","url":"https://api.github.com/users/brownplt","html_url":"https://github.com/brownplt","followers_url":"https://api.github.com/users/brownplt/followers","following_url":"https://api.github.com/users/brownplt/following{/other_user}","gists_url":"https://api.github.com/users/brownplt/gists{/gist_id}","starred_url":"https://api.github.com/users/brownplt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brownplt/subscriptions","organizations_url":"https://api.github.com/users/brownplt/orgs","repos_url":"https://api.github.com/users/brownplt/repos","events_url":"https://api.github.com/users/brownplt/events{/privacy}","received_events_url":"https://api.github.com/users/brownplt/received_events","type":"Organization","site_admin":false},"repo":{"id":6698407,"node_id":"MDEwOlJlcG9zaXRvcnk2Njk4NDA3","name":"pyret-lang","full_name":"brownplt/pyret-lang","owner":{"login":"brownplt","id":391839,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5MTgzOQ==","avatar_url":"https://avatars1.githubusercontent.com/u/391839?v=4","gravatar_id":"","url":"https://api.github.com/users/brownplt","html_url":"https://github.com/brownplt","followers_url":"https://api.github.com/users/brownplt/followers","following_url":"https://api.github.com/users/brownplt/following{/other_user}","gists_url":"https://api.github.com/users/brownplt/gists{/gist_id}","starred_url":"https://api.github.com/users/brownplt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brownplt/subscriptions","organizations_url":"https://api.github.com/users/brownplt/orgs","repos_url":"https://api.github.com/users/brownplt/repos","events_url":"https://api.github.com/users/brownplt/events{/privacy}","received_events_url":"https://api.github.com/users/brownplt/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/brownplt/pyret-lang","description":"The Pyret language.","fork":false,"url":"https://api.github.com/repos/brownplt/pyret-lang","forks_url":"https://api.github.com/repos/brownplt/pyret-lang/forks","keys_url":"https://api.github.com/repos/brownplt/pyret-lang/keys{/key_id}","collaborators_url":"https://api.github.com/repos/brownplt/pyret-lang/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/brownplt/pyret-lang/teams","hooks_url":"https://api.github.com/repos/brownplt/pyret-lang/hooks","issue_events_url":"https://api.github.com/repos/brownplt/pyret-lang/issues/events{/number}","events_url":"https://api.github.com/repos/brownplt/pyret-lang/events","assignees_url":"https://api.github.com/repos/brownplt/pyret-lang/assignees{/user}","branches_url":"https://api.github.com/repos/brownplt/pyret-lang/branches{/branch}","tags_url":"https://api.github.com/repos/brownplt/pyret-lang/tags","blobs_url":"https://api.github.com/repos/brownplt/pyret-lang/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/brownplt/pyret-lang/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/brownplt/pyret-lang/git/refs{/sha}","trees_url":"https://api.github.com/repos/brownplt/pyret-lang/git/trees{/sha}","statuses_url":"https://api.github.com/repos/brownplt/pyret-lang/statuses/{sha}","languages_url":"https://api.github.com/repos/brownplt/pyret-lang/languages","stargazers_url":"https://api.github.com/repos/brownplt/pyret-lang/stargazers","contributors_url":"https://api.github.com/repos/brownplt/pyret-lang/contributors","subscribers_url":"https://api.github.com/repos/brownplt/pyret-lang/subscribers","subscription_url":"https://api.github.com/repos/brownplt/pyret-lang/subscription","commits_url":"https://api.github.com/repos/brownplt/pyret-lang/commits{/sha}","git_commits_url":"https://api.github.com/repos/brownplt/pyret-lang/git/commits{/sha}","comments_url":"https://api.github.com/repos/brownplt/pyret-lang/comments{/number}","issue_comment_url":"https://api.github.com/repos/brownplt/pyret-lang/issues/comments{/number}","contents_url":"https://api.github.com/repos/brownplt/pyret-lang/contents/{+path}","compare_url":"https://api.github.com/repos/brownplt/pyret-lang/compare/{base}...{head}","merges_url":"https://api.github.com/repos/brownplt/pyret-lang/merges","archive_url":"https://api.github.com/repos/brownplt/pyret-lang/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/brownplt/pyret-lang/downloads","issues_url":"https://api.github.com/repos/brownplt/pyret-lang/issues{/number}","pulls_url":"https://api.github.com/repos/brownplt/pyret-lang/pulls{/number}","milestones_url":"https://api.github.com/repos/brownplt/pyret-lang/milestones{/number}","notifications_url":"https://api.github.com/repos/brownplt/pyret-lang/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/brownplt/pyret-lang/labels{/name}","releases_url":"https://api.github.com/repos/brownplt/pyret-lang/releases{/id}","deployments_url":"https://api.github.com/repos/brownplt/pyret-lang/deployments","created_at":"2012-11-15T02:28:16Z","updated_at":"2018-08-08T15:29:09Z","pushed_at":"2018-08-08T15:59:09Z","git_url":"git://github.com/brownplt/pyret-lang.git","ssh_url":"git@github.com:brownplt/pyret-lang.git","clone_url":"https://github.com/brownplt/pyret-lang.git","svn_url":"https://github.com/brownplt/pyret-lang","homepage":null,"size":461409,"stargazers_count":574,"watchers_count":574,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":76,"mirror_url":null,"archived":false,"open_issues_count":383,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":76,"open_issues":383,"watchers":574,"default_branch":"horizon"}},"base":{"label":"brownplt:horizon","ref":"horizon","sha":"3b86a1635b8ebfe0de35bf27ba92c49df31cacf7","user":{"login":"brownplt","id":391839,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5MTgzOQ==","avatar_url":"https://avatars1.githubusercontent.com/u/391839?v=4","gravatar_id":"","url":"https://api.github.com/users/brownplt","html_url":"https://github.com/brownplt","followers_url":"https://api.github.com/users/brownplt/followers","following_url":"https://api.github.com/users/brownplt/following{/other_user}","gists_url":"https://api.github.com/users/brownplt/gists{/gist_id}","starred_url":"https://api.github.com/users/brownplt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brownplt/subscriptions","organizations_url":"https://api.github.com/users/brownplt/orgs","repos_url":"https://api.github.com/users/brownplt/repos","events_url":"https://api.github.com/users/brownplt/events{/privacy}","received_events_url":"https://api.github.com/users/brownplt/received_events","type":"Organization","site_admin":false},"repo":{"id":6698407,"node_id":"MDEwOlJlcG9zaXRvcnk2Njk4NDA3","name":"pyret-lang","full_name":"brownplt/pyret-lang","owner":{"login":"brownplt","id":391839,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5MTgzOQ==","avatar_url":"https://avatars1.githubusercontent.com/u/391839?v=4","gravatar_id":"","url":"https://api.github.com/users/brownplt","html_url":"https://github.com/brownplt","followers_url":"https://api.github.com/users/brownplt/followers","following_url":"https://api.github.com/users/brownplt/following{/other_user}","gists_url":"https://api.github.com/users/brownplt/gists{/gist_id}","starred_url":"https://api.github.com/users/brownplt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brownplt/subscriptions","organizations_url":"https://api.github.com/users/brownplt/orgs","repos_url":"https://api.github.com/users/brownplt/repos","events_url":"https://api.github.com/users/brownplt/events{/privacy}","received_events_url":"https://api.github.com/users/brownplt/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/brownplt/pyret-lang","description":"The Pyret language.","fork":false,"url":"https://api.github.com/repos/brownplt/pyret-lang","forks_url":"https://api.github.com/repos/brownplt/pyret-lang/forks","keys_url":"https://api.github.com/repos/brownplt/pyret-lang/keys{/key_id}","collaborators_url":"https://api.github.com/repos/brownplt/pyret-lang/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/brownplt/pyret-lang/teams","hooks_url":"https://api.github.com/repos/brownplt/pyret-lang/hooks","issue_events_url":"https://api.github.com/repos/brownplt/pyret-lang/issues/events{/number}","events_url":"https://api.github.com/repos/brownplt/pyret-lang/events","assignees_url":"https://api.github.com/repos/brownplt/pyret-lang/assignees{/user}","branches_url":"https://api.github.com/repos/brownplt/pyret-lang/branches{/branch}","tags_url":"https://api.github.com/repos/brownplt/pyret-lang/tags","blobs_url":"https://api.github.com/repos/brownplt/pyret-lang/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/brownplt/pyret-lang/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/brownplt/pyret-lang/git/refs{/sha}","trees_url":"https://api.github.com/repos/brownplt/pyret-lang/git/trees{/sha}","statuses_url":"https://api.github.com/repos/brownplt/pyret-lang/statuses/{sha}","languages_url":"https://api.github.com/repos/brownplt/pyret-lang/languages","stargazers_url":"https://api.github.com/repos/brownplt/pyret-lang/stargazers","contributors_url":"https://api.github.com/repos/brownplt/pyret-lang/contributors","subscribers_url":"https://api.github.com/repos/brownplt/pyret-lang/subscribers","subscription_url":"https://api.github.com/repos/brownplt/pyret-lang/subscription","commits_url":"https://api.github.com/repos/brownplt/pyret-lang/commits{/sha}","git_commits_url":"https://api.github.com/repos/brownplt/pyret-lang/git/commits{/sha}","comments_url":"https://api.github.com/repos/brownplt/pyret-lang/comments{/number}","issue_comment_url":"https://api.github.com/repos/brownplt/pyret-lang/issues/comments{/number}","contents_url":"https://api.github.com/repos/brownplt/pyret-lang/contents/{+path}","compare_url":"https://api.github.com/repos/brownplt/pyret-lang/compare/{base}...{head}","merges_url":"https://api.github.com/repos/brownplt/pyret-lang/merges","archive_url":"https://api.github.com/repos/brownplt/pyret-lang/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/brownplt/pyret-lang/downloads","issues_url":"https://api.github.com/repos/brownplt/pyret-lang/issues{/number}","pulls_url":"https://api.github.com/repos/brownplt/pyret-lang/pulls{/number}","milestones_url":"https://api.github.com/repos/brownplt/pyret-lang/milestones{/number}","notifications_url":"https://api.github.com/repos/brownplt/pyret-lang/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/brownplt/pyret-lang/labels{/name}","releases_url":"https://api.github.com/repos/brownplt/pyret-lang/releases{/id}","deployments_url":"https://api.github.com/repos/brownplt/pyret-lang/deployments","created_at":"2012-11-15T02:28:16Z","updated_at":"2018-08-08T15:29:09Z","pushed_at":"2018-08-08T15:59:09Z","git_url":"git://github.com/brownplt/pyret-lang.git","ssh_url":"git@github.com:brownplt/pyret-lang.git","clone_url":"https://github.com/brownplt/pyret-lang.git","svn_url":"https://github.com/brownplt/pyret-lang","homepage":null,"size":461409,"stargazers_count":574,"watchers_count":574,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":76,"mirror_url":null,"archived":false,"open_issues_count":383,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":76,"open_issues":383,"watchers":574,"default_branch":"horizon"}},"_links":{"self":{"href":"https://api.github.com/repos/brownplt/pyret-lang/pulls/1386"},"html":{"href":"https://github.com/brownplt/pyret-lang/pull/1386"},"issue":{"href":"https://api.github.com/repos/brownplt/pyret-lang/issues/1386"},"comments":{"href":"https://api.github.com/repos/brownplt/pyret-lang/issues/1386/comments"},"review_comments":{"href":"https://api.github.com/repos/brownplt/pyret-lang/pulls/1386/comments"},"review_comment":{"href":"https://api.github.com/repos/brownplt/pyret-lang/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/brownplt/pyret-lang/pulls/1386/commits"},"statuses":{"href":"https://api.github.com/repos/brownplt/pyret-lang/statuses/b70cc242538dc9260a9d3bf009fd5559e66e98bf"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"blerner"}}