* Extract the name from a node based on language
(node: SyntaxNode, source: string, extractor: LanguageExtractor)
| 88 | * Extract the name from a node based on language |
| 89 | */ |
| 90 | function extractName(node: SyntaxNode, source: string, extractor: LanguageExtractor): string { |
| 91 | const name = extractNameRaw(node, source, extractor); |
| 92 | // Universal fallback: recover a real identifier from a name still mangled by a |
| 93 | // macro the pre-parse didn't blank (C/C++ only — see recoverMangledName). A |
| 94 | // no-op on well-formed names, so a clean name is never altered. |
| 95 | return extractor.recoverMangledName ? extractor.recoverMangledName(name) : name; |
| 96 | } |
| 97 | |
| 98 | function extractNameRaw(node: SyntaxNode, source: string, extractor: LanguageExtractor): string { |
| 99 | const hookName = extractor.resolveName?.(node, source); |
no test coverage detected