https://github.com/JuliaLang/julia
Revision b2b713d8dc918221be4a43b12d0f08cff7635eb5 authored by Keno Fischer on 11 September 2022, 01:29:20 UTC, committed by N5N3 on 31 January 2023, 12:19:35 UTC
Core.Typeof is used implicitly in the system, but for types with
free type parameters, e.g. `Vector{Core.TypeVar(:T)}`, it expects
to subsequently be wrapped in a UnionAll. In particular, it is
not in general valid to perform type queries on the result of
`Core.Typeof` (without wrapping it in a UnionAll), but we were
attempting to do so in a number of places. Of course, this is a
bit of a rare sitatuation, since we're not in a habit of passing
around types with free typevars, but since those are valid objects
I think it is better to be defensive.

This introduces `Base.TypeofValid` (better name suggestions welcome),
which is like `Core.Typeof`, except that types with free typevars
get mapped to `DataType`, rather than `Type{}` with a free typevars.
As a result, it is always valid to perform type system operations
on the result of this call.
1 parent 94c4fb5
History
Tip revision: b2b713d8dc918221be4a43b12d0f08cff7635eb5 authored by Keno Fischer on 11 September 2022, 01:29:20 UTC
Don't create Type{...} for incomplete types in most cases
Tip revision: b2b713d
File Mode Size
Dockerfile -rw-r--r-- 140 bytes
devcontainer.json -rw-r--r-- 134 bytes

back to top