Repository navigation
Release v22.10.1
Fixed
- In source-file grouping mode, two types sharing a short name could have one rewrite the other's imports, producing TypeScript that does not compile.
BuildImportPathFixupsskipped any type whose file was already named after it — true that it needs no rewrite, but it also took that type out of conflict detection, so the other type claimed the short name unopposed and the fixup was applied to every import of either.
Found in Cratis Studio, which uses CratisProxiesUseSourceFileAsOutputFile. ScreenTemplate exists twice there: Scene's model declares one in ScreenTemplate.cs, and Studio declares its own in Projects/Hierarchy/Hierarchy.cs. Scene's needed no rewrite and so was skipped; Studio's claimed the name; and the generated SceneApplication.ts came out with
import { ScreenTemplate } from '../../../Scene/Model/Screens/Hierarchy';pointing at a file that does not exist, while the type had in fact been emitted to Screens/ScreenTemplate.ts.
Such a type now takes part in claiming the name like any other, and entries that would rewrite a name to itself are dropped at the end instead. A short name two types disagree about stays a conflict and gets no fixup — which is what the conflict set was always there to do.
The regression spec (and_two_types_share_a_short_name) fails on both of its assertions without the change and passes with it.
Verified: 51 projects build in Release with 0 errors and 0 warnings, and 1227 ProxyGenerator specs pass.
🤖 Generated with Claude Code