blob: 33475f2f4e74f41a3b1a2ccffdcb811b41bd82dd [file]
package w
import (
"fmt"
"log"
)
type CustomError struct {
Msg string
}
func (e CustomError) Error() string {
return e.Msg
}
type E int
func (*E) Error() string {
return ""
}
func PrintfTests() {
fmt.Errorf("%w", &CustomError{Msg: "custom error"}) // want `%w wants operand of error type CustomError, not pointer type \*CustomError \(defeats errors.Is\)`
fmt.Errorf("%w", CustomError{Msg: "custom error"})
var err *CustomError
fmt.Errorf("%w", err) // want `%w wants operand of error type CustomError, not pointer type \*CustomError \(defeats errors.Is\)`
var e *E
fmt.Errorf("%w", e) // nope - Error method is attached to the pointer type *E
log.Printf("%w", &CustomError{Msg: "custom error"}) // want `log.Printf does not support error-wrapping directive %w`
}