The help message when an invalid calling convention is specified is getting a little unwieldy #93601
Closed
Description
opened on Feb 2, 2022
After #93561 misspelling a calling convention will output the following note:
LL | extern "路濫狼á́́" fn foo() {}
| ^^^^^^^^^ invalid ABI
|
= help: valid ABIs: Rust, C, C-unwind, cdecl, cdecl-unwind, stdcall, stdcall-unwind, fastcall, fastcall-unwind, vectorcall, vectorcall-unwind, thiscall, thiscall-unwind, aapcs, aapcs-unwind, win64, win64-unwind, sysv64, sysv64-unwind, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, efiapi, avr-interrupt, avr-non-blocking-interrupt, C-cmse-nonsecure-call, wasm, system, system-unwind, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
This is getting pretty hard to read!
There are a couple of improvements we could make:
- Invoke Levenshtein magic and only suggest some calling conventions that are close, if any (covers mis-spellings);
- This could be a
MachineApplicable::MaybeIncorrect
rustfix!
- This could be a
- Suggest at most a couple of the most common ABIs (possibly a target-specific list?);
- Do not suggest CCs that cannot be used due to them being unstable and feature not being enabled; and finally
- Explain where to find a full list (may involve adding CLI surface to rustc).
With these suggestions in place the message could look like:
LL | extern "wni64" fn foo() {}
| ^^^^^^^ invalid ABI
|
= help: did you mean `win64`?
= note: invoke `rustc --print=calling-conventions` for a full list of supported calling conventions
or
LL | extern "路濫狼á́́" fn foo() {}
| ^^^^^^^^^ invalid ABI
|
= help: commonly used calling conventions include: `C`, `system`, `sysv64`, `win64` and `wasm`
= note: invoke `rustc --print=calling-conventions` for a full list of supported calling conventions
Activity