[libclang] CoroutineBody/Coreturn statements are UnexposedStmts and not Exprs
authorAlex Lorenz <arphaman@gmail.com>
Thu, 3 Jan 2019 01:13:33 +0000 (01:13 +0000)
committerAlex Lorenz <arphaman@gmail.com>
Thu, 3 Jan 2019 01:13:33 +0000 (01:13 +0000)
commit977ffd7b8f1f37f2aa90b31982ce3c0c95269df0
tree6c3dfbbcc9d4aa5efc46bc3005d1d718868679f4
parentc28daec5b2f6213f58b88e152c258d0f1241bbaa
[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
clang/test/Index/coroutines.cpp [new file with mode: 0644]
clang/tools/libclang/CXCursor.cpp