let errorValue: Error = MyError.reallyImportant("goodbye") func castValueToError<T>(error: T) -> Error? { return error as? Error } // CHECK-NEXT: reallyImportant("goodbye") print(castValueToError(error: errorValue) ?? value)