Closed
Description
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
ritobanrc commentedon Jul 4, 2022
I'd be interested in tackling this, though it would be my first contribution, so I'll probably need some additional guidance.
ritobanrc commentedon Jul 4, 2022
@rustbot claim
khyperia commentedon Aug 13, 2022
Hey, are you still working on this? If not, I'm going to take a shot at it 🙂
ritobanrc commentedon Aug 13, 2022
Auto merge of rust-lang#100488 - khyperia:invalid-calling-convention-…