I want to change the query system so that a query cycle always result in an error. Currently the only exception is MIR inlining. It tries to get an optimized MIR and doesn't inline if a cycle occurred. This isn't really ideal for a number of reasons and I'd like to change it to use the unoptimized MIR for now. Long term I'd expect us to have a single query which handles inlining + MIR optimizations on the entire crate which does it's own cycle checking. cc @Wesley Wiser
MIR inlining is totally unstable and @nikomatsakis wants to change it compute an SCC graph anyway.
I'd like to change it to use the unoptimized MIR for now
I'd say go for it!
for reference https://github.com/rust-lang/rust/issues/43542
I am strongly in favor of this, @Zoxc
it has been the plan for some time, just nobody got around to it basically
I'll make a PR then
I think your sol'n (unopt mir) is ok for now
as @Wesley Wiser said I had a vague plan to compute SCCs etc but... wev
+1 from me
I forgot that we don't have an unoptimized MIR. Would inlining just from other crates suffice? We can also allow functions earlier in the crate in non-incremental mode (which would be useful for testing)
cc @Wesley Wiser @nikomatsakis