https://gcc.gnu.org/g:33965b86fe26e1f352a6dc2a18d88b25a0b36ada

commit 33965b86fe26e1f352a6dc2a18d88b25a0b36ada
Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>
Date:   Mon Nov 20 11:19:46 2023 +0100

    Emit an error on variadic non extern functions
    
    Variadic regular functions were recently added in the parser as they
    should be rejected in the ast validation pass. This commit add the ast
    validation pass rejecting this kind of variadic arguments.
    
    gcc/rust/ChangeLog:
    
            * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add
            ast validation pass to reject variadic arguments on regular 
functions.
    
    Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>

Diff:
---
 gcc/rust/checks/errors/rust-ast-validation.cc | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/gcc/rust/checks/errors/rust-ast-validation.cc 
b/gcc/rust/checks/errors/rust-ast-validation.cc
index 673290959f4b..4142cc6317ee 100644
--- a/gcc/rust/checks/errors/rust-ast-validation.cc
+++ b/gcc/rust/checks/errors/rust-ast-validation.cc
@@ -93,6 +93,11 @@ ASTValidation::visit (AST::Function &function)
       function.get_self_param ()->get_locus (),
       "%<self%> parameter is only allowed in associated functions");
 
+  if (function.is_variadic ())
+    rust_error_at (
+      function.get_function_params ().back ()->get_locus (),
+      "only foreign or %<unsafe extern \"C\"%> functions may be C-variadic");
+
   AST::ContextualASTVisitor::visit (function);
 }

Reply via email to