================ @@ -9509,6 +9509,19 @@ Sema::ActOnStartRequiresExpr(SourceLocation RequiresKWLoc, PushDeclContext(BodyScope, Body); for (ParmVarDecl *Param : LocalParameters) { + if (Param->getType()->isVoidType()) { + if (LocalParameters.size() > 1) { + Diag(Param->getBeginLoc(), diag::err_void_only_param); + Body->setInvalidDecl(); + } else if (Param->getIdentifier()) { + Diag(Param->getBeginLoc(), diag::err_param_with_void_type); + Body->setInvalidDecl(); + } else if (Param->getType().hasQualifiers()) { + Diag(Param->getBeginLoc(), diag::err_void_param_qualified); + Body->setInvalidDecl(); + } + } ---------------- mizvekov wrote:
Can we unify these with the parameter type checks in SemaType? Also, it would make sense to perform the same error recovery here, which is to just adjust these parameter types to `int`, or perhaps some other error recovery, but consistently between requires local parameters and function parameters. I don't think it's helpful to mark the requires body as invalid, but in some scenarios we can mark the parameter itself as invalid, if needed. https://github.com/llvm/llvm-project/pull/109831 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits