diff options
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/test/Index/coroutines.cpp | 24 | ||||
| -rw-r--r-- | clang/tools/libclang/CXCursor.cpp | 9 | 
2 files changed, 30 insertions, 3 deletions
diff --git a/clang/test/Index/coroutines.cpp b/clang/test/Index/coroutines.cpp new file mode 100644 index 00000000000..be9ddc0b6f0 --- /dev/null +++ b/clang/test/Index/coroutines.cpp @@ -0,0 +1,24 @@ +// RUN: c-index-test -test-load-source all -c %s -fsyntax-only -target x86_64-apple-darwin9 -fcoroutines-ts -std=c++1z -I%S/../SemaCXX/Inputs | FileCheck %s +#include "std-coroutine.h" + +using std::experimental::suspend_always; +using std::experimental::suspend_never; + +struct promise_void { +  void get_return_object(); +  suspend_always initial_suspend(); +  suspend_always final_suspend(); +  void return_void(); +  void unhandled_exception(); +}; + +template <> +struct std::experimental::coroutine_traits<void> { using promise_type = promise_void; }; + +void CoroutineTestRet() { +  co_return; +} +// CHECK: [[@LINE-3]]:25: UnexposedStmt= +// CHECK-SAME: [[@LINE-4]]:25 - [[@LINE-2]]:2] +// CHECK: [[@LINE-4]]:5: UnexposedStmt= +// CHECK-SAME: [[@LINE-5]]:5 - [[@LINE-5]]:14] 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:  | 

