-
Notifications
You must be signed in to change notification settings - Fork 0
feat: implement idiomatic error handling with As function #14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Warning Rate limit exceeded@yordis has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 1 minutes and 32 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (3)
WalkthroughAdds an unexported Changes
Sequence Diagram(s)sequenceDiagram
participant Caller
participant AsFn as As(err, target)
participant Target as trogonError (Is)
participant ErrorsPkg as errors.As
participant Trogon as *TrogonError
Caller->>AsFn: As(err, target)
AsFn->>Target: target.Is(err)
alt target.Is == true
Target-->>AsFn: true
AsFn->>ErrorsPkg: errors.As(err, **Trogon)
ErrorsPkg-->>AsFn: found *TrogonError
AsFn-->>Caller: return *TrogonError, true
else target.Is == false
Target-->>AsFn: false
AsFn-->>Caller: return nil, false
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
73df9de to
45736e2
Compare
45736e2 to
09386e6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
error.go(1 hunks)error_test.go(1 hunks)example_test.go(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- error_test.go
- example_test.go
🔇 Additional comments (2)
error.go (2)
897-899: LGTM! Clean interface design.The unexported
trogonErrorinterface is a sound design choice that constrains theAsfunction's target parameter to library-defined types (*TrogonErrorand*ErrorTemplate) while keeping the API flexible.
901-912: LGTM! Clear documentation with helpful example.The documentation effectively explains the function's purpose and provides a practical usage example. After fixing the wrapped error issue, consider adding a note that this works with both direct and wrapped TrogonErrors.
730ca18 to
0841a56
Compare
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
0841a56 to
22004ce
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces a new As function that provides idiomatic error handling by combining error matching and extraction in a single operation. The function simplifies the pattern of checking if an error matches a template and extracting its TrogonError representation.
Key changes:
- Added new
Asfunction that accepts an error and a target (TrogonError or ErrorTemplate) and returns the matched TrogonError with a boolean indicator - Introduced internal
trogonErrorinterface to support polymorphic matching behavior - Added comprehensive test coverage for various matching scenarios including wrapped errors
Reviewed Changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| error.go | Implements the new As function and trogonError interface for idiomatic error matching |
| error_test.go | Adds comprehensive test suite covering matching, wrapping, and change patterns for the As function |
| example_test.go | Demonstrates the new idiomatic error handling pattern using the As function |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
No description provided.