diff options
author | Mark Mitchell <mark@codesourcery.com> | 2000-04-18 01:30:21 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2000-04-18 01:30:21 +0000 |
commit | 009e98457a3f7b1603422123052eeddb83dd5070 (patch) | |
tree | f67d15a4acadbe8dd4f5b037b12332113cde3ed5 /gcc | |
parent | ab36bd3ed4045c2f89f7a8a15339107b19b0098b (diff) | |
download | gcc-009e98457a3f7b1603422123052eeddb83dd5070.zip gcc-009e98457a3f7b1603422123052eeddb83dd5070.tar.gz gcc-009e98457a3f7b1603422123052eeddb83dd5070.tar.bz2 |
decl2.c (grokfield): Issue error on illegal data member declaration.
* decl2.c (grokfield): Issue error on illegal data member
declaration.
From-SVN: r33220
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 18 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/crash17.C | 6 |
3 files changed, 28 insertions, 1 deletions
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 <mark@codesourcery.com> + + * decl2.c (grokfield): Issue error on illegal data member + declaration. + Mon Apr 17 17:11:16 2000 Mark P Mitchell <mark@codesourcery.com> * 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 <dvv@dvv.org> + +class C { + static int const N (1000); +}; |