Include byte offset in decode errors#49
Merged
Merged
Conversation
We introduce `OffsetReader`, which is a thin wrapper around an `std::io::Read` and stores the amount of bytes consumed so far. We then use that information to make `DecodeModuleError` more useful, by including the offset at which a decoding error occurred. Also, executed `cargo fmt` in the process. Resolves #22
There was a problem hiding this comment.
Pull request overview
This PR enhances decode error reporting by tracking the byte position of the input stream during module decoding and attaching that offset to top-level decode errors (resolving #22). It also updates tests and public re-exports to account for the new error shape, alongside formatting/import reordering from cargo fmt.
Changes:
- Introduce an internal
OffsetReaderwrapper to track bytes consumed duringdecode_module. - Replace the previous
DecodeModuleErrorenum with a struct that includes{ offset, source }, wheresourceis a newDecodeModuleErrorKindenum. - Update tests and error-type re-exports to match on
err.source(the kind) rather than the old top-level enum variants.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
src/decode/module.rs |
Adds OffsetReader and restructures module decode errors to include byte offsets. |
src/decode/mod.rs |
Re-exports DecodeModuleErrorKind alongside DecodeModuleError. |
src/decode_errors.rs |
Re-exports DecodeModuleErrorKind for consumers. |
tests/tests.rs |
Updates pattern matches to use err.source / DecodeModuleErrorKind. |
tests/error_types.rs |
Updates extensive error-shape assertions to use err.source / DecodeModuleErrorKind. |
src/decode/helpers.rs |
Import reordering from formatting. |
src/decode/types/limits.rs |
Import reordering from formatting. |
src/decode/types/heaptype.rs |
Import reordering from formatting. |
src/decode/types/globaltype.rs |
Import reordering from formatting. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
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.
We introduce
OffsetReader, which is a thin wrapper around anstd::io::Readand stores the amount of bytes consumed so far. We then use that information to makeDecodeModuleErrormore useful, by including the offset at which a decoding error occurred.Also, executed
cargo fmtin the process.Resolves #22