This patch removes the (unnecessary) CPP_PRAGMA_EOL case from
cp_parser_cache_defarg, which currently has the result that any pragmas
in the NSDMI cause an error.
PR c++/118147
gcc/cp/ChangeLog:
* parser.cc (cp_parser_cache_defarg): Don't error when
CPP_PRAGMA_EOL.
gcc/testsuite/ChangeLog:
* g++.dg/cpp0x/nsdmi-defer7.C: New test.
Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com>
(cherry picked from commit
f3ccc57e5f044031a1b07e79330de9220e93afe7)
/* If we run out of tokens, issue an error message. */
case CPP_EOF:
- case CPP_PRAGMA_EOL:
error_at (token->location, "file ends in default argument");
return error_mark_node;
--- /dev/null
+// PR c++/118147
+// { dg-do compile { target c++11 } }
+
+struct F {
+ int i = []{
+ #pragma message "test" // { dg-message "test" }
+ return 1;
+ }();
+};
+
+struct G {
+ int i =
+ #pragma GCC diagnostic push // { dg-error "file ends in default argument|expected" }