{"action":"opened","issue":{"url":"https://api.github.com/repos/estree/estree/issues/28","labels_url":"https://api.github.com/repos/estree/estree/issues/28/labels{/name}","comments_url":"https://api.github.com/repos/estree/estree/issues/28/comments","events_url":"https://api.github.com/repos/estree/estree/issues/28/events","html_url":"https://github.com/estree/estree/issues/28","id":57780065,"number":28,"title":"Class AST modification proposals","user":{"login":"RReverser","id":557590,"avatar_url":"https://avatars.githubusercontent.com/u/557590?v=3","gravatar_id":"","url":"https://api.github.com/users/RReverser","html_url":"https://github.com/RReverser","followers_url":"https://api.github.com/users/RReverser/followers","following_url":"https://api.github.com/users/RReverser/following{/other_user}","gists_url":"https://api.github.com/users/RReverser/gists{/gist_id}","starred_url":"https://api.github.com/users/RReverser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RReverser/subscriptions","organizations_url":"https://api.github.com/users/RReverser/orgs","repos_url":"https://api.github.com/users/RReverser/repos","events_url":"https://api.github.com/users/RReverser/events{/privacy}","received_events_url":"https://api.github.com/users/RReverser/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-02-16T09:12:31Z","updated_at":"2015-02-16T09:12:31Z","closed_at":null,"body":"Collected those from comments to #19, some thoughts on what we could change until it's too late:\r\n\r\n### 1. `Class::body::body` -> `Class::body::methods`\r\n\r\n```js\r\ninterface ClassBody <: Node {\r\n    type: \"ClassBody\";\r\n    body: [ MethodDefinition ];\r\n```\r\n\r\nHow about renaming this to `methods` instead? For `BlockStatement`, we can't change it, but here I think we could fix the `classStmt.body[0].body[1].value` chain into smth more meaningful.\r\n\r\n### 2. `\"\"` in `MethodDefinition::kind`\r\n\r\n```js\r\ninterface MethodDefinition <: Node {\r\n    type: \"MethodDefinition\";\r\n    key: Identifier;\r\n    value: FunctionExpression;\r\n    kind: \"\" | \"get\" | \"set\";\r\n```\r\n\r\nHow about using `\"method\"` or smth here instead of empty string?\r\n\r\n### 3. `constructor`\r\n\r\nDo you think we need to parse constructor as separate node type (i.e. `ConstructorDefinition` or smth) or do we continue to treat it as regular method and leave AST processors to check `method.key.type === 'Identifier' && method.key.name === 'constructor'`?\r\n\r\nFeels inconvenient as it has different meaning than regular method.\r\n\r\nThoughts?\r\n\r\n@dherman @ariya @sebmck @michaelficarra"}}