{"action":"opened","issue":{"url":"https://api.github.com/repos/ceylon/ceylon/issues/5856","labels_url":"https://api.github.com/repos/ceylon/ceylon/issues/5856/labels{/name}","comments_url":"https://api.github.com/repos/ceylon/ceylon/issues/5856/comments","events_url":"https://api.github.com/repos/ceylon/ceylon/issues/5856/events","html_url":"https://github.com/ceylon/ceylon/issues/5856","id":123354012,"number":5856,"title":"Ceylon backend error with type families","user":{"login":"dlkw","id":15879995,"avatar_url":"https://avatars.githubusercontent.com/u/15879995?v=3","gravatar_id":"","url":"https://api.github.com/users/dlkw","html_url":"https://github.com/dlkw","followers_url":"https://api.github.com/users/dlkw/followers","following_url":"https://api.github.com/users/dlkw/following{/other_user}","gists_url":"https://api.github.com/users/dlkw/gists{/gist_id}","starred_url":"https://api.github.com/users/dlkw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dlkw/subscriptions","organizations_url":"https://api.github.com/users/dlkw/orgs","repos_url":"https://api.github.com/users/dlkw/repos","events_url":"https://api.github.com/users/dlkw/events{/privacy}","received_events_url":"https://api.github.com/users/dlkw/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-12-21T20:44:09Z","updated_at":"2015-12-21T20:44:09Z","closed_at":null,"body":"Following code yields a ceylon backend error \"cannot reference this before supertype constructor has been called\" on the line starting with \"`class BasicGraph<T>`\".\r\nThis is when using Ceylon IDE 1.2.0.v20151214-1608-Final.\r\n\r\n```ceylon\r\nclass FamilyGraph() {\r\nshared abstract class Graph< ActualNode, ActualEdge>()\r\n        given ActualNode satisfies Node\r\n        given ActualEdge satisfies Edge\r\n{\r\n    shared formal class Edge(ActualNode node1, ActualNode node2) of ActualEdge {\r\n        shared default Boolean touches(ActualNode node) {\r\n            return node == node1 || node == node2;\r\n        }\r\n    }\r\n\r\n    shared formal class Node() of ActualNode {\r\n        shared default Boolean touches(ActualEdge edge) {\r\n            return edge.touches(this of ActualNode);\r\n        }\r\n    }\r\n}\r\n\r\nclass BasicGraph<T>() extends Graph<Node, Edge>()\r\n{\r\n    shared actual class Edge(Node node1, Node node2)\r\n        extends super.Edge(node1, node2)\r\n    {}\r\n\r\n    shared actual class Node()\r\n        extends super.Node()\r\n    {}\r\n}\r\n```"}}