{"action":"created","issue":{"url":"https://api.github.com/repos/eslint/typescript-eslint-parser/issues/555","repository_url":"https://api.github.com/repos/eslint/typescript-eslint-parser","labels_url":"https://api.github.com/repos/eslint/typescript-eslint-parser/issues/555/labels{/name}","comments_url":"https://api.github.com/repos/eslint/typescript-eslint-parser/issues/555/comments","events_url":"https://api.github.com/repos/eslint/typescript-eslint-parser/issues/555/events","html_url":"https://github.com/eslint/typescript-eslint-parser/issues/555","id":382807088,"node_id":"MDU6SXNzdWUzODI4MDcwODg=","number":555,"title":"Missing visitor-keys","user":{"login":"armano2","id":625469,"node_id":"MDQ6VXNlcjYyNTQ2OQ==","avatar_url":"https://avatars1.githubusercontent.com/u/625469?v=4","gravatar_id":"","url":"https://api.github.com/users/armano2","html_url":"https://github.com/armano2","followers_url":"https://api.github.com/users/armano2/followers","following_url":"https://api.github.com/users/armano2/following{/other_user}","gists_url":"https://api.github.com/users/armano2/gists{/gist_id}","starred_url":"https://api.github.com/users/armano2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/armano2/subscriptions","organizations_url":"https://api.github.com/users/armano2/orgs","repos_url":"https://api.github.com/users/armano2/repos","events_url":"https://api.github.com/users/armano2/events{/privacy}","received_events_url":"https://api.github.com/users/armano2/received_events","type":"User","site_admin":false},"labels":[{"id":295591815,"node_id":"MDU6TGFiZWwyOTU1OTE4MTU=","url":"https://api.github.com/repos/eslint/typescript-eslint-parser/labels/bug","name":"bug","color":"fc2929","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2018-11-20T19:06:36Z","updated_at":"2018-11-21T22:34:16Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"I did some checking what we can and what we are not able to visit and i found some missing stuff:\r\n\r\n#### missing `typeParameters`\r\n- [ ] NewExpression - `new foo<Foo>()`\r\n- [ ] CallExpression - `foo<Foo>()`\r\n- [ ] TSAbstractClassDeclaration:  #561 - `abstract class Foo<Bar> {}`\r\n\r\n#### missing `superTypeParameters` \r\n`class foo extends bar<Foo>`\r\n- [ ] ClassDeclaration: #561\r\n- [ ] ClassExpression: #561\r\n- [ ] TSAbstractClassDeclaration: #561\r\n\r\n#### missing `implements`\r\n`class foo implements bar`,  `class foo implements bar, baz` \r\n- [ ] ClassDeclaration \r\n- [ ] ClassExpression\r\n- [ ] TSAbstractClassDeclaration - is listed in visitor-keys but not in analyze-scope\r\n\r\n#### missing node \r\n`implements bar`\r\n- [ ] ClassImplements\r\n  - id\r\n  - typeParameters\r\n\r\n#### missing import equals\r\n`import foo = require('foo')`\r\n- [ ] TSImportEqualsDeclaration\r\n  - name\r\n  - moduleReference\r\n- [ ] TSExternalModuleReference\r\n  - expression\r\n\r\n#### invalid order:\r\n- [ ] TSAbstractClassProperty : #560\r\n  - key\r\n  - typeAnnotation\r\n  - value\r\n\r\n#### missing decorators:\r\n- [ ] TSAbstractClassProperty: #560\r\n- [ ] TSAbstractClassDeclaration #561\r\n\r\n------\r\npossible issue\r\n\r\ntype is has invalid reference: in both cases no-unused-vars triggers no errors for T\r\n```\r\ninterface A<T> { }\r\n```\r\n```\r\nclass A<T> { }\r\n```\r\n\r\n\r\n------\r\n\r\nthis list is still WIP, i will add more stuff to it, but feel free to pick up from it\r\n"},"comment":{"url":"https://api.github.com/repos/eslint/typescript-eslint-parser/issues/comments/440832120","html_url":"https://github.com/eslint/typescript-eslint-parser/issues/555#issuecomment-440832120","issue_url":"https://api.github.com/repos/eslint/typescript-eslint-parser/issues/555","id":440832120,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0MDgzMjEyMA==","user":{"login":"mysticatea","id":1937871,"node_id":"MDQ6VXNlcjE5Mzc4NzE=","avatar_url":"https://avatars2.githubusercontent.com/u/1937871?v=4","gravatar_id":"","url":"https://api.github.com/users/mysticatea","html_url":"https://github.com/mysticatea","followers_url":"https://api.github.com/users/mysticatea/followers","following_url":"https://api.github.com/users/mysticatea/following{/other_user}","gists_url":"https://api.github.com/users/mysticatea/gists{/gist_id}","starred_url":"https://api.github.com/users/mysticatea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mysticatea/subscriptions","organizations_url":"https://api.github.com/users/mysticatea/orgs","repos_url":"https://api.github.com/users/mysticatea/repos","events_url":"https://api.github.com/users/mysticatea/events{/privacy}","received_events_url":"https://api.github.com/users/mysticatea/received_events","type":"User","site_admin":false},"created_at":"2018-11-21T22:34:16Z","updated_at":"2018-11-21T22:34:16Z","author_association":"MEMBER","body":"No. \r\n\r\nTypeScript has two namespaces: variables and types.\r\n\r\n```ts\r\n// Those are not redeclaration \r\n// because `interface` defines only in types and `const` defines only in variables.\r\ninterface A {}\r\nconst A = 0\r\n\r\n// On the other hand, `class` defines in both types and variables.\r\nclass B {}\r\n```\r\n\r\nThen, the `scopeManager` doesn't have types.\r\nI think that we should provide a way to access `types` namespace, but we don't have it now."}}
{"actor":{"display_login":"mysticatea"}}