================ @@ -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; + } ---------------- HerrCai0907 wrote:
If I remember correctly, LLVM only has this requirement for simple if statement, but not for if - else if statement for readability. https://github.com/llvm/llvm-project/pull/108555 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits