Call resolution is name-based (no type info), which causes several inaccuracies. Track them together:
- Method calls treated as free functions (
jslike.ts): widget.render() captures only render and links it to any render def → wrong/missing edges.
- Ambiguous calls dropped silently (
shared.ts:141-155): when a name is defined in several files and none is imported, the edge is omitted with no diagnostic.
- Anonymous-callback attribution (
shared.ts:42-55): a call inside arr.map(() => foo()) is attributed to the nearest named ancestor, not the callback.
At minimum, document these limitations; ideally improve heuristics (e.g. prefer same-file/imported defs, emit a low-confidence edge instead of dropping).
La resolución de llamadas es por nombre (sin tipos), lo que genera varias imprecisiones. Se agrupan:
- Métodos tratados como funciones libres (
jslike.ts): widget.render() captura solo render y lo enlaza a cualquier render → aristas incorrectas o perdidas.
- Llamadas ambiguas descartadas en silencio (
shared.ts:141-155): si un nombre está en varios archivos y ninguno se importa, la arista se omite sin aviso.
- Atribución en callbacks anónimos (
shared.ts:42-55): una llamada en arr.map(() => foo()) se atribuye al ancestro nombrado más cercano, no al callback.
Mínimo: documentar estas limitaciones; ideal: mejorar heurísticas (preferir defs del mismo archivo/importadas, emitir arista de baja confianza en vez de descartar).
Call resolution is name-based (no type info), which causes several inaccuracies. Track them together:
jslike.ts):widget.render()captures onlyrenderand links it to anyrenderdef → wrong/missing edges.shared.ts:141-155): when a name is defined in several files and none is imported, the edge is omitted with no diagnostic.shared.ts:42-55): a call insidearr.map(() => foo())is attributed to the nearest named ancestor, not the callback.At minimum, document these limitations; ideally improve heuristics (e.g. prefer same-file/imported defs, emit a low-confidence edge instead of dropping).
La resolución de llamadas es por nombre (sin tipos), lo que genera varias imprecisiones. Se agrupan:
jslike.ts):widget.render()captura solorendery lo enlaza a cualquierrender→ aristas incorrectas o perdidas.shared.ts:141-155): si un nombre está en varios archivos y ninguno se importa, la arista se omite sin aviso.shared.ts:42-55): una llamada enarr.map(() => foo())se atribuye al ancestro nombrado más cercano, no al callback.Mínimo: documentar estas limitaciones; ideal: mejorar heurísticas (preferir defs del mismo archivo/importadas, emitir arista de baja confianza en vez de descartar).