{"action":"closed","issue":{"url":"https://api.github.com/repos/cwi-swat/rascal/issues/93","labels_url":"https://api.github.com/repos/cwi-swat/rascal/issues/93/labels{/name}","comments_url":"https://api.github.com/repos/cwi-swat/rascal/issues/93/comments","events_url":"https://api.github.com/repos/cwi-swat/rascal/issues/93/events","html_url":"https://github.com/cwi-swat/rascal/issues/93","id":9806906,"number":93,"title":"Split the jdt @types annotation.","user":{"login":"DavyLandman","id":179603,"avatar_url":"https://avatars.githubusercontent.com/u/179603?v=3","gravatar_id":"","url":"https://api.github.com/users/DavyLandman","html_url":"https://github.com/DavyLandman","followers_url":"https://api.github.com/users/DavyLandman/followers","following_url":"https://api.github.com/users/DavyLandman/following{/other_user}","gists_url":"https://api.github.com/users/DavyLandman/gists{/gist_id}","starred_url":"https://api.github.com/users/DavyLandman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DavyLandman/subscriptions","organizations_url":"https://api.github.com/users/DavyLandman/orgs","repos_url":"https://api.github.com/users/DavyLandman/repos","events_url":"https://api.github.com/users/DavyLandman/events{/privacy}","received_events_url":"https://api.github.com/users/DavyLandman/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2013-01-09T14:50:26Z","updated_at":"2015-06-08T11:40:06Z","closed_at":"2015-06-08T11:40:06Z","body":"There is one part of the JDT which has always confused me, it is the ``@types`` annotation.\r\n\r\n```\r\n@doc{contains all type declarations and uses}\r\nanno BindingRel Resource@types;  \r\n````\r\n\r\nI find the following issues with this annotation:\r\n- Why do we mix declaration and usage, which in the relation itself is not easy to recognize (sometimes impossible)?\r\n- We have alternatives for just type declarations, but they only provide class decorations, not enums and interfaces. (``@classes`` or combination of ``@declaredTopTypes`` and ``@declaredSubTypes``)\r\n- What is a type usage? because we already have fields, variables, constructors, calls.\r\n\r\nI suggest removing this ``@types`` annotation, introduce a ``@interface`` annotation, and if there is a case I'm missing perhaps add a replacement for ``@types`` usage part.\r\n\r\nAnother motivation is that if you load the rascal eclipse project using JDT, this relation alone takes up 600MB. Which wouldn't be such a problem, if this was an useful relation.\r\n\r\nThe other \"and uses\" annotations such as `@fields`, `@constructors`, and `@methods` might also benefit from splitting. They all have a `Decls` version, but perhaps need a `usage` version to replace the general one."}}