This looks a bit troublesome.
Why is the inner constructor needed?
The inner constructor also is ::Integer
however code
only accepts Int32
.
I’m led to believe these are bugs.
The real question is why do we have this type at all? We shouldn’t be surfacing details of the library we use for I/O to the user.
1 Like
I think it’s primarily used for internal handling of errors with libuv. The type UVError
is not exported.
This is not a bug. It will not error if you pass in a Int64
.
The code::Int32
in the UVError
type will actually do a convert? My understanding was it was more of an assertion.
The ::Int32
here is not an assertion. It’s a declaration of slot type much like local a::Int32
or Vector{Int32}
. When assigning to such a location, there’s an implicit conversion and type assertion.
I believe these are documented in the types doc (search for convert
in the page).
4 Likes