fix(core): validate transforms without emit - #1625
Conversation
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
samchon
left a comment
There was a problem hiding this comment.
Self-Review round 1 — finding fixed
Reviewed immutable commit a4339e8c3ea36ca53854c6bfa1eff311ddb3a750 across the complete pull-request diff and the compiler-driver, SDK consumer, platform, recovery, packaging, documentation, and CI consequence surfaces.
One sound concurrency defect survived verification: TypeScript-Go's declaration emitter queues source files in parallel, while the new deferred-output callback appended to the shared emitted and pending slices without synchronization. A declaration build could therefore race or lose a buffered artifact. Commit cdd8d09af8aabee9320e632da2bcd44336658b31 serializes those callback writes.
Because the review produced a change, this round is not the final clean gate. A fresh whole-surface round is running against cdd8d09af8aabee9320e632da2bcd44336658b31 while its replacement CI matrix executes.
samchon
left a comment
There was a problem hiding this comment.
Self-Review round 2 — clean
Reviewed immutable commit cdd8d09af8aabee9320e632da2bcd44336658b31 from scratch across the complete base-to-head diff and its compiler-driver, typia/core/SDK composition, declaration/JavaScript/map/build-info/manifest publication, no-emit and failure recovery, concurrency, Windows/POSIX, Express/Fastify, generated SDK/Swagger/e2e, packaging, documentation, migration, and CI consequences.
No further sound improvement survived verification. The round confirmed:
- check, explicit
--noEmit, and configurednoEmitrun the complete composed transform and publish no artifacts; - LLM-incompatible
TypedRoutereturn types report the exactnestia.core.TypedRoutecompile diagnostic instead of deferring to runtimeNoTransformConfigurationError; - failed emitting builds publish no declarations, JavaScript, maps, build info, or manifest;
- the SDK contributor shares the core host and SDK callers preserve the host's nonzero status and stderr, so no separate SDK execution patch is required;
- buffered declaration callbacks are serialized before the final clean-only flush;
- typia,
@typia/interface, and@typia/utilsresolve consistently to 14.0.2.
GitHub Actions completed all 21 pull-request checks successfully, including go, sdk, transform-options, e2e, Ubuntu build, both format jobs, and both Ubuntu/Windows benchmark-system jobs. No verification remains skipped beyond the already disclosed interrupted local full-Go run, whose complete matrix was delegated to and passed in CI.
Intent
Make
ttsc --noEmit, configurednoEmit, and the nativecheckcommand surface the same typia/core/SDK contributor diagnostics as an emitting nestia build, while ensuring failed builds cannot leave runnable untransformed output.Closes #1624.
Scope
checkthrough the same no-emit build path so the two commands cannot diverge;TypedRouteacross check, explicit--noEmit, configurednoEmit, and normal failed emit paths;ttscCLI reports the detailednestia.core.TypedRoutediagnostic and publishes no failed output;@typia/interface, and@typia/utilsto 14.0.2 so nestia consumes the upstream runtime guidance release.@nestia/sdkneeds no separate execution change: its compiler already propagates the core host's nonzero status and stderr. No package version fields are changed; release versioning remains maintainer-owned.Local verification
go test ./... -run 'TestBuild(NoEmitReportsLlmRouteDiagnostic|TransformDiagnosticPublishesNoArtifacts|NoEmitPreservesAnalysisOnlyOptions)$' -count=1 -vpnpm --filter ./tests/test-transform-options startpnpm formatgit diff --cached --checkThe full
pnpm --filter @nestia/core test:gorun was intentionally stopped before completion at maintainer direction; the complete repository matrix is deferred to GitHub Actions.