diff options
Diffstat (limited to 'clang/lib/Sema/SemaCoroutine.cpp')
-rw-r--r-- | clang/lib/Sema/SemaCoroutine.cpp | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/clang/lib/Sema/SemaCoroutine.cpp b/clang/lib/Sema/SemaCoroutine.cpp index fc6470617c0..f0347af6a1b 100644 --- a/clang/lib/Sema/SemaCoroutine.cpp +++ b/clang/lib/Sema/SemaCoroutine.cpp @@ -204,8 +204,6 @@ static bool isValidCoroutineContext(Sema &S, SourceLocation Loc, enum InvalidFuncDiag { DiagCtor = 0, DiagDtor, - DiagCopyAssign, - DiagMoveAssign, DiagMain, DiagConstexpr, DiagAutoRet, @@ -219,23 +217,15 @@ static bool isValidCoroutineContext(Sema &S, SourceLocation Loc, return false; }; - // Diagnose when a constructor, destructor, copy/move assignment operator, + // Diagnose when a constructor, destructor // or the function 'main' are declared as a coroutine. auto *MD = dyn_cast<CXXMethodDecl>(FD); - // [class.ctor]p6: "A constructor shall not be a coroutine." + // [class.ctor]p11: "A constructor shall not be a coroutine." if (MD && isa<CXXConstructorDecl>(MD)) return DiagInvalid(DiagCtor); // [class.dtor]p17: "A destructor shall not be a coroutine." else if (MD && isa<CXXDestructorDecl>(MD)) return DiagInvalid(DiagDtor); - // N4499 [special]p6: "A special member function shall not be a coroutine." - // Per C++ [special]p1, special member functions are the "default constructor, - // copy constructor and copy assignment operator, move constructor and move - // assignment operator, and destructor." - else if (MD && MD->isCopyAssignmentOperator()) - return DiagInvalid(DiagCopyAssign); - else if (MD && MD->isMoveAssignmentOperator()) - return DiagInvalid(DiagMoveAssign); // [basic.start.main]p3: "The function main shall not be a coroutine." else if (FD->isMain()) return DiagInvalid(DiagMain); |