(pos: number)
| 214 | lineOffsets.push(lineOffsets[i]! + lines[i]!.length + 1); |
| 215 | } |
| 216 | const positionToLine = (pos: number): { line: number; col: number } => { |
| 217 | // Binary search |
| 218 | let lo = 0, hi = lineOffsets.length - 1; |
| 219 | while (lo < hi) { |
| 220 | const mid = (lo + hi + 1) >>> 1; |
| 221 | if (lineOffsets[mid]! <= pos) lo = mid; |
| 222 | else hi = mid - 1; |
| 223 | } |
| 224 | return { line: lo + 1, col: pos - lineOffsets[lo]! }; |
| 225 | }; |
| 226 | |
| 227 | const symbols: ExtractedSymbol[] = []; |
| 228 | for (const { pattern, kind } of patterns) { |