mirror of https://github.com/pulumi/pulumi.git
1be4888f7d
`result.Result` is a type that was introduced to enable us to distinguish between *expected* errors (or *bails* in Pulumi parlance) and *unexpected* errors or exceptions. Prior to Go 1.13, this made a lot of sense, since there was no standard story on "wrapping" errors, and thus no way to answer the question "did I end up here (in an error path) because I meant to, or did I end up here because of a program bug?". With the introduction of `%w`, `interface { Unwrap() []error }` and company in Go 1.13, a simpler interface is available: one can use `errors.Is` and `errors.As` to ask if an error at any point wraps an error of a certain type. With this, we can simply ask "is there a bail at any point in this error tree?" rather than having to track this explicitly using a type such as `result.Result`. The `IsBail` function was introduced a while ago to this end, but its rollout was not completed and several uses of `result.Result` remained. This commit completes the rollout of this simplified interface, replacing all uses of `result.Result` with native Go errors that may or may not wrap bails, and all uses of e.g. `res.IsBail` with `IsBail(err)`. Doing so allows us to remove `result.Result` entirely. |
||
---|---|---|
.. | ||
result.go | ||
result_test.go |