(caller, site)
| 200 | return guardLabel(await guards(caller, site)); |
| 201 | }, |
| 202 | async loops(caller, site) { |
| 203 | // Not counted against the budget: the tree is parsed for the site's |
| 204 | // guards anyway, and this is a second climb up the same nodes. |
| 205 | if (!site.line || !supportsBranchGuards(caller.language)) return []; |
| 206 | const file = resolve(caller); |
| 207 | if (!file) return []; |
| 208 | const key = { line: site.line, column: typeof site.column === 'number' ? site.column : null }; |
| 209 | return (await loopsForFile(file.abs, file.language, [key])).get(siteKey(key)) ?? []; |
| 210 | }, |
| 211 | async args(caller, site) { |
| 212 | if (!site.line || sites >= maxSites || !supportsBranchGuards(caller.language)) return null; |
| 213 | const file = resolve(caller); |
nothing calls this directly
no test coverage detected