Make ty_bare_fn carry an optional def-id indicating whether it is the
type of a fn item or a fn pointer, which are now differentiated.
Introduce coercion from fn item to fn pointer.
Rote changes that don't care to distinguish between a fn pointer and a fn item.
Adjust metadata for new fields and enum variants. Yawn.
Insert FIXME links to issue #19925: fn item types should be zero-sized.
Perform coercions on LHS assignments.
Fix fallout from changes. In cases where stage0 compiler is needed, we
cannot use an `as` expression to coerce, so I used a one-off function
instead (this is a no-op in stage0, but in stage1+ it triggers
coercion from the fn pointer to the fn item type).
Insert coercions to fn pointer types required for the new types
post-unboxed-closure-conversion. This requires a fair amount of
annoying coercions because all the `map` etc types are defined
generically over the `F`, so the automatic coercions don't propagate;
this is compounded by the need to use `let` and not `as` due to
stage0. That said, this pattern is to a large extent temporary and
unusual.
Various simple tests for fn item type vs fn pointer type and for coercions between them.
Change print out to include the path to the fn, a bit ad-hoc for now .
Address nit.
Correct merge failure around imports in `str.rs`.
Tweak region-related error messages that changed slightly due to coercion
changes, and also stop printing semi-useless inference by-products.