Fix ICE when `start` lang item has wrong generics In my previous pr #87875 I missed the requirements on the `start` lang item due to its relative difficulty to test and opting for more conservative estimates. This fixes that by updating the requirement to be exactly one generic type. The `start` lang item should have exactly one generic type for the return type of the `main` fn ptr passed to it. I believe having zero would previously *sometimes* compile (often with the use of `fn() -> ()` as the fn ptr but it was likely UB to call if the return type of `main` was not `()` as far as I know) however it also sometimes would not for various errors including ICEs and LLVM errors depending on exact situations. Having more than 1 generic has always failed with an ICE because only the one generic type is expected and provided. Fixes #79559, fixes #73584, fixes #83117 (all duplicates) Relevant to #9307 r? ````@cjgillot```` |
||
|---|---|---|
| .. | ||
| fn-fn_mut-call-ill-formed.rs | ||
| fn-fn_mut-call-ill-formed.stderr | ||
| issue-83471.rs | ||
| issue-83471.stderr | ||
| issue-86238.rs | ||
| issue-86238.stderr | ||
| lang-item-correct-generics.rs | ||
| lang-item-generic-requirements.rs | ||
| lang-item-generic-requirements.stderr | ||
| lang-item-missing-generator.rs | ||
| lang-item-missing-generator.stderr | ||
| lang-item-missing.rs | ||
| lang-item-missing.stderr | ||