Mercurial > hg > CbC > CbC_llvm
comparison clang-tools-extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp @ 173:0572611fdcc8 llvm10 llvm12
reorgnization done
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 11:55:54 +0900 |
parents | 1d019706d866 |
children | 2e18cbf3894f |
comparison
equal
deleted
inserted
replaced
172:9fbae9c8bf63 | 173:0572611fdcc8 |
---|---|
14 using namespace clang::ast_matchers; | 14 using namespace clang::ast_matchers; |
15 | 15 |
16 namespace clang { | 16 namespace clang { |
17 namespace tidy { | 17 namespace tidy { |
18 namespace modernize { | 18 namespace modernize { |
19 | |
20 namespace { | |
21 AST_MATCHER_P(InitListExpr, initCountIs, unsigned, N) { | |
22 return Node.getNumInits() == N; | |
23 } | |
24 } // namespace | |
19 | 25 |
20 static StringRef getValueOfValueInit(const QualType InitType) { | 26 static StringRef getValueOfValueInit(const QualType InitType) { |
21 switch (InitType->getScalarTypeKind()) { | 27 switch (InitType->getScalarTypeKind()) { |
22 case Type::STK_CPointer: | 28 case Type::STK_CPointer: |
23 case Type::STK_BlockPointer: | 29 case Type::STK_BlockPointer: |
178 } | 184 } |
179 | 185 |
180 UseDefaultMemberInitCheck::UseDefaultMemberInitCheck(StringRef Name, | 186 UseDefaultMemberInitCheck::UseDefaultMemberInitCheck(StringRef Name, |
181 ClangTidyContext *Context) | 187 ClangTidyContext *Context) |
182 : ClangTidyCheck(Name, Context), | 188 : ClangTidyCheck(Name, Context), |
183 UseAssignment(Options.get("UseAssignment", 0) != 0), | 189 UseAssignment(Options.get("UseAssignment", false)), |
184 IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true) != 0) {} | 190 IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)) {} |
185 | 191 |
186 void UseDefaultMemberInitCheck::storeOptions( | 192 void UseDefaultMemberInitCheck::storeOptions( |
187 ClangTidyOptions::OptionMap &Opts) { | 193 ClangTidyOptions::OptionMap &Opts) { |
188 Options.store(Opts, "UseAssignment", UseAssignment); | 194 Options.store(Opts, "UseAssignment", UseAssignment); |
189 Options.store(Opts, "IgnoreMacros", IgnoreMacros); | 195 Options.store(Opts, "IgnoreMacros", IgnoreMacros); |
190 } | 196 } |
191 | 197 |
192 void UseDefaultMemberInitCheck::registerMatchers(MatchFinder *Finder) { | 198 void UseDefaultMemberInitCheck::registerMatchers(MatchFinder *Finder) { |
193 if (!getLangOpts().CPlusPlus11) | 199 auto InitBase = |
194 return; | |
195 | |
196 auto Init = | |
197 anyOf(stringLiteral(), characterLiteral(), integerLiteral(), | 200 anyOf(stringLiteral(), characterLiteral(), integerLiteral(), |
198 unaryOperator(anyOf(hasOperatorName("+"), hasOperatorName("-")), | 201 unaryOperator(hasAnyOperatorName("+", "-"), |
199 hasUnaryOperand(integerLiteral())), | 202 hasUnaryOperand(integerLiteral())), |
200 floatLiteral(), | 203 floatLiteral(), |
201 unaryOperator(anyOf(hasOperatorName("+"), hasOperatorName("-")), | 204 unaryOperator(hasAnyOperatorName("+", "-"), |
202 hasUnaryOperand(floatLiteral())), | 205 hasUnaryOperand(floatLiteral())), |
203 cxxBoolLiteral(), cxxNullPtrLiteralExpr(), implicitValueInitExpr(), | 206 cxxBoolLiteral(), cxxNullPtrLiteralExpr(), implicitValueInitExpr(), |
204 initListExpr(), declRefExpr(to(enumConstantDecl()))); | 207 declRefExpr(to(enumConstantDecl()))); |
208 | |
209 auto Init = | |
210 anyOf(initListExpr(anyOf( | |
211 allOf(initCountIs(1), hasInit(0, ignoringImplicit(InitBase))), | |
212 initCountIs(0))), | |
213 InitBase); | |
205 | 214 |
206 Finder->addMatcher( | 215 Finder->addMatcher( |
207 cxxConstructorDecl( | 216 cxxConstructorDecl( |
208 isDefaultConstructor(), unless(isInstantiated()), | 217 isDefaultConstructor(), unless(isInstantiated()), |
209 forEachConstructorInitializer( | 218 forEachConstructorInitializer( |
210 cxxCtorInitializer( | 219 cxxCtorInitializer( |
211 forField(unless(anyOf(getLangOpts().CPlusPlus2a | 220 forField(unless(anyOf(getLangOpts().CPlusPlus20 |
212 ? unless(anything()) | 221 ? unless(anything()) |
213 : isBitField(), | 222 : isBitField(), |
214 hasInClassInitializer(anything()), | 223 hasInClassInitializer(anything()), |
215 hasParent(recordDecl(isUnion()))))), | 224 hasParent(recordDecl(isUnion()))))), |
216 isWritten(), withInitializer(ignoringImplicit(Init))) | 225 isWritten(), withInitializer(ignoringImplicit(Init))) |