summaryrefslogtreecommitdiffstats
path: root/clang/tools/libclang/CXCursor.cpp
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2019-01-03 01:13:33 +0000
committerAlex Lorenz <arphaman@gmail.com>2019-01-03 01:13:33 +0000
commit977ffd7b8f1f37f2aa90b31982ce3c0c95269df0 (patch)
tree6c3dfbbcc9d4aa5efc46bc3005d1d718868679f4 /clang/tools/libclang/CXCursor.cpp
parentc28daec5b2f6213f58b88e152c258d0f1241bbaa (diff)
downloadbcm5719-llvm-977ffd7b8f1f37f2aa90b31982ce3c0c95269df0.tar.gz
bcm5719-llvm-977ffd7b8f1f37f2aa90b31982ce3c0c95269df0.zip
[libclang] CoroutineBody/Coreturn statements are UnexposedStmts and not Exprs
This change ensures that the libclang CXCursor represents the CoroutineBody and the Coreturn statement using the appropriate CXCursor_UnexposedStmt kind instead of CXCursor_UnexposedExpr. The problem with CXCursor_UnexposedExpr is that the consumer functions assumed that CoroutineBody/Coreturn statements were valid expressions and performed an invalid downcast to Expr causing assertion failures or other crashes. rdar://40204290 llvm-svn: 350282
Diffstat (limited to 'clang/tools/libclang/CXCursor.cpp')
-rw-r--r--clang/tools/libclang/CXCursor.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/clang/tools/libclang/CXCursor.cpp b/clang/tools/libclang/CXCursor.cpp
index b8c25291691..99e4319fc1f 100644
--- a/clang/tools/libclang/CXCursor.cpp
+++ b/clang/tools/libclang/CXCursor.cpp
@@ -241,16 +241,19 @@ CXCursor cxcursor::MakeCXCursor(const Stmt *S, const Decl *Parent,
case Stmt::SEHLeaveStmtClass:
K = CXCursor_SEHLeaveStmt;
break;
-
+
+ case Stmt::CoroutineBodyStmtClass:
+ case Stmt::CoreturnStmtClass:
+ K = CXCursor_UnexposedStmt;
+ break;
+
case Stmt::ArrayTypeTraitExprClass:
case Stmt::AsTypeExprClass:
case Stmt::AtomicExprClass:
case Stmt::BinaryConditionalOperatorClass:
case Stmt::TypeTraitExprClass:
- case Stmt::CoroutineBodyStmtClass:
case Stmt::CoawaitExprClass:
case Stmt::DependentCoawaitExprClass:
- case Stmt::CoreturnStmtClass:
case Stmt::CoyieldExprClass:
case Stmt::CXXBindTemporaryExprClass:
case Stmt::CXXDefaultArgExprClass:
OpenPOWER on IntegriCloud