forked from OSchip/llvm-project
![]() Summary: This feature was only used in two places, but contributed a non-trivial amount to the complexity of RecursiveASTVisitor, and was buggy (see my recent patches where I was fixing the bugs that I noticed). I don't think the convenience benefit of this feature is worth the complexity. Besides complexity, another issue with the current state of RecursiveASTVisitor is the non-uniformity in how it handles different AST nodes. All AST nodes follow a regular pattern, but operators are special -- and this special behavior not documented. Correct usage of RecursiveASTVisitor relies on shadowing member functions with specific names and signatures. Near misses don't cause any compile-time errors, incorrectly named or typed methods are just silently ignored. Therefore, predictability of RecursiveASTVisitor API is quite important. This change reduces the size of the `clang` binary by 38 KB (0.2%) in release mode, and by 7 MB (0.3%) in debug mode. The `clang-tidy` binary is reduced by 205 KB (0.3%) in release mode, and by 5 MB (0.4%) in debug mode. I don't think these code size improvements are significant enough to justify this change on its own (for me, the primary motivation is reducing code complexity), but they I think are a nice side-effect. Reviewers: rsmith, sammccall, ymandel, aaron.ballman Reviewed By: rsmith, sammccall, ymandel, aaron.ballman Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D82921 |
||
---|---|---|
.. | ||
RecursiveASTVisitorTests | ||
Syntax | ||
ASTSelectionTest.cpp | ||
CMakeLists.txt | ||
CastExprTest.cpp | ||
CommentHandlerTest.cpp | ||
CompilationDatabaseTest.cpp | ||
DependencyScannerTest.cpp | ||
DiagnosticsYamlTest.cpp | ||
ExecutionTest.cpp | ||
FixItTest.cpp | ||
HeaderIncludesTest.cpp | ||
LexicallyOrderedRecursiveASTVisitorTest.cpp | ||
LookupTest.cpp | ||
QualTypeNamesTest.cpp | ||
RangeSelectorTest.cpp | ||
RecursiveASTVisitorTestDeclVisitor.cpp | ||
RecursiveASTVisitorTestPostOrderVisitor.cpp | ||
RecursiveASTVisitorTestTypeLocVisitor.cpp | ||
RefactoringActionRulesTest.cpp | ||
RefactoringCallbacksTest.cpp | ||
RefactoringTest.cpp | ||
ReplacementTest.h | ||
ReplacementsYamlTest.cpp | ||
RewriterTest.cpp | ||
RewriterTestContext.h | ||
SourceCodeBuildersTest.cpp | ||
SourceCodeTest.cpp | ||
StencilTest.cpp | ||
TestVisitor.h | ||
ToolingTest.cpp | ||
TransformerTest.cpp |