From 16b1a48c556934ca3f5ee52051937440fa932453 Mon Sep 17 00:00:00 2001 From: Bryan Frimin Date: Tue, 14 Apr 2026 10:37:12 +0200 Subject: [PATCH] Prefer errors.AsType over errors.As in style guide Signed-off-by: Bryan Frimin --- AGENTS.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index 66fe5cde5..7d4aeecd3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -159,7 +159,20 @@ return nil, fmt.Errorf("cannot load trust center: %w", err) return nil, fmt.Errorf("cannot create SAML service: %w", err) ``` -Sentinel errors in grouped `var ()` blocks. Custom error types implement `Unwrap() error`. Use `errors.Is` / `errors.As` for checks. +Sentinel errors in grouped `var ()` blocks. Custom error types implement `Unwrap() error`. Use `errors.Is` for sentinel checks. Use `errors.AsType[T](err)` (generic form) instead of `errors.As(err, &ptr)` for type assertions: + +```go +// Good +if e, ok := errors.AsType[*ValidationError](err); ok { + // use e +} + +// Bad — avoid the two-argument form +var ve *ValidationError +if errors.As(err, &ve) { + // use ve +} +``` ### Naming