From: Mark Mitchell Date: Tue, 18 Apr 2000 01:30:21 +0000 (+0000) Subject: decl2.c (grokfield): Issue error on illegal data member declaration. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=009e98457a3f7b1603422123052eeddb83dd5070;p=platform%2Fupstream%2Fgcc.git decl2.c (grokfield): Issue error on illegal data member declaration. * decl2.c (grokfield): Issue error on illegal data member declaration. From-SVN: r33220 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index da6fca8..5f3c8fb 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2000-04-17 Mark Mitchell + + * decl2.c (grokfield): Issue error on illegal data member + declaration. + Mon Apr 17 17:11:16 2000 Mark P Mitchell * method.c (make_thunk): Set DECL_CONTEXT for a THUNK_DECL. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 18d41aa9..e9b1b1f 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -1572,7 +1572,23 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist) || TREE_CODE (TREE_OPERAND (declarator, 0)) == SCOPE_REF) && parmlist_is_exprlist (CALL_DECLARATOR_PARMS (declarator))) { - init = TREE_OPERAND (declarator, 1); + /* It's invalid to try to initialize a data member using a + functional notation, e.g.: + + struct S { + static int i (3); + }; + + Explain that to the user. */ + static int explained_p; + + cp_error ("invalid data member initiailization"); + if (!explained_p) + { + cp_error ("use `=' to initialize static data members"); + explained_p = 1; + } + declarator = TREE_OPERAND (declarator, 0); flags = 0; } diff --git a/gcc/testsuite/g++.old-deja/g++.other/crash17.C b/gcc/testsuite/g++.old-deja/g++.other/crash17.C new file mode 100644 index 0000000..0ec1d23 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/crash17.C @@ -0,0 +1,6 @@ +// Build don't link: +// Origin: Dima Volodin + +class C { + static int const N (1000); +};