mirror of
https://github.com/colbymchenry/codegraph.git
synced 2026-11-14 18:23:25 +08:00
Scala qualified names carry no package (Outer::Inner), so a call written Outer.Inner(args), a case-class or companion apply, found no type by its written name. It fell through to the name strategies, and under a return type annotation (def f(): WebSocket = WebSocket.Accepted(flow)) the local-declaration reader took WebSocket for the receiver's type and handed over an unrelated Java constructor, Other::Accepted::Accepted. Before the receiver-word strategy, a Scala call whose member is capitalized now resolves to the Scala type Outer::Inner when that is unambiguous: every match in one file (a class and its companion), or one in the call's own file; a class or trait wins over a same-named object. It is recorded as instantiates for a class, as a call for an object. The typed-receiver path no longer hands a Scala call another language's constructor. Real Java static methods are still reached from Scala. Validation: - resolution.test.ts: 5 cases, 4 red on main; the fifth (a Scala call to a real Java static) passes on both and guards the Java side. - A/B against main81559dcc(with #1950 and #1936): scalachess +77/-0, http4s +371/-1 (the one a retarget from a wrong defaults::Host to the Origin.Host case class), playframework +291/-1 (the one a retarget: Writeable's HttpEntity.Strict(...) from the Java play.http constructor to the Scala case class), play-samples +2 (two case-class applies #1950 unlinked from Java constructors); CMAK, click and gin identical. Every addition is a Scala case-class or object apply; sampled all right (Uci.Move, Header.Raw, H2Frame.Data, RemoteNode.Ip, ApplicationLoader.Context, Request.Connection over headers.Connection). - Cost (http4s, median of 3 interleaved fresh indexes, on main69af19ac): wall 8.6 s on main vs 7.8 s, process CPU 27.5 s vs 26.2 s, within noise. The A/B gave the same edges on both bases. Original PR #1951 by @danusha2345. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>