llvm-project/clang/tools/libclang
Eric Fiselier 20f25cb6df [coroutines] Add DependentCoawaitExpr and fix re-building CoroutineBodyStmt.
Summary:
The changes contained in this patch are:

1. Defines a new AST node `CoawaitDependentExpr` for representing co_await expressions while the promise type is still dependent.
2. Correctly detect and transform the 'co_await' operand to  `p.await_transform(<expr>)`  when possible.
3. Change the initial/final suspend points to build during the initial parse, so they have the correct operator co_await lookup results.
4.  Fix transformation of the CoroutineBodyStmt so that it doesn't re-build the final/initial suspends.


@rsmith: This change is a little big, but it's not trivial for me to split it up. Please let me know if you would prefer this submitted as multiple patches.



Reviewers: rsmith, GorNishanov

Reviewed By: rsmith

Subscribers: ABataev, rsmith, mehdi_amini, cfe-commits

Differential Revision: https://reviews.llvm.org/D26057

llvm-svn: 297093
2017-03-06 23:38:15 +00:00
..
ARCMigrate.cpp [libclang] Remove the 'extern "C"' blocks from the implementation files. 2016-12-17 01:09:40 +00:00
BuildSystem.cpp Replace TimeValue with TimePoint in BuildSystem.cpp. NFC. 2016-11-09 11:19:39 +00:00
CIndex.cpp Add an explicit derived class of FunctionDecl to model deduction guides rather 2017-02-17 20:05:37 +00:00
CIndexCXX.cpp [libclang] Remove the 'extern "C"' blocks from the implementation files. 2016-12-17 01:09:40 +00:00
CIndexCodeCompletion.cpp Reapply "IntrusiveRefCntPtr -> std::shared_ptr for CompilerInvocationBase and CodeCompleteConsumer" 2017-01-06 19:49:01 +00:00
CIndexDiagnostic.cpp [libclang] Remove the 'extern "C"' blocks from the implementation files. 2016-12-17 01:09:40 +00:00
CIndexDiagnostic.h Roll-back r250822. 2015-10-20 13:23:58 +00:00
CIndexHigh.cpp [libclang] Revert part of r290025, "Remove the 'extern "C"' blocks from the implementation files." 2016-12-19 16:50:43 +00:00
CIndexInclusionStack.cpp [libclang] Remove the 'extern "C"' blocks from the implementation files. 2016-12-17 01:09:40 +00:00
CIndexUSRs.cpp [libclang] Remove the 'extern "C"' blocks from the implementation files. 2016-12-17 01:09:40 +00:00
CIndexer.cpp [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
CIndexer.h [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
CLog.h Replace uses of LLVM_FUNCTION_NAME with __func__, this was macro was removed from llvm/Support in r284681 2016-10-20 02:46:22 +00:00
CMakeLists.txt Link include-fixer into libclang if clang-tools-extra is checked out. 2016-11-17 15:22:36 +00:00
CXComment.cpp [libclang] Remove the 'extern "C"' blocks from the implementation files. 2016-12-17 01:09:40 +00:00
CXComment.h [cleanup] Re-sort the #include lines using llvm/utils/sort_includes.py 2015-01-14 11:23:58 +00:00
CXCompilationDatabase.cpp [libclang] Remove the 'extern "C"' blocks from the implementation files. 2016-12-17 01:09:40 +00:00
CXCursor.cpp [coroutines] Add DependentCoawaitExpr and fix re-building CoroutineBodyStmt. 2017-03-06 23:38:15 +00:00
CXCursor.h Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
CXIndexDataConsumer.cpp [index] Add 'Parameter' symbol kind and 'Local' symbol property to distinguish function-local symbols 2017-02-26 05:37:56 +00:00
CXIndexDataConsumer.h [index] When indexing an ObjC method declaration use its base name for the location. 2017-01-26 02:11:50 +00:00
CXLoadedDiagnostic.cpp [libclang] Remove the 'extern "C"' blocks from the implementation files. 2016-12-17 01:09:40 +00:00
CXLoadedDiagnostic.h [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
CXSourceLocation.cpp [libclang] Remove the 'extern "C"' blocks from the implementation files. 2016-12-17 01:09:40 +00:00
CXSourceLocation.h Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
CXStoredDiagnostic.cpp [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
CXString.cpp [libclang] Remove the 'extern "C"' blocks from the implementation files. 2016-12-17 01:09:40 +00:00
CXString.h libclang: add new StringSet type 2015-11-12 03:57:16 +00:00
CXTranslationUnit.h Reapply "IntrusiveRefCntPtr -> std::shared_ptr for CompilerInvocationBase and CodeCompleteConsumer" 2017-01-06 19:49:01 +00:00
CXType.cpp [libclang] [OpenCL] Expose half type. 2017-02-10 15:51:11 +00:00
CXType.h Header guard canonicalization, clang part. 2014-08-13 16:25:19 +00:00
CursorVisitor.h [index] Expose FriendDecl 2016-11-04 06:29:27 +00:00
Index_Internal.h Header guard canonicalization, clang part. 2014-08-13 16:25:19 +00:00
Indexing.cpp Reapply "IntrusiveRefCntPtr -> std::shared_ptr for CompilerInvocationBase and CodeCompleteConsumer" 2017-01-06 19:49:01 +00:00
libclang.exports [libclang] Add APIs to check the result of an integer expression in CXEvalResult without overflow 2016-12-01 23:41:27 +00:00