* Split a type expression into the capitalized type names it contains — base * type plus any generic arguments (`Bar ` → `Bar`, `Foo`, `Baz`), * each reduced to its last namespace segment. Lowercase/keyword tokens drop out.
(expr: string)
| 125 | * each reduced to its last namespace segment. Lowercase/keyword tokens drop out. |
| 126 | */ |
| 127 | private typeNames(expr: string): string[] { |
| 128 | const out: string[] = []; |
| 129 | for (const raw of expr.split(/[<>,\s]+/)) { |
| 130 | const seg = this.lastSegment(raw.trim()); |
| 131 | if (/^[A-Z][A-Za-z0-9_]*$/.test(seg)) out.push(seg); |
| 132 | } |
| 133 | return out; |
| 134 | } |
| 135 | |
| 136 | private pushRef(componentId: string, name: string, line: number, column: number): void { |
| 137 | this.unresolvedReferences.push({ |
no test coverage detected