feat: anchored DateTime emission; qualify Timer.DelayCall; fix AfterDeserialization ctor - #50
Merged
Merged
Conversation
…eserialization ctor
[AnchoredDateTime] on a serializable DateTime emits
writer.WriteAnchoredTime / reader.ReadAnchoredTime through the primitive
rule ("AnchoredTime" rule argument, round-tripping through migration
schemas like DeltaTime). It takes precedence over [DeltaDateTime] when
both are present. Consumers must provide the anchored read/write methods
on their reader/writer.
The asynchronous AfterDeserialization path emitted an unqualified
Timer.DelayCall, compiling only for classes under Server.* - the same
latent class as the earlier qualification fixes. Now fully qualified, and
the non-Server-namespace fixture gains sync and async
[AfterDeserialization] methods, which were previously uncovered entirely.
AfterDeserializationAttribute's constructor ignored its parameter and
always set Synchronous to true; codegen reads the syntax-level argument so
output was unaffected, but the runtime property lied.
Real-corpus manifest: 36 sources change, all async-AfterDeserialization
users picking up the qualified call.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The phase-1 payload plus the last latent finding from #49.
[AnchoredDateTime]: a serializableDateTimeemitswriter.WriteAnchoredTime/reader.ReadAnchoredTimevia the primitive rule ("AnchoredTime"rule argument, round-tripping through migration schemas exactly likeDeltaTime). Precedence over[DeltaDateTime]when both are present. Consumers must provide the anchored read/write methods on their reader/writer — the runtime side lands with the save-time anchor work in the consuming engine.Timer.DelayCallqualification: the async[AfterDeserialization(false)]path emitted an unqualifiedTimer.DelayCall— the same only-compiles-under-Server.*class of defect as the earlier qualification fixes. NowServer.Timer.DelayCall, pinned by new sync+async[AfterDeserialization]coverage in the non-Server-namespace fixture (this feature had zero test coverage before).AfterDeserializationAttributector bug:(bool synchronous = true) => Synchronous = true;ignored its parameter. Codegen reads the syntax-level argument so output was never affected, but the runtime property lied.Proof
WriteAnchoredTime(_lastRested),Server.Timer.DelayCall(RebuildCaches)), both compile-gated.AfterDeserializationusers picking up the qualified call; everything else byte-identical.🤖 Generated with Claude Code