c++: support C++11 attributes in C++98
I don't see any reason why we can't allow the [[]] attribute syntax in C++98 mode with a pedwarn just like many other C++11 features. In fact, we already do support it in some places in the grammar, but not in places that check cp_nth_tokens_can_be_std_attribute_p. Let's also follow the C front-end's lead in only warning about them when -pedantic. It still isn't necessary for this function to guard against Objective-C message passing syntax; we handle that with tentative parsing in cp_parser_statement, and we don't call this function in that context anyway. gcc/cp/ChangeLog: * parser.cc (cp_nth_tokens_can_be_std_attribute_p): Don't check cxx_dialect. * error.cc (maybe_warn_cpp0x): Only complain about C++11 attributes if pedantic. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/gen-attrs-1.C: Also run in C++98 mode. * g++.dg/cpp0x/gen-attrs-11.C: Likewise. * g++.dg/cpp0x/gen-attrs-13.C: Likewise. * g++.dg/cpp0x/gen-attrs-15.C: Likewise. * g++.dg/cpp0x/gen-attrs-75.C: Don't expect C++98 warning after __extension__.
Showing
- gcc/cp/error.cc 4 additions, 3 deletionsgcc/cp/error.cc
- gcc/cp/parser.cc 4 additions, 5 deletionsgcc/cp/parser.cc
- gcc/testsuite/g++.dg/cpp0x/gen-attrs-1.C 1 addition, 1 deletiongcc/testsuite/g++.dg/cpp0x/gen-attrs-1.C
- gcc/testsuite/g++.dg/cpp0x/gen-attrs-11.C 1 addition, 1 deletiongcc/testsuite/g++.dg/cpp0x/gen-attrs-11.C
- gcc/testsuite/g++.dg/cpp0x/gen-attrs-13.C 1 addition, 1 deletiongcc/testsuite/g++.dg/cpp0x/gen-attrs-13.C
- gcc/testsuite/g++.dg/cpp0x/gen-attrs-15.C 1 addition, 1 deletiongcc/testsuite/g++.dg/cpp0x/gen-attrs-15.C
- gcc/testsuite/g++.dg/cpp0x/gen-attrs-75.C 5 additions, 5 deletionsgcc/testsuite/g++.dg/cpp0x/gen-attrs-75.C
Loading
Please register or sign in to comment