1897cc8a7SShivam Gupta //===- unittest/Tooling/RecursiveASTVisitorTests/BitfieldInitializer.cpp -===// 2897cc8a7SShivam Gupta // 3897cc8a7SShivam Gupta // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4897cc8a7SShivam Gupta // See https://llvm.org/LICENSE.txt for license information. 5897cc8a7SShivam Gupta // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6897cc8a7SShivam Gupta // 7897cc8a7SShivam Gupta //===----------------------------------------------------------------------===// 8897cc8a7SShivam Gupta 9897cc8a7SShivam Gupta #include "TestVisitor.h" 10897cc8a7SShivam Gupta #include <string> 11897cc8a7SShivam Gupta 12897cc8a7SShivam Gupta using namespace clang; 13897cc8a7SShivam Gupta 14897cc8a7SShivam Gupta namespace { 15897cc8a7SShivam Gupta 16897cc8a7SShivam Gupta // Check to ensure that bitfield initializers are visited. 17*4e600751SSirraide class BitfieldInitializerVisitor : public ExpectedLocationVisitor { 18897cc8a7SShivam Gupta public: 19*4e600751SSirraide bool VisitIntegerLiteral(IntegerLiteral *IL) override { 20897cc8a7SShivam Gupta Match(std::to_string(IL->getValue().getSExtValue()), IL->getLocation()); 21897cc8a7SShivam Gupta return true; 22897cc8a7SShivam Gupta } 23897cc8a7SShivam Gupta }; 24897cc8a7SShivam Gupta 25897cc8a7SShivam Gupta TEST(RecursiveASTVisitor, BitfieldInitializerIsVisited) { 26897cc8a7SShivam Gupta BitfieldInitializerVisitor Visitor; 27897cc8a7SShivam Gupta Visitor.ExpectMatch("123", 2, 15); 28897cc8a7SShivam Gupta EXPECT_TRUE(Visitor.runOver("struct S {\n" 29897cc8a7SShivam Gupta " int x : 8 = 123;\n" 30897cc8a7SShivam Gupta "};\n")); 31897cc8a7SShivam Gupta } 32897cc8a7SShivam Gupta 33897cc8a7SShivam Gupta } // end anonymous namespace 34