| // Copyright 2022 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package zx |
| |
| import "internal/oserror" |
| |
| // Error is a Status with associated error text. |
| // It is used as a Go error. |
| type Error struct { |
| Status Status |
| Text string |
| } |
| |
| var _ error = (*Error)(nil) |
| |
| func (e *Error) Error() string { |
| if e.Text == "" { |
| return "zx.Status: " + e.Status.String() |
| } |
| return e.Status.String() + ": " + e.Text |
| } |
| |
| func (e *Error) Is(target error) bool { |
| switch target { |
| case oserror.ErrPermission: |
| return e.Status == ErrAccessDenied |
| case oserror.ErrExist: |
| return e.Status == ErrAlreadyExists |
| case oserror.ErrNotExist: |
| return e.Status == ErrNotFound |
| } |
| return false |
| } |