{"action":"opened","issue":{"url":"https://api.github.com/repos/johnynek/bosatsu/issues/101","repository_url":"https://api.github.com/repos/johnynek/bosatsu","labels_url":"https://api.github.com/repos/johnynek/bosatsu/issues/101/labels{/name}","comments_url":"https://api.github.com/repos/johnynek/bosatsu/issues/101/comments","events_url":"https://api.github.com/repos/johnynek/bosatsu/issues/101/events","html_url":"https://github.com/johnynek/bosatsu/issues/101","id":375191835,"node_id":"MDU6SXNzdWUzNzUxOTE4MzU=","number":101,"title":"remove support for recursive structs","user":{"login":"johnynek","id":67958,"node_id":"MDQ6VXNlcjY3OTU4","avatar_url":"https://avatars0.githubusercontent.com/u/67958?v=4","gravatar_id":"","url":"https://api.github.com/users/johnynek","html_url":"https://github.com/johnynek","followers_url":"https://api.github.com/users/johnynek/followers","following_url":"https://api.github.com/users/johnynek/following{/other_user}","gists_url":"https://api.github.com/users/johnynek/gists{/gist_id}","starred_url":"https://api.github.com/users/johnynek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnynek/subscriptions","organizations_url":"https://api.github.com/users/johnynek/orgs","repos_url":"https://api.github.com/users/johnynek/repos","events_url":"https://api.github.com/users/johnynek/events{/privacy}","received_events_url":"https://api.github.com/users/johnynek/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-10-29T20:01:42Z","updated_at":"2018-10-29T20:01:42Z","closed_at":null,"author_association":"OWNER","body":"see comment: https://github.com/johnynek/bosatsu/pull/100#discussion_r229076277\r\n\r\nSupport for recursive structs `struct W(fn: W[a, b] -> a -> b)` is enough to give rise to full blown recursion due to the y-combinator. I should have realized this before.\r\n\r\nWe need to add a recursion check to struct/enum definition that requires them to only reference things in scope above them excluding themselves. Currently, we do no such check, so as long as eventually the type is in scope before full type checking (after the entire package has been parsed), we can type check."}}
{"actor":{"display_login":"johnynek"}}