diff options
| author | Folkert de Vries <folkert@folkertdev.nl> | 2025-09-06 17:19:01 +0200 |
|---|---|---|
| committer | Folkert de Vries <folkert@folkertdev.nl> | 2025-09-08 18:41:22 +0200 |
| commit | 7075000ae72c3ead855dc660a37c6bf263b7b452 (patch) | |
| tree | 4dbb9db246b410aa29ca735372e8792a1d2215ac /compiler/rustc_ast_passes | |
| parent | a093372e5e560b1a768971c2b87b306755f2c17d (diff) | |
| download | rust-7075000ae72c3ead855dc660a37c6bf263b7b452.tar.gz rust-7075000ae72c3ead855dc660a37c6bf263b7b452.zip | |
clarify control flow of `check_c_variadic_type`
Diffstat (limited to 'compiler/rustc_ast_passes')
| -rw-r--r-- | compiler/rustc_ast_passes/src/ast_validation.rs | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/compiler/rustc_ast_passes/src/ast_validation.rs b/compiler/rustc_ast_passes/src/ast_validation.rs index c5c23c47e74..79947b514b1 100644 --- a/compiler/rustc_ast_passes/src/ast_validation.rs +++ b/compiler/rustc_ast_passes/src/ast_validation.rs @@ -697,14 +697,23 @@ impl<'a> AstValidator<'a> { match fn_ctxt { FnCtxt::Foreign => return, FnCtxt::Free => match sig.header.ext { - Extern::Explicit(StrLit { symbol_unescaped: sym::C, .. }, _) - | Extern::Explicit(StrLit { symbol_unescaped: sym::C_dash_unwind, .. }, _) - | Extern::Implicit(_) - if matches!(sig.header.safety, Safety::Unsafe(_)) => - { - return; + Extern::Implicit(_) => { + if matches!(sig.header.safety, Safety::Unsafe(_)) { + return; + } + + self.dcx().emit_err(errors::BadCVariadic { span: variadic_param.span }); + } + Extern::Explicit(StrLit { symbol_unescaped, .. }, _) => { + if matches!(symbol_unescaped, sym::C | sym::C_dash_unwind) { + if matches!(sig.header.safety, Safety::Unsafe(_)) { + return; + } + } + + self.dcx().emit_err(errors::BadCVariadic { span: variadic_param.span }); } - _ => { + Extern::None => { self.dcx().emit_err(errors::BadCVariadic { span: variadic_param.span }); } }, |
