These functions are called for their side effect of raising errors and warnings. These conditions have custom classes and structures to make testing easier.

stop_incompatible_type(
x,
y,
...,
x_arg,
y_arg,
action = c("combine", "convert"),
details = NULL,
message = NULL,
class = NULL
)

stop_incompatible_cast(
x,
to,
...,
x_arg,
to_arg,
details = NULL,
message = NULL,
class = NULL
)

stop_incompatible_op(
op,
x,
y,
details = NULL,
...,
message = NULL,
class = NULL
)

stop_incompatible_size(
x,
y,
x_size,
y_size,
...,
x_arg,
y_arg,
details = NULL,
message = NULL,
class = NULL
)

allow_lossy_cast(expr, x_ptype = NULL, to_ptype = NULL)

## Arguments

x, y, to Vectors Only use these fields when creating a subclass. Argument names for x, y, and to. Used in error messages to inform the user about the locations of incompatible types. An option to customize the incompatible type message depending on the context. Errors thrown from vec_ptype2() use "combine" and those thrown from vec_cast() use "convert". Any additional human readable details. An overriding message for the error. details and message are mutually exclusive, supplying both is an error. Suppress only the casting errors where x or to match these prototypes. Use if you want to further customize the class.

## Value

stop_incompatible_*() unconditionally raise an error of class "vctrs_error_incompatible_*" and "vctrs_error_incompatible".

## Examples


# Most of the time, maybe_lossy_cast() returns its input normally:
maybe_lossy_cast(
c("foo", "bar"),
NULL,
"",
lossy = c(FALSE, FALSE),
x_arg = "",
to_arg = ""
)
#> [1] "foo" "bar"
# If lossy has any TRUE, an error is thrown:
try(maybe_lossy_cast(
c("foo", "bar"),
NULL,
"",
lossy = c(FALSE, TRUE),
x_arg = "",
to_arg = ""
))
#> Error : Can't convert from <NULL> to <character> due to loss of precision.
#> * Locations: 2
# Unless lossy casts are allowed:
allow_lossy_cast(
maybe_lossy_cast(
c("foo", "bar"),
NULL,
"",
lossy = c(FALSE, TRUE),
x_arg = "",
to_arg = ""
)
)
#> [1] "foo" "bar"