llvm-project/clang/unittests
Dmitri Gribenko 5689b38c6a Removed a RecursiveASTVisitor feature to visit operator kinds with different methods
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
2020-07-06 13:38:01 +02:00
..
AST [clang][NFC] Store a pointer to the ASTContext in ASTDumper and TextNodeDumper 2020-07-03 13:59:22 +01:00
ASTMatchers Revert AST Matchers default to AsIs mode 2020-07-03 21:19:46 +01:00
Analysis Assignment and Inc/Dec operators wouldn't register as a mutation when Implicit Paren Casts were present 2020-06-09 19:45:57 +01:00
Basic [clang][Preprocessor] Replace the slow translateFile call by a new, faster isMainFile check 2020-05-14 14:13:34 -07:00
CodeGen Remove CompositeType class. 2020-03-18 13:53:17 -07:00
CrossTU [clang][CrossTU] Invalidate parent map after get cross TU definition. 2020-07-01 09:13:05 +02:00
DirectoryWatcher [DirectoryWatcher] Fix misuse of FSEvents API and data race 2020-02-11 09:25:38 -08:00
Driver Reland: [clang driver] Move default module cache from system temporary directory 2020-06-27 05:35:15 -04:00
Format [clang-format] Preserve whitespace in selected macros 2020-06-29 09:57:47 -04:00
Frontend Ensure that CompilerInvocationTest normalizes default target triples 2020-06-25 10:41:40 +01:00
Index [clang][Index] Visit the default parameter arguements in libindex. 2020-02-17 16:45:04 +01:00
Lex [clang] Make sure argument expansion locations are correct in presence of predefined buffer 2020-04-22 21:01:52 +02:00
Rename [OpenMP] "UnFix" layering problem with FrontendOpenMP 2020-04-07 14:41:18 -05:00
Rewrite [Rewrite][NFC] Add FIXMEs and tests for RemoveLineIfEmpty bug 2019-08-15 21:17:48 +00:00
Sema Use libClangTesting in the unittest for AST matchers 2020-06-04 17:40:39 +02:00
Serialization Revert "[modules] Do not cache invalid state for modules that we attempted to load." 2020-03-10 10:59:26 -07:00
StaticAnalyzer [analyzer] Force dependency checkers to be hidden 2020-07-06 13:05:45 +02:00
Tooling Removed a RecursiveASTVisitor feature to visit operator kinds with different methods 2020-07-06 13:38:01 +02:00
libclang Revert "Revert "Reland "[Support] make report_fatal_error `abort` instead of `exit`""" 2020-02-13 10:16:06 -08:00
CMakeLists.txt [clang] [unittest] Import LLVMTestingSupport if necessary 2019-09-12 13:06:12 +00:00