[PATCH] D92600: [ASTImporter] Add support for importing GenericSelectionExpr AST nodes.

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Dec 8 06:11:33 PST 2020


aaron.ballman added inline comments.


================
Comment at: clang/include/clang/ASTMatchers/ASTMatchers.h:2366
+/// Matches C11 _Generic expression.
+extern const internal::VariadicDynCastAllOfMatcher<Stmt, GenericSelectionExpr>
+    genericSelectionExpr;
----------------
tmroeder wrote:
> aaron.ballman wrote:
> > Do we have a use case for adding this as an AST matcher? For instance, one of the first things I'd want to do with such a matcher is traverse down to the association list, but I don't think that's possible currently. Should we add all of the AST functionality or just wait until there's a concrete use case and add the AST matchers bits at that point?
> I mostly did this because that's what I did in the previous case from Feb 2019: reviews.llvm.org/D58292, for ChooseExpr, and I was cribbing off my old code.
> 
> However, on further reflection, I remembered that this patch actually removes a case that was locally defining this matcher already: see the removed lines in clang/lib/Analysis/ExprMutationAnalyzer.cpp in this patch. So, I think that is enough of a case for adding this.
Okay, fair enough. Thanks!


================
Comment at: clang/test/ASTMerge/generic-selection-expr/Inputs/generic.c:1
+void f() {
+  int x;
----------------
Should we also have a C++ test for a result-dependent use of _Generic? (We support use of _Generic in C++ as an extension.)


================
Comment at: clang/unittests/AST/StructuralEquivalenceTest.cpp:1601
 
+TEST_F(StructuralEquivalenceStmtTest, GenericSelectionExprSame) {
+  auto t = makeWrappedStmts("_Generic(0u, unsigned int: 0, float: 1)",
----------------
Should we add a structural equivalence test for a dependent result type in C++?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D92600/new/

https://reviews.llvm.org/D92600



More information about the cfe-commits mailing list