llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Shivam Gupta (xgupta) <details> <summary>Changes</summary> This fixes https://github.com/llvm/llvm-project/issues/64916. Patch by Scott McPeak --- Full diff: https://github.com/llvm/llvm-project/pull/69557.diff 3 Files Affected: - (modified) clang/include/clang/AST/RecursiveASTVisitor.h (+1-1) - (modified) clang/unittests/Tooling/CMakeLists.txt (+1) - (added) clang/unittests/Tooling/RecursiveASTVisitorTests/BitfieldInitializer.cpp (+34) ``````````diff diff --git a/clang/include/clang/AST/RecursiveASTVisitor.h b/clang/include/clang/AST/RecursiveASTVisitor.h index 3dd23eb38eeabfc..53bc15e1b19f668 100644 --- a/clang/include/clang/AST/RecursiveASTVisitor.h +++ b/clang/include/clang/AST/RecursiveASTVisitor.h @@ -2103,7 +2103,7 @@ DEF_TRAVERSE_DECL(FieldDecl, { TRY_TO(TraverseDeclaratorHelper(D)); if (D->isBitField()) TRY_TO(TraverseStmt(D->getBitWidth())); - else if (D->hasInClassInitializer()) + if (D->hasInClassInitializer()) TRY_TO(TraverseStmt(D->getInClassInitializer())); }) diff --git a/clang/unittests/Tooling/CMakeLists.txt b/clang/unittests/Tooling/CMakeLists.txt index 2fbe78e3fab7528..5a10a6b285390e9 100644 --- a/clang/unittests/Tooling/CMakeLists.txt +++ b/clang/unittests/Tooling/CMakeLists.txt @@ -25,6 +25,7 @@ add_clang_unittest(ToolingTests QualTypeNamesTest.cpp RangeSelectorTest.cpp RecursiveASTVisitorTests/Attr.cpp + RecursiveASTVisitorTests/BitfieldInitializer.cpp RecursiveASTVisitorTests/CallbacksLeaf.cpp RecursiveASTVisitorTests/CallbacksUnaryOperator.cpp RecursiveASTVisitorTests/CallbacksBinaryOperator.cpp diff --git a/clang/unittests/Tooling/RecursiveASTVisitorTests/BitfieldInitializer.cpp b/clang/unittests/Tooling/RecursiveASTVisitorTests/BitfieldInitializer.cpp new file mode 100644 index 000000000000000..676a491a43040ea --- /dev/null +++ b/clang/unittests/Tooling/RecursiveASTVisitorTests/BitfieldInitializer.cpp @@ -0,0 +1,34 @@ +//===- unittest/Tooling/RecursiveASTVisitorTests/BitfieldInitializer.cpp -===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "TestVisitor.h" +#include <string> + +using namespace clang; + +namespace { + +// Check to ensure that bitfield initializers are visited. +class BitfieldInitializerVisitor : public ExpectedLocationVisitor<BitfieldInitializerVisitor> { +public: + bool VisitIntegerLiteral(IntegerLiteral *IL) { + Match(std::to_string(IL->getValue().getSExtValue()), IL->getLocation()); + return true; + } +}; + +TEST(RecursiveASTVisitor, BitfieldInitializerIsVisited) { + BitfieldInitializerVisitor Visitor; + Visitor.ExpectMatch("123", 2, 15); + EXPECT_TRUE(Visitor.runOver( + "struct S {\n" + " int x : 8 = 123;\n" + "};\n")); +} + +} // end anonymous namespace `````````` </details> https://github.com/llvm/llvm-project/pull/69557 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits