================
@@ -72,11 +81,24 @@ void AvoidCArraysCheck::registerMatchers(MatchFinder
*Finder) {
void AvoidCArraysCheck::check(const MatchFinder::MatchResult &Result) {
const auto *ArrayType = Result.Nodes.getNodeAs<TypeLoc>("typeloc");
-
+ const bool IsInParam =
+ Result.Nodes.getNodeAs<ParmVarDecl>("param_decl") != nullptr;
+ const bool IsVLA = ArrayType->getTypePtr()->isVariableArrayType();
+ enum class RecommendType { Array, Vector, Span };
+ RecommendType RecommendType = RecommendType::Array;
+ if (IsVLA) {
+ RecommendType = RecommendType::Vector;
+ } else if (ArrayType->getTypePtr()->isIncompleteArrayType() && IsInParam) {
+ // in function parameter, we also don't know the size of
+ // IncompleteArrayType.
+ RecommendType = Result.Context->getLangOpts().CPlusPlus20
+ ? RecommendType::Span
+ : RecommendType::Vector;
+ }
----------------
5chmidti wrote:
These single statements are inside compound statements
https://github.com/llvm/llvm-project/pull/108555
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits