summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseDeclCXX.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2011-01-22 23:01:49 +0000
committerAnders Carlsson <andersca@mac.com>2011-01-22 23:01:49 +0000
commit5a72fdb05b6474d02bc22444240d6b7fc7acb6fe (patch)
tree109c36b78cd8d6c0493c8019339e3b7e1749f954 /clang/lib/Parse/ParseDeclCXX.cpp
parent7d59a6833067aa8644217b33fab6bc186f40e43f (diff)
downloadbcm5719-llvm-5a72fdb05b6474d02bc22444240d6b7fc7acb6fe.tar.gz
bcm5719-llvm-5a72fdb05b6474d02bc22444240d6b7fc7acb6fe.zip
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!
llvm-svn: 124048
Diffstat (limited to 'clang/lib/Parse/ParseDeclCXX.cpp')
-rw-r--r--clang/lib/Parse/ParseDeclCXX.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp
index 9a23cf1be5c..4d16f033be7 100644
--- a/clang/lib/Parse/ParseDeclCXX.cpp
+++ b/clang/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();
}
}
OpenPOWER on IntegriCloud