(language: string)
| 159 | } |
| 160 | |
| 161 | async function getParserForLanguage(language: string): Promise<Parser> { |
| 162 | let cachedParser = parserCache.get(language); |
| 163 | if (!cachedParser) { |
| 164 | cachedParser = (async () => { |
| 165 | await ensureParserInitialized(); |
| 166 | const parser = new Parser(); |
| 167 | try { |
| 168 | parser.setLanguage(await loadLanguage(language)); |
| 169 | } catch (err) { |
| 170 | // setLanguage failed — evict both caches so retry is possible |
| 171 | parserCache.delete(language); |
| 172 | languageCache.delete(language); |
| 173 | throw err; |
| 174 | } |
| 175 | return parser; |
| 176 | })(); |
| 177 | parserCache.set(language, cachedParser); |
| 178 | } |
| 179 | |
| 180 | return cachedParser; |
| 181 | } |
| 182 | |
| 183 | function getNodeKind(nodeType: string): string { |
| 184 | if (nodeType.includes('class')) return 'class'; |
no test coverage detected