Skip to content

Wrapped multi-errors should implement Unwrap() []error #38

Description

@abhinav

errtrace errors only implement Unwrap() error right now.
This hides the actual list of errors for wrapped multi-errors.
We need to implement Unwrap() []error if the error we're wrapping is a multi-error.

Alternatively, we can always implement only Unwrap() []error, and things should still just work.

Activity

  1. abhinav commented on Nov 28, 2023

    @abhinav
    ContributorAuthor

    This hides the actual list of errors for wrapped multi-errors.

    Actually, this isn't quite right. Even with just Unwrap() error, we're exposing the underlying list on the "next" layer, so it's not entirely inaccessible. But it's still going to be annoying. Although I'm not entirely certain that implementing Unwrap() []error is the right choice there, because transparently skipping the actual wrapped error means fmt.Errorf("information: %w %w", a, b) will unpack to a and b, ignoring information entirely.

    Separately, maybe we also need an errtrace.Unwrap that's a drop-in replacement for errors.Unwrap, and all it does is transparently unwrap the top-level errtrace error—if any. That can be a separate discussion.

  2. changed the title [-]Wrapped multi-errors should implement Unwrap() []error[/-] [+]Add errtrace.Unwrap() function as drop-in for errors.Unwrap[/+] on Nov 29, 2023
  3. changed the title [-]Add errtrace.Unwrap() function as drop-in for errors.Unwrap[/-] [+]Wrapped multi-errors should implement Unwrap() []error[/+] on Nov 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions