* Drop cross-language candidates from a name lookup. Two regimes: * - `references` (type-usage): a type named in language X resolves to a * SAME-family type, never a coincidentally same-named symbol in another * language (the Android `BatteryManager` system class vs a JS one). Strict *
(candidates: Node[], ref: UnresolvedRef)
| 187 | * both-known filter so `.vue`/`.svelte` (own tag) importing `.ts` survives. |
| 188 | */ |
| 189 | function applyLanguageGate(candidates: Node[], ref: UnresolvedRef): Node[] { |
| 190 | if (ref.referenceKind === 'references' || ref.referenceKind === 'function_ref') { |
| 191 | return candidates.filter((c) => sameLanguageFamily(c.language, ref.language)); |
| 192 | } |
| 193 | if (ref.referenceKind === 'imports') { |
| 194 | return candidates.filter((c) => !crossesKnownFamily(c.language, ref.language)); |
| 195 | } |
| 196 | return candidates; |
| 197 | } |
| 198 | |
| 199 | /** |
| 200 | * Resolve a function-as-value reference (#756) — a function name used as a |
no test coverage detected