Skip to content

Fix SchComponent.Comment not persisting through SchDoc/SchLib writers - #48

Open
Andrei-Errapart wants to merge 1 commit into
issus:masterfrom
Andrei-Errapart:SchDocWriterBug
Open

Fix SchComponent.Comment not persisting through SchDoc/SchLib writers#48
Andrei-Errapart wants to merge 1 commit into
issus:masterfrom
Andrei-Errapart:SchDocWriterBug

Conversation

@Andrei-Errapart

Copy link
Copy Markdown

SchDocReader populated Comment from DesignItemId instead of the child "Comment" parameter SchLibReader correctly used, and neither writer ever pushed the property back into that parameter, so edits (and WithComment() on from-scratch components) were silently dropped. SchDocWriter's byte-faithful replay path made this worse for loaded documents: it re-emits the exact bytes captured at read time whenever the primitive count is unchanged, swallowing even direct edits to the backing parameter's Value.

  • SchDocReader/SchLibReader now derive Comment from the child "Comment" parameter once children are attached, recording a CommentAsRead baseline.
  • New SchLibWriter.SyncComponentComment pushes an edited Comment back into that parameter (creating one if absent), used by both writers.
  • SchDocWriter disables its byte-faithful fast path only when a Comment edit is actually detected, so untouched documents still round-trip byte-identical.
  • Add regression tests in SchDocRoundTripTests/SchLibRoundTripTests covering mutate-after-load and from-scratch WithComment.

Summary

Changes

Test Plan

  • Existing tests pass (dotnet test)
  • New tests added for new behavior

Checklist

  • Code follows existing style and conventions
  • Public API changes are documented with XML doc comments
  • No breaking changes (or clearly identified below)

SchDocReader populated Comment from DesignItemId instead of the child
"Comment" parameter SchLibReader correctly used, and neither writer
ever pushed the property back into that parameter, so edits (and
WithComment() on from-scratch components) were silently dropped.
SchDocWriter's byte-faithful replay path made this worse for loaded
documents: it re-emits the exact bytes captured at read time whenever
the primitive count is unchanged, swallowing even direct edits to the
backing parameter's Value.

- SchDocReader/SchLibReader now derive Comment from the child
  "Comment" parameter once children are attached, recording a
  CommentAsRead baseline.
- New SchLibWriter.SyncComponentComment pushes an edited Comment back
  into that parameter (creating one if absent), used by both writers.
- SchDocWriter disables its byte-faithful fast path only when a
  Comment edit is actually detected, so untouched documents still
  round-trip byte-identical.
- Add regression tests in SchDocRoundTripTests/SchLibRoundTripTests
  covering mutate-after-load and from-scratch WithComment.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant