This improves the output for issue #72577, but there's still more work to be done. Currently, an overflow error during monomorphization results in an error that points at the function we were unable to monomorphize. However, we don't point at the call that caused the monomorphization to happen. In the overflow occurs in a large recursive function, it may be difficult to determine where the issue is. This commit tracks and `Span` information during collection of `MonoItem`s, which is used when emitting an overflow error. `MonoItem` itself is unchanged, so this only affects `src/librustc_mir/monomorphize/collector.rs`
15 lines
386 B
Rust
15 lines
386 B
Rust
// Verify the compiler fails with an error on infinite function
|
|
// recursions.
|
|
|
|
// build-fail
|
|
|
|
fn generic<T>() { //~ WARN function cannot return without recursing
|
|
generic::<Option<T>>();
|
|
}
|
|
//~^^ ERROR reached the recursion limit while instantiating `generic::<std::option::Option<
|
|
|
|
|
|
fn main () {
|
|
// Use generic<T> at least once to trigger instantiation.
|
|
generic::<i32>();
|
|
}
|