diff options
author | Anders Carlsson <andersca@mac.com> | 2011-01-22 23:01:49 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2011-01-22 23:01:49 +0000 |
commit | ce93a7cee6c0ea979c12b278771a79c4d6a37fc0 (patch) | |
tree | bec43703096923953b8ef146ed02d8c87e5032c0 /lib/Parse/ParseDeclCXX.cpp | |
parent | aa23d288be658cca59d2e128954a50e9ada4ef27 (diff) |
Accept the C++0x override control keywords as an extension in C++98. This is OK since the new syntax is unambiguous and can't be confused with C++98 syntax. If anyone disagrees, please shout!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124048 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseDeclCXX.cpp')
-rw-r--r-- | lib/Parse/ParseDeclCXX.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/Parse/ParseDeclCXX.cpp b/lib/Parse/ParseDeclCXX.cpp index 9a23cf1be5..4d16f033be 100644 --- a/lib/Parse/ParseDeclCXX.cpp +++ b/lib/Parse/ParseDeclCXX.cpp @@ -1272,7 +1272,7 @@ void Parser::HandleMemberFunctionDefaultArgs(Declarator& DeclaratorInfo, /// final /// new VirtSpecifiers::Specifier Parser::isCXX0XVirtSpecifier() const { - if (!getLang().CPlusPlus0x) + if (!getLang().CPlusPlus) return VirtSpecifiers::VS_None; if (Tok.is(tok::kw_new)) @@ -1316,6 +1316,9 @@ void Parser::ParseOptionalCXX0XVirtSpecifierSeq(VirtSpecifiers &VS) { << PrevSpec << FixItHint::CreateRemoval(Tok.getLocation()); + if (!getLang().CPlusPlus0x) + Diag(Tok.getLocation(), diag::ext_override_control_keyword) + << VirtSpecifiers::getSpecifierName(Specifier); ConsumeToken(); } } @@ -1327,7 +1330,7 @@ void Parser::ParseOptionalCXX0XVirtSpecifierSeq(VirtSpecifiers &VS) { /// final /// explicit ClassVirtSpecifiers::Specifier Parser::isCXX0XClassVirtSpecifier() const { - if (!getLang().CPlusPlus0x) + if (!getLang().CPlusPlus) return ClassVirtSpecifiers::CVS_None; if (Tok.is(tok::kw_explicit)) @@ -1368,6 +1371,11 @@ void Parser::ParseOptionalCXX0XClassVirtSpecifierSeq(ClassVirtSpecifiers &CVS) { Diag(Tok.getLocation(), diag::err_duplicate_class_virt_specifier) << PrevSpec << FixItHint::CreateRemoval(Tok.getLocation()); + + if (!getLang().CPlusPlus0x) + Diag(Tok.getLocation(), diag::ext_override_control_keyword) + << ClassVirtSpecifiers::getSpecifierName(Specifier); + ConsumeToken(); } } |