]> gcc.gnu.org Git - gcc.git/commitdiff
spec4.C: Remove stray semicolon.
authorMark Mitchell <mark@codesourcery.com>
Sat, 28 Dec 2002 07:48:15 +0000 (07:48 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Sat, 28 Dec 2002 07:48:15 +0000 (07:48 +0000)
* g++.dg/eh/spec4.C: Remove stray semicolon.
* g++.dg/expr/pmf-1.C: Change error message.
* g++.dg/ext/asm1.C: Remove stray semicolon.
* g++.dg/ext/typename1.C: Add missing typenames.
* g++.dg/inherit/template-as-base.C: Change error message.
* g++.dg/lookup/scoped1.C: Likewise.
* g++.dg/lookup/scoped2.C: Likewise.
* g++.dg/lookup/using2.C: Likewise.
* g++.dg/other/component1.C: Remove stray semicolon.
* g++.dg/other/do1.C: Change error message.
* g++.dg/other/error2.C: Likewise.
* g++.dg/other/init1.C: Likewise.
* g++.dg/other/packed1.C: Remove stray semicolon.
* g++.dg/other/ptrmem2.C: Change error message.
* g++.dg/parse/parameter-declaration-1.C: Remove line number
marker.
* g++.dg/special/initp1.C: Remove invalid attribute usage.
* g++.dg/template/access3.C: Add typename keyword.
* g++.dg/template/access5.C: Remove stray semicolon.
* g++.dg/template/access6.C: Likewise.
* g++.dg/template/complit1.C: Likewise.
* g++.dg/template/crash1.C: Change error message.
* g++.dg/template/inherit2.C: Remove stray semicolon.
* g++.dg/template/instantiate2.C: Likewise.
* g++.dg/template/instantiate3.C: Change error message.
* g++.dg/template/qual1.C: Remove stray semicolon.
* g++.dg/template/qualttp18.C: Change error message.
* g++.dg/template/ref1.C: Remove stray semicolon.
* g++.dg/template/sizeof1.C (A::value): Declare it.
* g++.dg/template/spec4.C: Change error message.
* g++.dg/template/static1.C: Likewise.
* g++.dg/template/type1.C: Likewise.
* g++.dg/template/typename3.C: Likewise.
* g++.old-deja/g++.benjamin/13478.C: Change error message.
* g++.old-deja/g++.benjamin/15799.C: Remove stray semicolon.
* g++.old-deja/g++.benjamin/bool01.C: Likewise.
* g++.old-deja/g++.benjamin/bool02.C: Likewise.
* g++.old-deja/g++.benjamin/p13417.C: Now fails due to use of
named return value extension.
* g++.old-deja/g++.benjamin/tem06.C: Remove stray semicolon.
* g++.old-deja/g++.benjmain/warn01.C: Likewise.
* g++.old-deja/g++.bob/extern_C.C: Likewise.
* g++.old-deja/g++.bob/inherit2.C: Likewise.
* g++.old-deja/g++.brendan/complex1.C: Likewise.
* g++.old-deja/g++.brendan/copy5.C: Likewise.
* g++.old-deja/g++.brendan/crash13.C: Likewise.
* g++.old-deja/g++.brendan/crash15.C: Likewise.
* g++.old-deja/g++.brendan/crash18.C: Change error message.
* g++.old-deja/g++.brendan/crash37.C: Remove stray semicolon.
* g++.old-deja/g++.brendan/crash38.C: Likewise.
* g++.old-deja/g++.brendan/crash50.C: Likewise.
* g++.old-deja/g++.brendan/crash56.C: Likewise.
* g++.old-deja/g++.brendan/crash6.C: Use explicit specialization
syntax.
* g++.old-deja/g++.brendan/crash66.C: Remove stray semicolon.
* g++.old-deja/g++.brendan/crash8.C: Change error message.
* g++.old-deja/g++.brendan/ctors1.C: Remove stray semicolon.
* g++.old-deja/g++.brendan/ctors2.C: Likewise.
* g++.old-deja/g++.brendan/shadow1.C: Likewise.
* g++.old-deja/g++.brendan/template11.C: Likewise.
* g++.old-deja/g++.brendan/template26.C: Likewise.
* g++.old-deja/g++.brendan/template27.C: Use explicit
specialization syntax.
* g++.old-deja/g++.brendan/template30.C: Likewise.
* g++.old-deja/g++.brendan/template5.C: Remove stray semicolon.
* g++.old-deja/g++.brendan/visibility3.C: Account for use of
non-dependent names.
* g++.old-deja/g++.brendan/warnings4.C: Remove stray semicolon.
* g++.old-deja/g++.brendan/warnings7.C: Likewise.
* g++.old-deja/g++.bugs/900121_02.C: Likewise.
* g++.old-deja/g++.eh/catchptr1.C: Likewise.
* g++.old-deja/g++.ext/addrfunc4.C: Likewise.
* g++.old-deja/g++.ext/namedret1.C: Now fails due to use of
named return value extension.
* g++.old-deja/g++.ext/namedret2.C: Likewise.
* g++.old-deja/g++.ext/namedret3.C: Likewise.
* g++.old-deja/g++.ext/return1.C: Likewise.
* g++.old-deja/g++.ext/typename1.C: Add missing typename keywords.
* g++.old-deja/g++.jason/access17.C: Issue more error messages.
* g++.old-deja/g++.jason/access8.C: Likewise.
* g++.old-deja/g++.jason/bool.C: Remove stray semicolon.
* g++.old-deja/g++.jason/destruct.C: Remove incorrect
pseudo-destructor names.
* g++.old-deja/g++.jason/dtor3.C: Remove stray semicolon.
* g++.old-deja/g++.jason/dtor5.C: Remove incorrect
pseudo-destructor names.
* g++.old-deja/g++.jason/opeq3.C: Remove stray semicolon.
* g++.old-deja/g++.jason/overload19.C: Likewise.
* g++.old-deja/g++.jason/overload32.C: Likewise.
* g++.old-deja/g++.jason/parse11.C: Issue error messages about
stray semicolons.
* g++.old-deja/g++.jason/pmem2.C: Remove stray semicolon.
* g++.old-deja/g++.jason/return.C: Likewise.
* g++.old-deja/g++.jason/return2.C: Likewise.
* g++.old-deja/g++.jason/shadow1.C: Likewise.
* g++.old-deja/g++.jason/special.C: Use explicit specialization
syntax.
* g++.old-deja/g++.jason/template10.C: Account for use of
non-dependent names.
* g++.old-deja/g++.jason/template11.C: Use explicit specialization
syntax.
* g++.old-deja/g++.jason/template37.C: Likewise.
* g++.old-deja/g++.law/access4.C: Change error messages.
* g++.old-deja/g++.law/arm13.C:  Remove incorrect
pseudo-destructor names.
* g++.old-deja/g++.law/code-gen5.C: Remove stray semicolon.
* g++.old-deja/g++.law/ctors9.C: Likewise.
* g++.old-deja/g++.law/cvt22.C: Likewise.
* g++.old-deja/g++.law/dtors5.C: Likewise.
* g++.old-deja/g++.law/global-init1.C: Likewise.
* g++.old-deja/g++.law/missed-error3.C: Likewise.
* g++.old-deja/g++.law/operators28.C: Likewise.
* g++.old-deja/g++.law/visibility28.C: Likewise.
* g++.old-deja/g++.martin/eval1.C: Likewise.
* g++.old-deja/g++.martin/pmf2.C: Remove qualifier in constructor
name.
* g++.old-deja/g++.mike/hog1.C: Remove stray semicolon.
* g++.old-deja/g++.mike/net34.C: Likewise.
* g++.old-deja/g++.mike/net36.C: Likewise.
* g++.old-deja/g++.mike/ns2.C: Likewise.
* g++.old-deja/g++.mike/p12306.C: Likewise.
* g++.old-deja/g++.mike/p646.C: Adjust for removal of named return
value extension.
* g++.old-deja/g++.mike/p700.C: Likewise.
* g++.old-deja/g++.mike/p701.C: Remove stray semicolon.
* g++.old-deja/g++.mike/p710.C: Likewise.
* g++.old-deja/g++.mike/p784.C: Adjust for removal of named return
value extension.
* g++.old-deja/g++.mike/pmf7.C: Remove stray semicolon.
* g++.old-deja/g++.mike/pmf9.C: Likewise.
* g++.old-deja/g++.ns/crash2.C: Likewise.
* g++.old-deja/g++.ns/crash3.C: Likewise.
* g++.old-deja/g++.ns/invalid1.C: Likewise.
* g++.old-deja/g++.ns/ns17.C: Likewise.
* g++.old-deja/g++.ns/template16.C: Likewise.
* g++.old-deja/g++.ns/template5.C: Remove invalid use of template
keyword.
* g++.old-deja/g++.ns/template6.C: Remove stray semicolon.
* g++.old-deja/g++.ns/using9.C: Remove stray semicolon.
* g++.old-deja/g++.oliva/nameret1.C: Now fails due to use of
named return value extension.
* g++.old-deja/g++.oliva/nameret2.C: Likewise.
* g++.old-deja/g++.other/access4.C: Issue additional error
messages.
* g++.old-deja/g++.other/array6.C: Remove stray semicolon.
* g++.old-deja/g++.other/crash1.C: Isue additional error messages.
* g++.old-deja/g++.other/crash11.C: Add missing class-key.
* g++.old-deja/g++.other/crash25.C: Change error message.
* g++.old-deja/g++.other/crash4.C: Change error message.
* g++.old-deja/g++.other/debug7.C: Remove stray semicolon.
* g++.old-deja/g++.other/decl5.C: Issue more error messages.
* g++.old-deja/g++.other/defarg7.C: Remove circular dependency
checks.
* g++.old-deja/g++.other/defarg8.C: Likewise.
* g++.old-deja/g++.other/dtor1.C: Remove stray semicolon.
* g++.old-deja/g++.other/dtor10.C: Likewise.
* g++.old-deja/g++.other/incomplete.C: Likewise.
* g++.old-deja/g++.other/linkage7.C: Likewise.
* g++.old-deja/g++.other/lookup19.C: Now fails due to corrected
lookup algorithm.
* g++.old-deja/g++.other/mangle2.C: Likewise.
* g++.old-deja/g++.other/refinit2.C: Likewise.
* g++.old-deja/g++.other/sizeof2.C: Change error messages.
* g++.old-deja/g++.other/std1.C: Remove stray semicolon.
* g++.old-deja/g++.pt/crash28.C: Likewise.
* g++.old-deja/g++.pt/crash29.C: Use explicit specialization
syntax.
* g++.old-deja/g++.pt/crash32.C: Change error message.
* g++.old-deja/g++.pt/crash43.C: Adjust error messages.
* g++.old-deja/g++.pt/crash58.C: Remove stray semicolon.
* g++.old-deja/g++.pt/crash65.C: Tweak to acount for change in
error message position.
* g++.old-deja/g++.pt/defarg5.C: Remove stray semicolon.
* g++.old-deja/g++.pt/defarg8.C: Change error message.
* g++.old-deja/g++.pt/eichin01.C: Use explicit specialization
syntax.
* g++.old-deja/g++.pt/eichin01a.C: Define static data members.
* g++.old-deja/g++.pt/eichin01b.C: Likewise.
* g++.old-deja/g++.pt/enum7.C: Remove stray semicolon.
* g++.old-deja/g++.pt/explicit12.C: Remove invalid use of template
keyword.
* g++.old-deja/g++.pt/explicit31.C: Likewise.
* g++.old-deja/g++.pt/explicit33.C: Remove stray semicolon.
* g++.old-deja/g++.pt/explicit35.C: Remove invalid use of template
keyword.
* g++.old-deja/g++.pt/explicit71.C: Change error message.
* g++.old-deja/g++.pt/explicit80.C: Use explicit specialization
syntax.
* g++.old-deja/g++.pt/friend28.C: Account for use of
non-dependent names.
* g++.old-deja/g++.pt/friend29.C: Likewise.
* g++.old-deja/g++.pt/friend46.C: Adjust for correct name lookup
rules.
* g++.old-deja/g++.pt/friend48.C: Remove stray semicolon.
* g++.old-deja/g++.pt/instantiate1.C: Use correct class-key.
* g++.old-deja/g++.pt/instantiate11.C: Adjust for correct name
lookup rules.
* g++.old-deja/g++.pt/instantiate8.C: Remove stray semicolon.
* g++.old-deja/g++.pt/instantiate9.C: Insert missing typename
keyword.
* g++.old-deja/g++.pt/memclass20.C: Likewise.
* g++.old-deja/g++.pt/memclass5.C: Likewise.
* g++.old-deja/g++.pt/memclass7.C: Remove invalid use of template
keyword.
* g++.old-deja/g++.pt/memtemp75.C: Likewise.
* g++.old-deja/g++.pt/memtemp81.C: Remove stray semicolon.
* g++.old-deja/g++.pt/memtemp87.C: Add missing access specifier.
* g++.old-deja/g++.pt/overload13.C: Correct error messages.
* g++.old-deja/g++.pt/parms2.C: Add missing typename keyword.
* g++.old-deja/g++.pt/ptrmem1.C: Remove invalid use of template
keyword.
* g++.old-deja/g++.pt/spec10.C: Likewise.
* g++.old-deja/g++.pt/spec28.C: Reorder declarations.
* g++.old-deja/g++.pt/t10.C: Add explicit specialization syntax.
* g++.old-deja/g++.pt/t32.C: Remove stray semicolon.
* g++.old-deja/g++.pt/t35a.C: Add explicit specialization syntax.
* g++.old-deja/g++.pt/ttp24.C: Remove stray semicolon.
* g++.old-deja/g++.pt/ttp62.C: Likewise.
* g++.old-deja/g++.pt/ttp64.C: Likewise.
* g++.old-deja/g++.pt/typename11.C: Add missing typename keyword.
* g++.old-deja/g++.pt/typename15.C: Likewise.
* g++.old-deja/g++.pt/typename22.C: Likewise.
* g++.old-deja/g++.pt/typename6.C: Change error messages.
* g++.old-deja/g++.pt/using1.C: Remove stray semicolon.
* g++.old-deja/g++.pt/virtual2.C: Likewise.
* g++.old-deja/g++.robertl/eb118.C: Add explicit specialization
syntax.
* g++.old-deja/g++.robertl/eb27.C: Now fails due to use of named
return value extension.
* g++.old-deja/g++.robertl/eb43.C: Remove stray semicolon.
* g++.old-deja/g++.robertl/eb79.C: Correct for new name lookup rules.
* g++.old-deja/g++.robertl/eb82.C: Remove stray semicolons.
* g++.old-deja/g++.robertl/eb86.C: Add missing forward declaration.

From-SVN: r60559

204 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/eh/spec4.C
gcc/testsuite/g++.dg/expr/pmf-1.C
gcc/testsuite/g++.dg/ext/asm1.C
gcc/testsuite/g++.dg/ext/typename1.C
gcc/testsuite/g++.dg/inherit/template-as-base.C
gcc/testsuite/g++.dg/lookup/scoped1.C
gcc/testsuite/g++.dg/lookup/scoped2.C
gcc/testsuite/g++.dg/lookup/scoped3.C
gcc/testsuite/g++.dg/lookup/using2.C
gcc/testsuite/g++.dg/other/component1.C
gcc/testsuite/g++.dg/other/do1.C
gcc/testsuite/g++.dg/other/error2.C
gcc/testsuite/g++.dg/other/init1.C
gcc/testsuite/g++.dg/other/packed1.C
gcc/testsuite/g++.dg/other/ptrmem2.C
gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
gcc/testsuite/g++.dg/special/initp1.C
gcc/testsuite/g++.dg/template/access3.C
gcc/testsuite/g++.dg/template/access5.C
gcc/testsuite/g++.dg/template/access6.C
gcc/testsuite/g++.dg/template/complit1.C
gcc/testsuite/g++.dg/template/crash1.C
gcc/testsuite/g++.dg/template/inherit2.C
gcc/testsuite/g++.dg/template/instantiate2.C
gcc/testsuite/g++.dg/template/instantiate3.C
gcc/testsuite/g++.dg/template/qual1.C
gcc/testsuite/g++.dg/template/qualttp18.C
gcc/testsuite/g++.dg/template/ref1.C
gcc/testsuite/g++.dg/template/sizeof1.C
gcc/testsuite/g++.dg/template/spec4.C
gcc/testsuite/g++.dg/template/static1.C
gcc/testsuite/g++.dg/template/type1.C
gcc/testsuite/g++.dg/template/typename3.C
gcc/testsuite/g++.old-deja/g++.benjamin/13478.C
gcc/testsuite/g++.old-deja/g++.benjamin/15799.C
gcc/testsuite/g++.old-deja/g++.benjamin/bool01.C
gcc/testsuite/g++.old-deja/g++.benjamin/bool02.C
gcc/testsuite/g++.old-deja/g++.benjamin/p13417.C
gcc/testsuite/g++.old-deja/g++.benjamin/tem03.C
gcc/testsuite/g++.old-deja/g++.benjamin/tem06.C
gcc/testsuite/g++.old-deja/g++.benjamin/warn01.C
gcc/testsuite/g++.old-deja/g++.bob/extern_C.C
gcc/testsuite/g++.old-deja/g++.bob/inherit2.C
gcc/testsuite/g++.old-deja/g++.brendan/complex1.C
gcc/testsuite/g++.old-deja/g++.brendan/copy5.C
gcc/testsuite/g++.old-deja/g++.brendan/crash13.C
gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
gcc/testsuite/g++.old-deja/g++.brendan/crash18.C
gcc/testsuite/g++.old-deja/g++.brendan/crash37.C
gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
gcc/testsuite/g++.old-deja/g++.brendan/crash50.C
gcc/testsuite/g++.old-deja/g++.brendan/crash56.C
gcc/testsuite/g++.old-deja/g++.brendan/crash6.C
gcc/testsuite/g++.old-deja/g++.brendan/crash66.C
gcc/testsuite/g++.old-deja/g++.brendan/crash8.C
gcc/testsuite/g++.old-deja/g++.brendan/ctors1.C
gcc/testsuite/g++.old-deja/g++.brendan/ctors2.C
gcc/testsuite/g++.old-deja/g++.brendan/shadow1.C
gcc/testsuite/g++.old-deja/g++.brendan/template11.C
gcc/testsuite/g++.old-deja/g++.brendan/template26.C
gcc/testsuite/g++.old-deja/g++.brendan/template27.C
gcc/testsuite/g++.old-deja/g++.brendan/template30.C
gcc/testsuite/g++.old-deja/g++.brendan/template5.C
gcc/testsuite/g++.old-deja/g++.brendan/visibility3.C
gcc/testsuite/g++.old-deja/g++.brendan/warnings4.C
gcc/testsuite/g++.old-deja/g++.brendan/warnings7.C
gcc/testsuite/g++.old-deja/g++.bugs/900121_02.C
gcc/testsuite/g++.old-deja/g++.eh/catchptr1.C
gcc/testsuite/g++.old-deja/g++.ext/addrfunc4.C
gcc/testsuite/g++.old-deja/g++.ext/default.C
gcc/testsuite/g++.old-deja/g++.ext/namedret1.C
gcc/testsuite/g++.old-deja/g++.ext/namedret2.C
gcc/testsuite/g++.old-deja/g++.ext/namedret3.C
gcc/testsuite/g++.old-deja/g++.ext/return1.C
gcc/testsuite/g++.old-deja/g++.ext/typename1.C
gcc/testsuite/g++.old-deja/g++.jason/access17.C
gcc/testsuite/g++.old-deja/g++.jason/access8.C
gcc/testsuite/g++.old-deja/g++.jason/bool.C
gcc/testsuite/g++.old-deja/g++.jason/destruct.C
gcc/testsuite/g++.old-deja/g++.jason/dtor3.C
gcc/testsuite/g++.old-deja/g++.jason/dtor5.C
gcc/testsuite/g++.old-deja/g++.jason/opeq3.C
gcc/testsuite/g++.old-deja/g++.jason/overload19.C
gcc/testsuite/g++.old-deja/g++.jason/overload32.C
gcc/testsuite/g++.old-deja/g++.jason/parse11.C
gcc/testsuite/g++.old-deja/g++.jason/pmem2.C
gcc/testsuite/g++.old-deja/g++.jason/return.C
gcc/testsuite/g++.old-deja/g++.jason/return2.C
gcc/testsuite/g++.old-deja/g++.jason/shadow1.C
gcc/testsuite/g++.old-deja/g++.jason/special.C
gcc/testsuite/g++.old-deja/g++.jason/template10.C
gcc/testsuite/g++.old-deja/g++.jason/template11.C
gcc/testsuite/g++.old-deja/g++.jason/template37.C
gcc/testsuite/g++.old-deja/g++.law/access4.C
gcc/testsuite/g++.old-deja/g++.law/arm13.C
gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
gcc/testsuite/g++.old-deja/g++.law/ctors9.C
gcc/testsuite/g++.old-deja/g++.law/cvt22.C
gcc/testsuite/g++.old-deja/g++.law/dtors5.C
gcc/testsuite/g++.old-deja/g++.law/global-init1.C
gcc/testsuite/g++.old-deja/g++.law/missed-error3.C
gcc/testsuite/g++.old-deja/g++.law/operators28.C
gcc/testsuite/g++.old-deja/g++.law/visibility28.C
gcc/testsuite/g++.old-deja/g++.martin/eval1.C
gcc/testsuite/g++.old-deja/g++.martin/pmf2.C
gcc/testsuite/g++.old-deja/g++.mike/eh41.C
gcc/testsuite/g++.old-deja/g++.mike/hog1.C
gcc/testsuite/g++.old-deja/g++.mike/net34.C
gcc/testsuite/g++.old-deja/g++.mike/net36.C
gcc/testsuite/g++.old-deja/g++.mike/ns2.C
gcc/testsuite/g++.old-deja/g++.mike/p12306.C
gcc/testsuite/g++.old-deja/g++.mike/p3579.C
gcc/testsuite/g++.old-deja/g++.mike/p646.C
gcc/testsuite/g++.old-deja/g++.mike/p700.C
gcc/testsuite/g++.old-deja/g++.mike/p701.C
gcc/testsuite/g++.old-deja/g++.mike/p710.C
gcc/testsuite/g++.old-deja/g++.mike/p784.C
gcc/testsuite/g++.old-deja/g++.mike/pmf7.C
gcc/testsuite/g++.old-deja/g++.mike/pmf9.C
gcc/testsuite/g++.old-deja/g++.ns/crash2.C
gcc/testsuite/g++.old-deja/g++.ns/crash3.C
gcc/testsuite/g++.old-deja/g++.ns/invalid1.C
gcc/testsuite/g++.old-deja/g++.ns/ns17.C
gcc/testsuite/g++.old-deja/g++.ns/template16.C
gcc/testsuite/g++.old-deja/g++.ns/template5.C
gcc/testsuite/g++.old-deja/g++.ns/template6.C
gcc/testsuite/g++.old-deja/g++.ns/using9.C
gcc/testsuite/g++.old-deja/g++.oliva/nameret1.C
gcc/testsuite/g++.old-deja/g++.oliva/nameret2.C
gcc/testsuite/g++.old-deja/g++.other/access4.C
gcc/testsuite/g++.old-deja/g++.other/array6.C
gcc/testsuite/g++.old-deja/g++.other/crash1.C
gcc/testsuite/g++.old-deja/g++.other/crash11.C
gcc/testsuite/g++.old-deja/g++.other/crash25.C
gcc/testsuite/g++.old-deja/g++.other/crash4.C
gcc/testsuite/g++.old-deja/g++.other/debug7.C
gcc/testsuite/g++.old-deja/g++.other/decl5.C
gcc/testsuite/g++.old-deja/g++.other/defarg7.C
gcc/testsuite/g++.old-deja/g++.other/defarg8.C
gcc/testsuite/g++.old-deja/g++.other/dtor1.C
gcc/testsuite/g++.old-deja/g++.other/dtor10.C
gcc/testsuite/g++.old-deja/g++.other/incomplete.C
gcc/testsuite/g++.old-deja/g++.other/linkage7.C
gcc/testsuite/g++.old-deja/g++.other/lookup19.C
gcc/testsuite/g++.old-deja/g++.other/mangle2.C
gcc/testsuite/g++.old-deja/g++.other/refinit2.C
gcc/testsuite/g++.old-deja/g++.other/sizeof2.C
gcc/testsuite/g++.old-deja/g++.other/std1.C
gcc/testsuite/g++.old-deja/g++.pt/crash28.C
gcc/testsuite/g++.old-deja/g++.pt/crash29.C
gcc/testsuite/g++.old-deja/g++.pt/crash32.C
gcc/testsuite/g++.old-deja/g++.pt/crash43.C
gcc/testsuite/g++.old-deja/g++.pt/crash58.C
gcc/testsuite/g++.old-deja/g++.pt/crash65.C
gcc/testsuite/g++.old-deja/g++.pt/defarg5.C
gcc/testsuite/g++.old-deja/g++.pt/defarg8.C
gcc/testsuite/g++.old-deja/g++.pt/eichin01.C
gcc/testsuite/g++.old-deja/g++.pt/eichin01a.C
gcc/testsuite/g++.old-deja/g++.pt/eichin01b.C
gcc/testsuite/g++.old-deja/g++.pt/enum7.C
gcc/testsuite/g++.old-deja/g++.pt/explicit12.C
gcc/testsuite/g++.old-deja/g++.pt/explicit31.C
gcc/testsuite/g++.old-deja/g++.pt/explicit33.C
gcc/testsuite/g++.old-deja/g++.pt/explicit35.C
gcc/testsuite/g++.old-deja/g++.pt/explicit71.C
gcc/testsuite/g++.old-deja/g++.pt/explicit80.C
gcc/testsuite/g++.old-deja/g++.pt/friend28.C
gcc/testsuite/g++.old-deja/g++.pt/friend29.C
gcc/testsuite/g++.old-deja/g++.pt/friend46.C
gcc/testsuite/g++.old-deja/g++.pt/friend48.C
gcc/testsuite/g++.old-deja/g++.pt/instantiate1.C
gcc/testsuite/g++.old-deja/g++.pt/instantiate11.C
gcc/testsuite/g++.old-deja/g++.pt/instantiate8.C
gcc/testsuite/g++.old-deja/g++.pt/instantiate9.C
gcc/testsuite/g++.old-deja/g++.pt/memclass20.C
gcc/testsuite/g++.old-deja/g++.pt/memclass5.C
gcc/testsuite/g++.old-deja/g++.pt/memclass7.C
gcc/testsuite/g++.old-deja/g++.pt/memtemp75.C
gcc/testsuite/g++.old-deja/g++.pt/memtemp81.C
gcc/testsuite/g++.old-deja/g++.pt/memtemp87.C
gcc/testsuite/g++.old-deja/g++.pt/overload13.C
gcc/testsuite/g++.old-deja/g++.pt/parms2.C
gcc/testsuite/g++.old-deja/g++.pt/ptrmem1.C
gcc/testsuite/g++.old-deja/g++.pt/spec10.C
gcc/testsuite/g++.old-deja/g++.pt/spec28.C
gcc/testsuite/g++.old-deja/g++.pt/t10.C
gcc/testsuite/g++.old-deja/g++.pt/t32.C
gcc/testsuite/g++.old-deja/g++.pt/t35a.C
gcc/testsuite/g++.old-deja/g++.pt/ttp24.C
gcc/testsuite/g++.old-deja/g++.pt/ttp62.C
gcc/testsuite/g++.old-deja/g++.pt/ttp64.C
gcc/testsuite/g++.old-deja/g++.pt/typename11.C
gcc/testsuite/g++.old-deja/g++.pt/typename15.C
gcc/testsuite/g++.old-deja/g++.pt/typename22.C
gcc/testsuite/g++.old-deja/g++.pt/typename6.C
gcc/testsuite/g++.old-deja/g++.pt/using1.C
gcc/testsuite/g++.old-deja/g++.pt/virtual2.C
gcc/testsuite/g++.old-deja/g++.robertl/eb118.C
gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
gcc/testsuite/g++.old-deja/g++.robertl/eb82.C
gcc/testsuite/g++.old-deja/g++.robertl/eb86.C

index c54c1c2c1c0baab9295199337dc3ad29cedff226..cf8b61866acca622a0b1a34062d7de80c16fa6b2 100644 (file)
@@ -1,3 +1,239 @@
+2002-12-27  Mark Mitchell  <mark@codesourcery.com>
+
+       * g++.dg/eh/spec4.C: Remove stray semicolon.
+       * g++.dg/expr/pmf-1.C: Change error message.
+       * g++.dg/ext/asm1.C: Remove stray semicolon.
+       * g++.dg/ext/typename1.C: Add missing typenames.
+       * g++.dg/inherit/template-as-base.C: Change error message.
+       * g++.dg/lookup/scoped1.C: Likewise.
+       * g++.dg/lookup/scoped2.C: Likewise.
+       * g++.dg/lookup/using2.C: Likewise.
+       * g++.dg/other/component1.C: Remove stray semicolon.
+       * g++.dg/other/do1.C: Change error message.
+       * g++.dg/other/error2.C: Likewise.
+       * g++.dg/other/init1.C: Likewise.
+       * g++.dg/other/packed1.C: Remove stray semicolon.
+       * g++.dg/other/ptrmem2.C: Change error message.
+       * g++.dg/parse/parameter-declaration-1.C: Remove line number
+       marker.
+       * g++.dg/special/initp1.C: Remove invalid attribute usage.
+       * g++.dg/template/access3.C: Add typename keyword.
+       * g++.dg/template/access5.C: Remove stray semicolon.
+       * g++.dg/template/access6.C: Likewise.
+       * g++.dg/template/complit1.C: Likewise.
+       * g++.dg/template/crash1.C: Change error message.
+       * g++.dg/template/inherit2.C: Remove stray semicolon.
+       * g++.dg/template/instantiate2.C: Likewise.
+       * g++.dg/template/instantiate3.C: Change error message.
+       * g++.dg/template/qual1.C: Remove stray semicolon.
+       * g++.dg/template/qualttp18.C: Change error message.
+       * g++.dg/template/ref1.C: Remove stray semicolon.
+       * g++.dg/template/sizeof1.C (A::value): Declare it.
+       * g++.dg/template/spec4.C: Change error message.
+       * g++.dg/template/static1.C: Likewise.
+       * g++.dg/template/type1.C: Likewise.
+       * g++.dg/template/typename3.C: Likewise.
+       * g++.old-deja/g++.benjamin/13478.C: Change error message.
+       * g++.old-deja/g++.benjamin/15799.C: Remove stray semicolon.
+       * g++.old-deja/g++.benjamin/bool01.C: Likewise.
+       * g++.old-deja/g++.benjamin/bool02.C: Likewise.
+       * g++.old-deja/g++.benjamin/p13417.C: Now fails due to use of
+       named return value extension.
+       * g++.old-deja/g++.benjamin/tem06.C: Remove stray semicolon.
+       * g++.old-deja/g++.benjmain/warn01.C: Likewise.
+       * g++.old-deja/g++.bob/extern_C.C: Likewise.
+       * g++.old-deja/g++.bob/inherit2.C: Likewise.
+       * g++.old-deja/g++.brendan/complex1.C: Likewise.
+       * g++.old-deja/g++.brendan/copy5.C: Likewise.
+       * g++.old-deja/g++.brendan/crash13.C: Likewise.
+       * g++.old-deja/g++.brendan/crash15.C: Likewise.
+       * g++.old-deja/g++.brendan/crash18.C: Change error message.
+       * g++.old-deja/g++.brendan/crash37.C: Remove stray semicolon.
+       * g++.old-deja/g++.brendan/crash38.C: Likewise.
+       * g++.old-deja/g++.brendan/crash50.C: Likewise.
+       * g++.old-deja/g++.brendan/crash56.C: Likewise.
+       * g++.old-deja/g++.brendan/crash6.C: Use explicit specialization
+       syntax.
+       * g++.old-deja/g++.brendan/crash66.C: Remove stray semicolon.
+       * g++.old-deja/g++.brendan/crash8.C: Change error message.
+       * g++.old-deja/g++.brendan/ctors1.C: Remove stray semicolon.
+       * g++.old-deja/g++.brendan/ctors2.C: Likewise.
+       * g++.old-deja/g++.brendan/shadow1.C: Likewise.
+       * g++.old-deja/g++.brendan/template11.C: Likewise.
+       * g++.old-deja/g++.brendan/template26.C: Likewise.
+       * g++.old-deja/g++.brendan/template27.C: Use explicit
+       specialization syntax.
+       * g++.old-deja/g++.brendan/template30.C: Likewise.
+       * g++.old-deja/g++.brendan/template5.C: Remove stray semicolon.
+       * g++.old-deja/g++.brendan/visibility3.C: Account for use of
+       non-dependent names.
+       * g++.old-deja/g++.brendan/warnings4.C: Remove stray semicolon.
+       * g++.old-deja/g++.brendan/warnings7.C: Likewise.
+       * g++.old-deja/g++.bugs/900121_02.C: Likewise.
+       * g++.old-deja/g++.eh/catchptr1.C: Likewise.
+       * g++.old-deja/g++.ext/addrfunc4.C: Likewise.
+       * g++.old-deja/g++.ext/namedret1.C: Now fails due to use of
+       named return value extension.
+       * g++.old-deja/g++.ext/namedret2.C: Likewise.
+       * g++.old-deja/g++.ext/namedret3.C: Likewise.
+       * g++.old-deja/g++.ext/return1.C: Likewise.
+       * g++.old-deja/g++.ext/typename1.C: Add missing typename keywords.
+       * g++.old-deja/g++.jason/access17.C: Issue more error messages.
+       * g++.old-deja/g++.jason/access8.C: Likewise.
+       * g++.old-deja/g++.jason/bool.C: Remove stray semicolon.
+       * g++.old-deja/g++.jason/destruct.C: Remove incorrect
+       pseudo-destructor names.
+       * g++.old-deja/g++.jason/dtor3.C: Remove stray semicolon.
+       * g++.old-deja/g++.jason/dtor5.C: Remove incorrect
+       pseudo-destructor names.
+       * g++.old-deja/g++.jason/opeq3.C: Remove stray semicolon.
+       * g++.old-deja/g++.jason/overload19.C: Likewise.
+       * g++.old-deja/g++.jason/overload32.C: Likewise.
+       * g++.old-deja/g++.jason/parse11.C: Issue error messages about
+       stray semicolons.
+       * g++.old-deja/g++.jason/pmem2.C: Remove stray semicolon.
+       * g++.old-deja/g++.jason/return.C: Likewise.
+       * g++.old-deja/g++.jason/return2.C: Likewise.
+       * g++.old-deja/g++.jason/shadow1.C: Likewise.
+       * g++.old-deja/g++.jason/special.C: Use explicit specialization
+       syntax.
+       * g++.old-deja/g++.jason/template10.C: Account for use of
+       non-dependent names.
+       * g++.old-deja/g++.jason/template11.C: Use explicit specialization
+       syntax.
+       * g++.old-deja/g++.jason/template37.C: Likewise.
+       * g++.old-deja/g++.law/access4.C: Change error messages.
+       * g++.old-deja/g++.law/arm13.C:  Remove incorrect
+       pseudo-destructor names.
+       * g++.old-deja/g++.law/code-gen5.C: Remove stray semicolon.
+       * g++.old-deja/g++.law/ctors9.C: Likewise.
+       * g++.old-deja/g++.law/cvt22.C: Likewise.
+       * g++.old-deja/g++.law/dtors5.C: Likewise.
+       * g++.old-deja/g++.law/global-init1.C: Likewise.
+       * g++.old-deja/g++.law/missed-error3.C: Likewise.
+       * g++.old-deja/g++.law/operators28.C: Likewise.
+       * g++.old-deja/g++.law/visibility28.C: Likewise.
+       * g++.old-deja/g++.martin/eval1.C: Likewise.
+       * g++.old-deja/g++.martin/pmf2.C: Remove qualifier in constructor
+       name.
+       * g++.old-deja/g++.mike/hog1.C: Remove stray semicolon.
+       * g++.old-deja/g++.mike/net34.C: Likewise.
+       * g++.old-deja/g++.mike/net36.C: Likewise.
+       * g++.old-deja/g++.mike/ns2.C: Likewise.
+       * g++.old-deja/g++.mike/p12306.C: Likewise.
+       * g++.old-deja/g++.mike/p646.C: Adjust for removal of named return
+       value extension.
+       * g++.old-deja/g++.mike/p700.C: Likewise.
+       * g++.old-deja/g++.mike/p701.C: Remove stray semicolon.
+       * g++.old-deja/g++.mike/p710.C: Likewise.
+       * g++.old-deja/g++.mike/p784.C: Adjust for removal of named return
+       value extension.
+       * g++.old-deja/g++.mike/pmf7.C: Remove stray semicolon.
+       * g++.old-deja/g++.mike/pmf9.C: Likewise.
+       * g++.old-deja/g++.ns/crash2.C: Likewise.
+       * g++.old-deja/g++.ns/crash3.C: Likewise.
+       * g++.old-deja/g++.ns/invalid1.C: Likewise.
+       * g++.old-deja/g++.ns/ns17.C: Likewise.
+       * g++.old-deja/g++.ns/template16.C: Likewise.
+       * g++.old-deja/g++.ns/template5.C: Remove invalid use of template
+       keyword.
+       * g++.old-deja/g++.ns/template6.C: Remove stray semicolon.
+       * g++.old-deja/g++.ns/using9.C: Remove stray semicolon.
+       * g++.old-deja/g++.oliva/nameret1.C: Now fails due to use of
+       named return value extension.
+       * g++.old-deja/g++.oliva/nameret2.C: Likewise.
+       * g++.old-deja/g++.other/access4.C: Issue additional error
+       messages.
+       * g++.old-deja/g++.other/array6.C: Remove stray semicolon.
+       * g++.old-deja/g++.other/crash1.C: Isue additional error messages.
+       * g++.old-deja/g++.other/crash11.C: Add missing class-key.
+       * g++.old-deja/g++.other/crash25.C: Change error message.
+       * g++.old-deja/g++.other/crash4.C: Change error message.
+       * g++.old-deja/g++.other/debug7.C: Remove stray semicolon.
+       * g++.old-deja/g++.other/decl5.C: Issue more error messages.
+       * g++.old-deja/g++.other/defarg7.C: Remove circular dependency
+       checks.
+       * g++.old-deja/g++.other/defarg8.C: Likewise.
+       * g++.old-deja/g++.other/dtor1.C: Remove stray semicolon.
+       * g++.old-deja/g++.other/dtor10.C: Likewise.
+       * g++.old-deja/g++.other/incomplete.C: Likewise.
+       * g++.old-deja/g++.other/linkage7.C: Likewise.
+       * g++.old-deja/g++.other/lookup19.C: Now fails due to corrected
+       lookup algorithm.
+       * g++.old-deja/g++.other/mangle2.C: Likewise.
+       * g++.old-deja/g++.other/refinit2.C: Likewise.
+       * g++.old-deja/g++.other/sizeof2.C: Change error messages.
+       * g++.old-deja/g++.other/std1.C: Remove stray semicolon.
+       * g++.old-deja/g++.pt/crash28.C: Likewise.
+       * g++.old-deja/g++.pt/crash29.C: Use explicit specialization
+       syntax.
+       * g++.old-deja/g++.pt/crash32.C: Change error message.
+       * g++.old-deja/g++.pt/crash43.C: Adjust error messages.
+       * g++.old-deja/g++.pt/crash58.C: Remove stray semicolon.
+       * g++.old-deja/g++.pt/crash65.C: Tweak to acount for change in
+       error message position.
+       * g++.old-deja/g++.pt/defarg5.C: Remove stray semicolon.
+       * g++.old-deja/g++.pt/defarg8.C: Change error message.
+       * g++.old-deja/g++.pt/eichin01.C: Use explicit specialization
+       syntax.
+       * g++.old-deja/g++.pt/eichin01a.C: Define static data members.
+       * g++.old-deja/g++.pt/eichin01b.C: Likewise.
+       * g++.old-deja/g++.pt/enum7.C: Remove stray semicolon.
+       * g++.old-deja/g++.pt/explicit12.C: Remove invalid use of template
+       keyword.
+       * g++.old-deja/g++.pt/explicit31.C: Likewise.
+       * g++.old-deja/g++.pt/explicit33.C: Remove stray semicolon.
+       * g++.old-deja/g++.pt/explicit35.C: Remove invalid use of template
+       keyword.
+       * g++.old-deja/g++.pt/explicit71.C: Change error message.
+       * g++.old-deja/g++.pt/explicit80.C: Use explicit specialization
+       syntax.
+       * g++.old-deja/g++.pt/friend28.C: Account for use of
+       non-dependent names.
+       * g++.old-deja/g++.pt/friend29.C: Likewise.
+       * g++.old-deja/g++.pt/friend46.C: Adjust for correct name lookup
+       rules.
+       * g++.old-deja/g++.pt/friend48.C: Remove stray semicolon.
+       * g++.old-deja/g++.pt/instantiate1.C: Use correct class-key.
+       * g++.old-deja/g++.pt/instantiate11.C: Adjust for correct name
+       lookup rules.
+       * g++.old-deja/g++.pt/instantiate8.C: Remove stray semicolon.
+       * g++.old-deja/g++.pt/instantiate9.C: Insert missing typename
+       keyword.
+       * g++.old-deja/g++.pt/memclass20.C: Likewise.
+       * g++.old-deja/g++.pt/memclass5.C: Likewise.
+       * g++.old-deja/g++.pt/memclass7.C: Remove invalid use of template
+       keyword.
+       * g++.old-deja/g++.pt/memtemp75.C: Likewise.
+       * g++.old-deja/g++.pt/memtemp81.C: Remove stray semicolon.
+       * g++.old-deja/g++.pt/memtemp87.C: Add missing access specifier.
+       * g++.old-deja/g++.pt/overload13.C: Correct error messages.
+       * g++.old-deja/g++.pt/parms2.C: Add missing typename keyword.
+       * g++.old-deja/g++.pt/ptrmem1.C: Remove invalid use of template 
+       keyword.
+       * g++.old-deja/g++.pt/spec10.C: Likewise.
+       * g++.old-deja/g++.pt/spec28.C: Reorder declarations.
+       * g++.old-deja/g++.pt/t10.C: Add explicit specialization syntax.
+       * g++.old-deja/g++.pt/t32.C: Remove stray semicolon.
+       * g++.old-deja/g++.pt/t35a.C: Add explicit specialization syntax.
+       * g++.old-deja/g++.pt/ttp24.C: Remove stray semicolon.
+       * g++.old-deja/g++.pt/ttp62.C: Likewise.
+       * g++.old-deja/g++.pt/ttp64.C: Likewise.
+       * g++.old-deja/g++.pt/typename11.C: Add missing typename keyword.
+       * g++.old-deja/g++.pt/typename15.C: Likewise.
+       * g++.old-deja/g++.pt/typename22.C: Likewise.
+       * g++.old-deja/g++.pt/typename6.C: Change error messages.
+       * g++.old-deja/g++.pt/using1.C: Remove stray semicolon.
+       * g++.old-deja/g++.pt/virtual2.C: Likewise.
+       * g++.old-deja/g++.robertl/eb118.C: Add explicit specialization
+       syntax.
+       * g++.old-deja/g++.robertl/eb27.C: Now fails due to use of named
+       return value extension.
+       * g++.old-deja/g++.robertl/eb43.C: Remove stray semicolon.
+       * g++.old-deja/g++.robertl/eb79.C: Correct for new name lookup rules.
+       * g++.old-deja/g++.robertl/eb82.C: Remove stray semicolons.
+       * g++.old-deja/g++.robertl/eb86.C: Add missing forward declaration.
+       
 2002-12-26  Nathan Sidwell  <nathan@codesourcery.com>
 
        * g++.dg/warn/inline1.C: New test.
index a41605f56378657fe03fea104337216d2db588c0..8edd3a1c6499aaff66ea837fe79b5340808e4834 100644 (file)
@@ -14,4 +14,4 @@ public:
 
 typedef HandlerStack<std::set_terminate> Terminate;
 
-template<> void Terminate::defaultHandler() {};
+template<> void Terminate::defaultHandler() {}
index 61457ecbdc65701e09602aa96cabe789a7e8ab03..9bb8a037d7553e14b8765cede1adb32833c092c1 100644 (file)
@@ -13,7 +13,7 @@ struct A
   void h()
   {
     void (A::*p)() = &A::f;
-    void (A::*q)() = &(A::f);       // { dg-error "parenthesis" "" }
+    void (A::*q)() = &(A::f);       // { dg-error "parenthesized" "" }
     foo(&g<int>);                   // { dg-error "" "" }
   }
 };
index 8a010eee06883cf0a614cbbd2144d13aeebb7a9b..dd4aede2424cce6878a182463930ed8b7f239113 100644 (file)
@@ -20,7 +20,7 @@ int foo (void)
          [third] "i" (j + 2),
          [fourth] "i" (100));
   return i;
-};
+}
 
 template<class TYPE>
 TYPE bar (TYPE t)
index 1c6b83890922a7f8b744a5cdd4885078e7969451..f66210ff5065684f9b56a5606b33cb5de301acfe 100644 (file)
@@ -2,6 +2,6 @@
 // { dg-options "-fpermissive -w" }
 
 template <class T> struct A { typedef int X; };
-template <class T> struct B { typedef A<T> Y; void f (Y::X); };
-template <class T, class T1, class T2, class T3> struct C : public B<T> { void g (Y::X); };
+template <class T> struct B { typedef A<T> Y; void f (typename Y::X); };
+template <class T, class T1, class T2, class T3> struct C : public B<T> { void g (typename Y::X); };
 template class B<int>;
index f9cd330ea986cc60032414c82e050edd98784ec3..5d34b15d8fcb4f6984dad09fb863426740b6696e 100644 (file)
@@ -6,4 +6,4 @@ namespace N
     template<typename> struct X { };
 }
 
-struct A : N::X { }; // { dg-error "invalid base-class" "" }
+struct A : N::X { }; // { dg-error "expected class-name" "" }
index 0fe8d33b6ec51d9ea80b4baf3dfc7d7283de135d..fc6c4b3c2691182d821189b0ad18508dfbd087b0 100644 (file)
@@ -4,7 +4,7 @@
 struct A
 {
   static int i1;
-  int i2;
+  int i2; // { dg-error "inaccessible" "" }
   static void f1 ();
   void f2 ();
 };
@@ -15,7 +15,7 @@ struct C: public B
   void g ()
   {
     ::A::i1 = 1;
-    ::A::i2 = 1;               // { dg-error "access" "" }
+    ::A::i2 = 1;               // { dg-error "(access)|(context)" "" }
     ::A::f1 ();
     ::A::f2 ();                        // { dg-error "access" "" { xfail *-*-* } }
   }
index 80cfb1f5f00ea37373f155cd2be561a524182532..08882d97438b99667f0ea0a33f1f1db9ce764155 100644 (file)
@@ -13,7 +13,7 @@ struct Derived : Base
 {
   void Foo ()
   {
-    Base::Baz ();  // { dg-error "has no member" "" }
+    Base::Baz ();  // { dg-error "is not a member" "" }
       
   };
 };
index 992f1d1280939da35959ac314dcad448c964380e..12ef8c8a578c3e44606c475dc30d5053ba2a1e00 100644 (file)
@@ -20,4 +20,4 @@ struct C : public B
 };
 
 
-template C<int>;
+template struct C<int>;
index 92f134eaf84b719f8ed5c819ae77527161ac7f85..c7aa09c466d23de8f8cece0cd84352aaef87a787 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -25,7 +25,7 @@ namespace N
   template<int> void f() {}
 }
 
-using N;             // { dg-error "parse error" "" }
+using N;             // { dg-error "(using-declaration)|(nested-name)" "" }
 using ::N;           // { dg-error "using-declaration" "" }
 using N::f< 0 >;     // { dg-error "using-declaration" "" }
 
@@ -41,6 +41,6 @@ struct B : A {
 
 struct C : A {
   using A::f<double>; // { dg-error "using-declaration" "" }
-  using A::X<int>;    // { dg-error "parse error" "" }
+  using A::X<int>;    // { dg-error "using-declaration" "" }
 };
 
index 3041a23193fabea3b02c7e9dc80fa4c6413d1b0b..80b95609d0ed2cacdf6fd202a0fd2b80d8dea979 100644 (file)
@@ -1,6 +1,6 @@
 // { dg-do compile }
 
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 28 Dec 2001 <nathan@codesourcery.com>
 
 // PR 5123. ICE
@@ -26,4 +26,4 @@ void Foo () {
   c.g == 1;            // { dg-error "invalid use of" "" }
   c.f == 1;            // { dg-error "invalid use of" "" }
   c.f<int> == 1;       // { dg-error "invalid use of" "" }
-};
+}
index 5ff6c5682ba47aa047488b858f827c6b36c367d6..8cbd1a35f1f483d74da3dbebac37ccfb841e2005 100644 (file)
@@ -8,6 +8,6 @@
 void init ()
 {
   do {  } while (0)
-           obj = 0; // { dg-error "parse error" "" }
+           obj = 0; // { dg-error "expected|undeclared" "" }
      
 }
index 9910ada2a8bb3b4dbe8260963e388be6bd030464..344be234f3bc08c07ec1e72267c0c591eb648b61 100644 (file)
@@ -10,5 +10,5 @@ namespace N
   class B { friend void operator>>(int, class B); };
   class N { friend void operator>>(int,class N); };
 } 
-void N::operator>>(int, N::B)  // { dg-error "no type `B' in `N::N'" "" }
+void N::operator>>(int, N::B)  // { dg-error "`B' is not a member of `class N::N'|non-function|primary-expression" "" }
 { } // { dg-error "" "" }
index bf4c0794758d31c6bf283ac2d35505a3ab47d21b..ec1986e9b7ac9195da125aa86242f008cbb480a7 100644 (file)
@@ -1,6 +1,6 @@
 // { dg-do compile }
 
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 13 Nov 2001 <nathan@codesourcery.com>
 
 // Bug 3154
@@ -17,7 +17,7 @@ struct B : A
 class T
 {
   typedef int Foo;
-  T () : Foo () {}     // { dg-error "type `T::Foo' is not" "" }
+  T () : Foo () {}     // { dg-error "T::Foo' is not" "" }
 };
 
 struct S : B
index b515854a849211c8f424c39239ff453075cd047a..4fb7194dd9f9a836a4984aeb499afe4ab9add9bd 100644 (file)
@@ -19,4 +19,4 @@ int main ()
 
   return 0;
   
-};
+}
index ec451be39da88791cace4dfa1b58f263e3627f5b..d267df15be163dbdbef634c5e6600dc6e838847b 100644 (file)
@@ -1,6 +1,6 @@
 // { dg-do compile }
 
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 31 Dec 2001 <nathan@codesourcery.com>
 
 // PR 4379. We created pointers to member references and pointers to
@@ -8,7 +8,7 @@
 
 struct D {
   
-  int &m;   // { dg-error "member `D::m' is non-static" "" }
+  int &m;       // { dg-error "invalid use of non-static data member" "" }
   static int &s;
   
   int Foo ();
@@ -29,7 +29,7 @@ int D::Foo ()
 int Foo ()
 {
   f1( &D::m);    // { dg-error "cannot create pointer to ref" "" }
-  f1( &(D::m));  // { dg-error "at this point" "" }
+  f1( &(D::m));  // { dg-error "from this location" "" }
   f2( &D::s);    // ok
   f2( &(D::s));  // ok
   return 0;
index 11a9c7b7da9256f97592b78bb1189613a4ad835d..22d6f214d7df03c0a5c51757dee0c067ced7cad3 100644 (file)
@@ -3,4 +3,4 @@
 // { dg-do compile }
 
 struct {
-   a(void = 0; a(0), a(0)      // { dg-error "" "" { target *-*-* } }
+   a(void = 0; a(0), a(0)      // { dg-error "" "" { target *-*-* } }
index 7615023e7cdc9dff1c93620c3bc2203f9d2a65dc..adde34fefa64453a7561421599bedaa57ceb5970 100644 (file)
@@ -19,7 +19,7 @@ extern Two goo;
 extern Two coo[];
 extern Two koo[];
 
-Two foo( 5, 6 ) __attribute__((init_priority(1005)));
+Two foo __attribute__((init_priority(1005))) ( 5, 6 );
 
 Two goo __attribute__((init_priority(1007))) = Two( 7, 8 );
 
index 1674f5f57abb0e2ac19af22bb59b85316c653174..e8ee1041d13c8bff15525ec42350af6cfc00f823 100644 (file)
@@ -4,7 +4,7 @@
 // Enforcing access of typename type.
 
 template <class T> struct A {
-  typename T::X<int> x;                        // { dg-error "this context" }
+  typename T::template X<int> x;       // { dg-error "this context" }
 };
 
 class B {
index a9cb8a5075d89b672539d176a6c87eb90427c496..b2da190ff4eb5feb295ce945886abeed31d5be72 100644 (file)
@@ -16,6 +16,6 @@ class Outer {
 template <int dim>
 typename Outer::Inner<dim>::T  Outer::Inner<dim>::foo () {
   return 1;
-};
+}
 
-template Outer::Inner<2>;
+template struct Outer::Inner<2>;
index fc80402ba1b801bfccaf6d254512f5af65c21dea..cbc8000d1859d6fb3f603eddfb42d16c4cc5dbe8 100644 (file)
@@ -11,7 +11,7 @@ template <class> class Base {
     
 template <class T> struct Derived : public Base<T> {
   typedef typename Base<T>::Type Type;
-  template <class Arg> void f(Type = Type()) {};
+  template <class Arg> void f(Type = Type()) {}
 };
     
 template void Derived<char>::f<int> (Type);
index ab057b3b7ee83a93e59b9785e4f434901c76ec3d..00eb23e83b3e29a9da7c4fe4f61237e67aeacdd4 100644 (file)
@@ -6,6 +6,6 @@ template <int D> struct C {
 };
 
 template<int D>
-C<D>::C() : d((int[]){1,2,3}) {};
+C<D>::C() : d((int[]){1,2,3}) {}
 
 template class C<1>;
index e3c83bcd22f57ab2258bdc0f2d61ea9216f3ae74..3879ad5abda4ec4d54f2ec94186a6e535b23cfe5 100644 (file)
@@ -8,10 +8,10 @@
 class S
 {
   public:
-  template <class I> void Foo(int (*f)(S& o) ); // { dg-error "candidate" "" }
+  template <class I> void Foo(int (*f)(S& o) ); 
 };
 
 template <class I>
-void S::Foo(int (*f)(TYPO&o) )
-{ // { dg-error "template definition|variable declaration|prototype" "" }
+void S::Foo(int (*f)(TYPO&o) ) // { dg-error "Foo" }
+{ // { dg-error "expected `;'" }
 }
index 0e2eba3239de3354846aa36b6f5544ad7a149307..4fd7ec063eeaeb6ce1a04ffbb9235de18df4f4e8 100644 (file)
@@ -16,4 +16,4 @@ struct B: public A {
 int main() 
 {
     B<int> a; 
-};
+}
index a76eaa4701c390de9a983bb4b32de74a07813975..a6faf17aea11af87c98b78479aad856cb592edab 100644 (file)
@@ -4,5 +4,5 @@
 // PR c++/2862
 // Default function argument and template instantiation.
 
-template <int dim> void f (int=0) {};
+template <int dim> void f (int=0) {}
 template void f<1> ();         // { dg-error "not match" }
index e75b570cf8290c6c76196b653d34ff9f38b39c42..14dbcdac07958c0e49ce04156c7aa857c80b7131 100644 (file)
@@ -10,7 +10,7 @@ template <class TYPE>
 struct ACE_Cleanup_Adapter
 {
   TYPE &object ()
-  { return object_; }  // { dg-error "no member" }
+  { return object_; }  // { dg-error "undeclared|reported" }
   TYPE object_;                // { dg-error "incomplete type" }
 };
 
index 3d512c1e1beae0fed9fae2dd490949585c3d9d84..8fa79b3d2e7a31ee4e37e31dbc1b38a2fdb56cb2 100644 (file)
@@ -7,7 +7,7 @@ public:
   void sort (int (*compare) (T *const&,T *const&));
 };
 
-int shift_compare (int *const &, int *const &) {};
+int shift_compare (int *const &, int *const &) {}
 
 template<class T> void
 Link_array<T>::sort (int (*compare) (T *const&,T *const&)) 
index 2c9cf065ceb140b075456d0c018ed3352f9145c8..31dfa6a83d052e2c5c721a5a76a0be42a381a4e5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2001 Free Software Foundation
+// Copyright (C) 2001, 2002 Free Software Foundation
 // Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
 // { dg-do compile }
 
@@ -14,7 +14,7 @@ template <template <class> class TT> struct X
 
 struct C
 {
-       X<A::template B> x; // { dg-error "template|forbid" }
+       X<A::template B> x; // { dg-error "" }
 };
 
 int main()
index 3f133d488f5d1f8f2164568e7e8c086f419ba649..92ccc42cb11a799f1e1d3b1bf0d790e26d385075 100644 (file)
@@ -1,3 +1,3 @@
 class a {} a1;
 template <a & p> class b { public: b() { static_cast <a &> (p); }; };
-int main() { b <a1> b1; };
+int main() { b <a1> b1; }
index 328d647473cdc5f27caef9df0de49c4e2bd30fc3..45a7db48c926cc94bf1ea3dbf7ddac0ea664346b 100644 (file)
@@ -3,7 +3,7 @@
 
 // { dg-do compile }
 
-template <unsigned I> struct A {};
+template <unsigned I> struct A { static char *value; };
 
 template <typename SizeType>
 struct B
index 97ee4fc2d5dd513402c77c748a1c4e5ad7fde80e..18116acb52973c9e58a361a10bc5274c1edbb4bd 100644 (file)
@@ -8,4 +8,4 @@ struct X {
   template <int dim> void f(int=0);
 };
 
-template <> void X::f<1> () {} // { dg-error "(not match|syntax error)" }
+template <> void X::f<1> () {} // { dg-error "(not match|declaration)" }
index f01d0322e997e7911a7924f8d1f97b61032cfe56..98e1acb9e510921f0d26d6e60b6d1b77a7a87043 100644 (file)
@@ -1,4 +1,4 @@
 template <typename T> struct A
 {
-  static const int t[1][1]={{0}}; // { dg-error "in-class" }
+  static const int t[1][1]={{0}}; // { dg-error "brace-enclosed|in-class" }
 };
index cd5cf5f0cd3c3626b618f134cc8001b155d7b768..98a4bd3bf03190da9473c24187b7c788d8ebb61b 100644 (file)
@@ -5,4 +5,4 @@ struct A {
 };
 
 int A::B::c;                   // { dg-error "parameters" }
-int A::C::d;                   // { dg-error "no type" }
+int A::C::d;                   // { dg-error "class" }
index 1c573baa0df974554d657b817030d90dbafa4f23..0ad9a2a0c41ec6e21ab6b1a0678ba86bed93b4a7 100644 (file)
@@ -3,5 +3,5 @@
 
 template <class A>
 struct B {
- typedef A::C::D E;  // { dg-error "no type|parse error" }
+ typedef A::C::D E;  // { dg-error "" }
 };
index 55a948d938852432c4edee043f06244fb8dcc03e..47f634b1fdb1dc301a855a24defed85a2b59e51d 100644 (file)
@@ -19,7 +19,7 @@ protected:
   static const hand_table table_1[];
   static const AData     table_2;
 private:
-  void foo (void);                  // ERROR - candidate
+  void foo (void);
 };
 
 const hand_table Agent::table_1[] = 
index 01a06b042d54359c23bb8956b30ef7da8a6353e7..713e3fb90aaf6b702bb70d1e67e4947657ddb96c 100644 (file)
@@ -24,6 +24,6 @@ enum { first, last};
 
 void foo(void) {
   sanjose obj(first); // ERROR -  // ERROR -
-};
+}
 
 
index 482150bcf6fa2e84bae39ab3e74a89ddf827387c..bd4d3f06f3f51ef314b026854b6e0f18a8a12abe 100644 (file)
@@ -4,8 +4,8 @@
 #include <assert.h>
 #include <limits.h>
 
-void bar ( bool  x ) {};
-void bars ( short  x ) {};
+void bar ( bool  x ) {}
+void bars ( short  x ) {}
 
 /* 980326 bkoz this is not initialized and so can have indeterminate value. */
 #if 0
index c17c935287bb428fd65b9d9e35f291005b0e3d2b..a7730f07899a4d29a8dc58073b4689e327e01aab 100644 (file)
@@ -4,8 +4,8 @@
 #include <assert.h>
 
 
-void bar ( bool  x ) {};
-void bars ( short  x ) {};
+void bar ( bool  x ) {}
+void bars ( short  x ) {}
 
 #if 0
 int andb(){
index ddf02f5004fe600cdf52691e4c31641068f057e2..75253f2c0c566ebcec8f8be0fea0f1f6f9a2cc06 100644 (file)
@@ -7,5 +7,5 @@ public:
   explicit Foo (int){}
 };
 Foo f(10);
-Foo blat() return f(4){}; //this should not give an error
+Foo blat() return f(4){} // ERROR - named return value
  
index 0e4c389b5060a16bfe4a32c1304bb5e1fbcc26a3..1dae2a97eae3e4b6c3dd8058bcf9d58adbd2ce92 100644 (file)
@@ -126,7 +126,7 @@ public:
   template <class T161>
   friend bool foo(T161 u)
     {
-      Xseven<T161, 5, int> obj;
+      Xseven<T161, 5, int> obj; // ERROR - .*
       return (obj.inst == u.inst);
     }
 
index e55ee6aafb47995229a15d0ea6320c532b62a4d9..7ccfc16fd7f3dc1cea0bbc89189ade90f1b7933d 100644 (file)
@@ -17,7 +17,7 @@ template<class T>
 void blah (const T &) {
   T y;
   x (4);
-};
+}
 
 int main () {
   const foo<int> v;
index d0cf0d01785d54bef5b03866f34e96a083fb2ad4..9e7839a253b1d9d05e70b282eca334735f145402 100644 (file)
@@ -12,7 +12,7 @@ void f (void) {
    catch( int)
     {    
     }
-};
+}
 
 //
 //2 g++/12923 __attribute__((__unused__)) not working for objects
@@ -77,7 +77,7 @@ int foofunc(T x){
   Mutex sm(2);
   AutoMutex m(&sm);
   return 0;
-};
+}
 
 
 //5 sanity check to make sure other attributes cannot be used
index 6b91adc36e3649fef340bcde3051e39cc9481dd7..18311ce13b543787ee235d1ea19b5a769273d35c 100644 (file)
@@ -4,6 +4,6 @@ extern "C" {
   public:
     void a();
   };
-};
+}
 
 void A::a() {}
index a7aa4fe0adf2b663f788222e65ffc025cd3941ce..bf5f0895f9c8b4a6073722d8b9bd7055efbd672a 100644 (file)
@@ -16,7 +16,7 @@ public:
 };
 
 void f(B b) {
-};
+}
 
 void g() {
   B h;
index a2378bedf7337384fa3c9e13ed4061b894515dc3..0e3f4f6f685b990a2993dc4d0a9c9616ecb5d33e 100644 (file)
@@ -9,7 +9,7 @@ extern "C" {
 int printf (const char *, ...);
 void exit (int);
 void abort (void);
-};
+}
 
 __complex__ double cd;
 
index a42bdb5a775ec2c2f4911ffba847f8c74d98962d..4c8620b128be5747197c477865f13c023bb4208d 100644 (file)
@@ -49,7 +49,7 @@ void BaseClass::Increm( int r )
     i += r;
   else
     die ();
-};
+}
 
 class DerivedClass : public BaseClass {
 public:
index a1084d6275caaadf6639804181c1ff739d4c25df..d4496f5128eece934b563811bcb807315830c731 100644 (file)
@@ -31,7 +31,7 @@ gen_op Spul_U_axis()
 {
   gen_op U1;
   U1 = Fe();
-}; // ERROR - reaches end of non-void function
+} // ERROR - reaches end of non-void function
 
 int
-main () {};
+main () {}
index 953144ac5ac71f8e07f8d596df8aac70dba8bd28..62ad08956387c9706b28e32414596d409d3069eb 100644 (file)
@@ -4,12 +4,12 @@
 
 class A {
  public:
-  virtual ~A() {std::cout << "executed ~A()\n";};
+  virtual ~A() {std::cout << "executed ~A()\n";}
 };
 
 class B : public A {
  public:
-  virtual ~B() {std::cout << "executed ~B()\n";};
+  virtual ~B() {std::cout << "executed ~B()\n";}
 };
 
 int
@@ -18,5 +18,5 @@ main() {
   B b;
   b.~A();// ERROR -  destructor
   std::cout << "done\n";
-};
+}
 
index d4a4c60b7c8b2fc9dada6e5040079fb5b09df34d..8cccfcb6d884741cebe7cb5776f4597f7be00e4e 100644 (file)
@@ -13,5 +13,5 @@ public:
         { return v != index; }// ERROR - .*
 private:
 //    friend class List<T>;
-    element *index;
+    element *index; // ERROR - invalid use of member
 };
index 18eb64a7683149ee5f8c992380c23bab3e592812..8dafcf9b2e577ff41dc5ef7b0b22a7e8f33a3245 100644 (file)
@@ -6,7 +6,7 @@ extern "C" {
 }
 extern "C" {
         extern void foo();
-};
+}
 class SS {
         friend void foo();
 protected:
index 5f0cf9bd2c25f53be75fbbb661e30f561e8e82da..e6f1b6c791ac534d0c705c8b4d4c315537d62700 100644 (file)
@@ -37,7 +37,7 @@ main()
   Implicit<Implicit<INTEGER, 2> ,  3> y;
 
   y = 10;
-};
+}
 
 
 
index fd87d75a2e695de41879dbe18d1a15998ffd9dfa..52e05887ddf6bfbe14820a095783b2b38d9580fa 100644 (file)
@@ -5,7 +5,7 @@ class B
 public:
         int i;
         };
-int operator & (const B &s) { return ( s.i  );};
+int operator & (const B &s) { return ( s.i  );}
 
 
 
index 4aeb330274d79d76b5b4dad5ceaa8ffa136bf834..739dfcba0301da9c91896861784ffd663839a187 100644 (file)
@@ -341,7 +341,7 @@ operator>=(const SetLD<T>& a, const SetLD<T>& b)
 { return ! (a < b); }
 class String { };
 class IcaseString: public String { };
-class SetLD< IcaseString >: public SetLD<    String  > {       public:  SetLD (): SetLD<    String  >() { };    SetLD (const ListD<   IcaseString  >& other): SetLD<    String  >()    { ListD<   IcaseString  >::Vix x;       for (other.first(x); 0 != x; other.next(x))     add(other(x)); };        SetLD (const  SetLD & other): SetLD<    String  >(other) { };  const    IcaseString  & operator()(const Vix& x) const  { return (   IcaseString  &) SetLD<    String  >::operator()(x); }      };      typedef SetLD<  String > SetLD_String_IcaseString_old_tmp99;    typedef SetLD< IcaseString > SetLD_String_IcaseString_new_tmp99;        
+template <> class SetLD< IcaseString >: public SetLD<    String  > {   public:  SetLD (): SetLD<    String  >() { };    SetLD (const ListD<   IcaseString  >& other): SetLD<    String  >()    { ListD<   IcaseString  >::Vix x;       for (other.first(x); 0 != x; other.next(x))     add(other(x)); };        SetLD (const  SetLD & other): SetLD<    String  >(other) { };  const    IcaseString  & operator()(const Vix& x) const  { return (   IcaseString  &) SetLD<    String  >::operator()(x); }      };      typedef SetLD<  String > SetLD_String_IcaseString_old_tmp99;    typedef SetLD< IcaseString > SetLD_String_IcaseString_new_tmp99;        
 inline int      operator== (const SetLD_String_IcaseString_new_tmp99& a,       const SetLD_String_IcaseString_new_tmp99& b)
 {// ERROR - candidate for call
 const SetLD_String_IcaseString_old_tmp99& oa = a;
@@ -371,7 +371,7 @@ inline int   operator>= (const SetLD_String_IcaseString_new_tmp99& a,       const SetLD
 {
 const SetLD_String_IcaseString_old_tmp99& oa = a;
 const SetLD_String_IcaseString_old_tmp99& ob = b;
-return  operator>= (oa, ob);   }   ;
+return  operator>= (oa, ob);   }   
 typedef SetLD<IcaseString> SLDiS;
 static void
 nop(int i)
index a6527a5cbd4fae459248f812d801ff93be88d812..2472ed4de8b2e092b4d26b28b9b9cc0794034ca3 100644 (file)
@@ -9,6 +9,7 @@ template<int>
 class Program {
 } ;
 
+template<>
 class Program<0> {
 public:
    inline friend float EvalNextArg()
index 878957b84e6ab474e50439e19d1f014cc7c0f8fb..d15993196aba2da2c2b8a860bbb7127886a0347a 100644 (file)
@@ -23,7 +23,7 @@ swaplong(ulong value)
 {
     ulong v = (value << 16) | (value >> 16);
     return ((v >> 8) & 0x00ff00ff) | ((v << 8) & 0xff00ff00);
-};
+}
 struct elong
 {
     ulong      data;                    
index 2c4a91d74981598c470660c9558be6fb879d996b..f7906c5ddb3c5753ca0574b3e41d8edbcd183334 100644 (file)
@@ -8,5 +8,5 @@ class Elvis
 template<int a>
 class Elvis<0>
 { // ERROR - incorrect number of parameters
-  int geta() { return a ; } // ERROR - not in a class
+  int geta() { return a ; }
 } ;
index 4b82843ea025344a34809b40f9ca179f927eeae7..0a48eef950dc2c7234e66d45be341e0c849f5ea1 100644 (file)
@@ -24,4 +24,4 @@ base::base(int arg1, int arg2)
 {
        f1 = arg1;
        f2 = arg2;
-};
+}
index 6f1a36a960041ba79f6cdb3ffa8e9cf44e45a6f4..127dd36b895e2ff763bf4d40c72a11fcf221d14e 100644 (file)
@@ -25,4 +25,4 @@ base::base(int arg1, int arg2)
 {
        f1 = arg1;
        f2 = arg2;
-};
+}
index 6a1d9d1f8e331d48c617c9ffe3b6b796976af772..b9b36367c3d9c34436be3e8ded7c9fd20be1cb71 100644 (file)
@@ -5,4 +5,4 @@ void f( int a) {
        {
                int a;
        }
-};
+}
index 4a953a340826694d92986ed324ae3c583ca23208..8316c2f5641e2456e7bfc5a233dd35cc0f86ee2f 100644 (file)
@@ -24,7 +24,7 @@ aCallback<Called>::aCallback(Called& obj,
                              int (Called::*met)()) :
 object(obj),
 method(met)
-{};
+{}
 
 template <class Called>
 int aCallback<Called>::callback()
index 6dc15551f81de99a94e1c2b804c2bba64f99fd20..d245423abc620a51385b29c83afcffe6e7328235 100644 (file)
@@ -18,10 +18,10 @@ template <int I> class BB : public virtual V {
   BB(int);
   };
 
-template <int I> AA<I>::AA() {};
-template <int I> AA<I>::AA(int i): V(i) {};
-template <int I> BB<I>::BB() {};
-template <int I> BB<I>::BB(int i) {};
+template <int I> AA<I>::AA() {}
+template <int I> AA<I>::AA(int i): V(i) {}
+template <int I> BB<I>::BB() {}
+template <int I> BB<I>::BB(int i) {}
 
 class CC : public AA<1>, public BB<2> {
  public:
index a2649d439e0857bde3555b721424eebf86538bca..25752160a14580ee7f65dfc6a7b3d6d46d3f1094 100644 (file)
@@ -5,7 +5,8 @@
         class X1 { };
         class RefProto { };
         template<class REP> class Ref { };
-        
+
+        template <>
         class MapLS<String, Ref<X1> >: public MapLS<String, RefProto> {
         public:
             ~MapLS();
index 97357d63a801fbcf9c777a13cf4c2df08a93f610..dcbd9c19da5f3b37f6f11256c6fc4f3949903b3d 100644 (file)
@@ -6,7 +6,8 @@
         class X1 { };
         class RefProto { };
         template<class REP> class Ref { };
-        
+
+        template <>        
         class MapLS<String, Ref<X1> >: public MapLS<String, RefProto> {
         public:
             ~MapLS();
index 39b74d6a4df6bd7092142c519f450051ad9d5f42..810f0cb0c132c8af2d96211c18ed9b8d7f90e18a 100644 (file)
@@ -18,16 +18,16 @@ Vector<T>::Vector(int x)
 {
     sz = x;
     v = new T (sz);
-} ;
+} 
 
 template<class T>
 Vector<T>::~Vector()
-    { delete [] v; } ;
+    { delete [] v; } 
 
 template<class T>
 T &
 Vector<T>::operator [] (int i)
-    { return v[i]; } ;
+    { return v[i]; } 
 
 int
 main(int, char **)
index 6e84da5ac516473c5d05e9f0127b4184a78601fb..62cdfeef4bbe535237d4fbda35c3f33eaf121f20 100644 (file)
@@ -6,6 +6,13 @@
 
 class A {};
 
+template <class TP>
+class B;
+
+template <class TP>
+inline A &
+operator<< (A &o, const B<TP> &m);
+
 template <class TP>
 class B
 {
index d733522824ec5c03316a3f1b14936dcd00ce2670..f22a57e7e0b610124bc2cca6d6b455a6ce850e89 100644 (file)
@@ -7,4 +7,4 @@ main ()
   int * foo = &x; // in C++ it's perfectly legal to do this
 
   return 0;
-};
+}
index 24e7a2cde0d13ac2b36feb9c47a5be35e236dc88..2fc2892a4ac731178a35565be63dcc6ef120718d 100644 (file)
@@ -18,4 +18,4 @@ x()
     x.kill(0);
     X<Y> y;
     y.kill(0);
-};
+}
index c90dfd9aaa4c041dd0c54c74cb254ad447d06d3d..79a669cd4291fb83a5fcdfd98de3e4d4fd9b87d9 100644 (file)
@@ -44,6 +44,6 @@ void function ()
   u0 u0_object_1;
 
   u0_object_0 = u0_object_1;
-};
+}
 
 int main () { return 0; }
index 723b437d7ed1369720c4baaf9504ca07eada4031..bddca378b5db29c5cf6c1c58a57464f5df8b85b1 100644 (file)
@@ -1,10 +1,10 @@
 // Test pointer chain catching
-// Copyright (C) 2000 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 9 Apr 2000 <nathan@nathan@codesourcery.com>
 
 #include <stdio.h>
 
-void fn () {};
+void fn () {}
 struct A {void fn () {}};
 static int var = 1;
 static const int const_var = 2;
index d8e9987a45ca1d8f0845af5f17ff9249ea682063..a4949f60d4c10de416c74030b7ccfee01c8c1179 100644 (file)
@@ -21,4 +21,4 @@ int main()
   fn1 = a.f; 
   fn1 = (pmf1)a.f;
   fn2 = (pmf2)a.f;
-};
+}
index f434749ef33a6ba09e8c3f15d9ec9eb56e73a674..30c4510e7c7d4572141a0902112087367b492c7e 100644 (file)
@@ -5,8 +5,8 @@ extern "C" int printf (const char *, ...);
 
 class A {
 public:
-  static A*func (int = 3);
-  static A*(*ptr)(int = 4);
+  static A*func (int = 3); 
+  static A*(*ptr)(int = 4); // ERROR - .*
 };
 
 A*(*A::ptr)(int) = &A::func;
@@ -15,7 +15,7 @@ int main()
 {
   A foo;
 
-  A::ptr();
+  A::ptr(); // ERROR - .*
   A::ptr(47);
 }
 
index 64df8d1dc7792f5701302cda3988a30e05e08008..ad1e36f77dbcf86a09b60176147fdaf2c31ce88d 100644 (file)
@@ -1,6 +1,6 @@
 // Special g++ Options: -Wno-deprecated
 
-int f(int x) return y(x) { }
+int f(int x) return y(x) { } // ERROR - 
 
 extern "C" void abort ();
 
index 8e2b4e620c1e9d3fbcf6fd65f595d23e74486840..277a9964f843e7ce734a83d0d3d46392af328d45 100644 (file)
@@ -5,7 +5,7 @@
 // The Alpha ABI specifies that 32-bit return values have bit 31 propagated,
 // i.e. the value is sign-extended even if the unpromoted type is unsigned.
 
-unsigned int f(unsigned int x) return y(x) { }
+unsigned int f(unsigned int x) return y(x) { } // ERROR - 
 
 extern "C" void abort ();
 
index 0c4e4b45256c95f5b2f2f5f93bbe0006e056a819..7ea66137276d1d87c930ed9835357227d564b056 100644 (file)
@@ -8,9 +8,9 @@ int f2(int *x)
   return 2;
 }
 
-int f1() return x
+int f1() return x // ERROR - 
 {
-  f2(&x);
+  f2(&x); // ERROR - 
 }
 
 void g()
index 29e1fc31f4c1763e95dad7a078334bd9a0ecdea6..53d0c6fb1b9f86c18f877ee97445beec2217218b 100644 (file)
@@ -7,9 +7,9 @@ void f (int &i)
   i = 42;
 }
 
-int g () return r
+int g () return r // ERROR - named return value
 {
-  f (r);
+  f (r); // ERROR - undeclared
 }
 
 int main ()
index 31de28fe8fe6e09bf21774ccdf33924edf4e98a6..2e489ab10fbf2055e3d476af90e5ab78d4396dc2 100644 (file)
@@ -1,8 +1,6 @@
 // Bug: g++ forgets about the instantiation of class1 when looking up
 // class11_value, and tries to look things up in class1<class2>.
 
-// Special g++ Options:
-
 template<class ItIsInt>
 struct class1 {
   struct class11 {
@@ -18,7 +16,7 @@ struct class3 {
 template<class ItIsClass2>
 int class3<ItIsClass2>::f()
 {
-  return class1<typename ItIsClass2::class2_value>::class11::class11_value(10);
+  return typename class1<typename ItIsClass2::class2_value>::class11::class11_value(10);
 }
 
 struct class2 {
index 676eac1bcc1fe24c1b2d8d3a3cabb067f79be09f..8f41b5f8e0b3fa269c32e614d4cf0dc94986afc5 100644 (file)
@@ -12,8 +12,8 @@ struct B: public A {
   static int (A::*fp)();
 };
 
-int A::* B::p = &A::i;
-int (A::* B::fp)() = &A::f;
+int A::* B::p = &A::i;         // ERROR - 
+int (A::* B::fp)() = &A::f;    // ERROR -
 
 struct C {
   static int A::*p;
index 40bb4babe4ea6f751beafca3294d70fff187bff4..c0c46ff7c89b2dc3dae5da76d80152313adb43bc 100644 (file)
@@ -3,7 +3,7 @@
 // Bug: g++ forgets access decls after the definition.
 // Build don't link:
 
-class inh {
+class inh { // ERROR - inaccessible
         int a;
 protected:
         void myf(int);
index e446f12fab65d0a97be59aa14d872437c3c8c52a..30eb23fa06340f6f2f04f5206b6c9cb7b95acefd 100644 (file)
@@ -31,7 +31,7 @@ void g ()
 template <class T> struct F { };
 template class F<bool>;
 
-template <class T> void f (T, bool) { };
+template <class T> void f (T, bool) { }
 template void f (bool, bool);
 
 /* Special cases.  */
index c5b3be6100435ca47508cf7d1832b80e177a22fb..6c9c2964d3346dc23f8f97c27503297f096e2e41 100644 (file)
@@ -14,6 +14,7 @@ public:
 };
 
 typedef char * cp;
+typedef int I;
 
 int main ()
 {
@@ -22,10 +23,10 @@ int main ()
   int i;
   cp c;
 
-  i.~int();
-  i.int::~int();
-  (&i)->~int();
-  (&i)->int::~int();
+  i.~I();
+  i.I::~I();
+  (&i)->~I();
+  (&i)->I::~I();
   c.~cp();
   c.cp::~cp();
   (&c)->~cp();
index 0c5e68abb47cdf3190607e5d3dc998022bcf88e9..5b17bcc540bbd78b1f260bccdd0d12fa57cf01b6 100644 (file)
@@ -4,7 +4,7 @@
 
 #include <stddef.h>
 
-void *operator new(size_t Size, void* pThing) { return pThing; };
+void *operator new(size_t Size, void* pThing) { return pThing; }
 
 template <class T> class Stack {
 public:
index 4761bedf2cc48ea8f4adbfb5770cc903fcceb6e2..4f4016c6b5eeb3fc027dc137d484c27da138abc0 100644 (file)
@@ -18,7 +18,8 @@ int main()
 
   int* p = (int*) new char[sizeof (int)];
   new (p + r++) int;
-  p[--r].~int();
+  typedef int I;
+  p[--r].~I();
   
   return r;
 }
index e290f7a21bab0a53ff8272513f470d96a62a1594..1152aa089176f2f71dc37805eff417389b49c610 100644 (file)
@@ -12,4 +12,4 @@ void foo ()
   int one=1, two=2;
   X a(one), b(two);
   a = b;                       // ERROR - no assignment semantics defined
-};
+}
index ad5817565fbbe33b7a896ca87bfcf83b902bf9ed..99dcc915d98b6a3dca7930b69fb7ec3f88ee556e 100644 (file)
@@ -3,7 +3,7 @@
 
 enum E { A=5, B=32, C=100 };
 
-E operator|(E a, E b) { return C; };
+E operator|(E a, E b) { return C; }
 
 int main()
 {
index 95f251d66647d3efe3d678041b915b9fb097d014..6e207be325795f521603cb19c6c6f7224f5d288d 100644 (file)
@@ -16,4 +16,4 @@ void f( const D & );
 void g( const X & x )
 {
    f( x );
-};
+}
index e9f285cee8d82ea704028bd181a29b95fe703fd7..6c9c1fa64926008727ede6d35b1d3e115c4f310b 100644 (file)
@@ -3,7 +3,7 @@
 
 class aClass 
 { 
-  ;
+  ; // ERROR - missing declaration
 private: 
-  ;   // This line causes problems 
+  ; // ERROR - missing declaration
 }; 
index 99adf1c143f8e7052ae53ea34ac11ef4b51e3c1f..d34809cb3e12da4a0cf1eef0ff422f0e33503f1a 100644 (file)
@@ -20,7 +20,7 @@ aCallback<Called>::aCallback(Called& obj,
                              int (Called::*met)()) :
 object(obj),
 method(met)
-{};
+{}
 
 template <class Called>
 int aCallback<Called>::callback()
index c737a3ea8bda13273a590e5188e560d9dd807b2c..c20d2506ee1c7c6e075e00d9b338c64efd5a8087 100644 (file)
@@ -12,7 +12,7 @@ struct X {
 
 const X foo() { 
   return X(3); 
-};
+}
 
 int main()
 {
index 272390903e809a18245c465824aff1e359cbfe8a..29da5b28e5873f1fd7f12dffd1e096d63e1a2765 100644 (file)
@@ -14,7 +14,7 @@ struct Y {
 
 Y foo() { 
   return X(3); 
-};
+}
 
 int main()
 {
index 59ffcbd15c39b318650a0f31a9b7198f611d1a1a..f3f4d17979cf12e65a8f5cc5eb3b312204c835e0 100644 (file)
@@ -8,7 +8,7 @@ private:
         int foo;
 };
 
-void x::fun() { };
+void x::fun() { }
 
 main ()
 {
index 9f6202ecf4405b9689c0757f648df62cfd2f36d6..41fae60b9fdba766cc1a6be47d7f5e1754ae8382 100644 (file)
@@ -1,6 +1,6 @@
 // Make sure that forward declarations of specializations work...
 
 template <class T> class A { };
-class A<int>;
+template <> class A<int>;
 A<int> a;                      // ERROR - incomplete type
-class A<int> { };
+template <> class A<int> { };
index 18a574a28ebaa0407ca7665eff0e5788651c8719..c63e1d031559ab92acc9d78d4d9bd3a60f40ff09 100644 (file)
@@ -3,6 +3,11 @@
 
 class ostream;
 
+template <class TP> class smanip;
+
+template<class TP>
+ostream& operator<<(ostream& o, const smanip<TP>& m);
+
 template <class TP> class smanip {
 public:
   friend ostream& operator<< <>(ostream &o, const smanip<TP>&m);
index d58bdfe9e037d5920f16ce7b796654a1b9aeb009..fed322e8415d06b2e43c3afaefc0225e75c6e1b5 100644 (file)
@@ -6,6 +6,7 @@ template <class T> struct A {
 
 int foo () { return 1; }
 
+template <>
 int A<int>::t = foo ();
 
 int main ()
index 53607ee7fbeaf05088ce8c0607d71fd723d87f2d..dd3ec29919152a509d7a30be35e3e1466dbfeadb 100644 (file)
@@ -17,6 +17,7 @@
   {
   }
 
+  template <>
   class ONE<int>
   {
     public:
index 994a6109bde90efcefeb5a3466164bd863bf453d..17f0db8f38ca07650834d94d71ea9c623be48699 100644 (file)
@@ -6,7 +6,7 @@
 // Subject:  g++ 2.5.5 doesn't warn about inaccessible virtual base ctor
 // Message-ID: <9403030024.AA04534@ses.com>
 
-class ForceLeafSterile {
+class ForceLeafSterile { // ERROR - 
     friend class Sterile;
       ForceLeafSterile() {} // ERROR - 
 };
index cf6227830af116ee75e914308502dc6cc31568bc..a33f5229d89cc95605880dc16db53fedc7bb0e2f 100644 (file)
@@ -8,7 +8,8 @@ int main()
 {
   int* p = (int*) malloc(sizeof(int));
   (void) new (p) int(1);
-  p->int::~int();
+  typedef int I;
+  p->I::~I();
   free(p);
   printf ("PASS\n");
 }
index ff908758c4fc1ccae3b61d47373af2a39129a51d..f150a7235426b9827275f358fb7261139bc5437b 100644 (file)
@@ -248,7 +248,7 @@ operator double()
 {
        assert( v.r->vec != 0 );
        return *v.r->vec;
-};
+}
 
 double VecElem::
 operator=( double d )
index 4a7d24c6664d568dc280ebc23b6bb60cd1ff6a05..88ff255cc7583c9a202335fafef7da25e7856cd6 100644 (file)
@@ -28,7 +28,7 @@ struct var_Foo: public Foo
 int blort(Foo& f)
 {
   return f->a;
-};
+}
 
 int main()
 {
index c9a80baa61716fdf9a22479831dabaab50419418..b26a88743bf3592f0aadd45764e08934a51938f9 100644 (file)
@@ -11,4 +11,4 @@ typedef int A[10];
 int main()
 {
    int* a1 = new A;
-};
+}
index 0628041751ca588fe22d63bcb6b91499473f4251..302acd5f044e09f5a32759537851e7f70f60c5b0 100644 (file)
@@ -21,7 +21,7 @@ public:
 void
 sub(foo f) {
    ;
-};
+}
 
 
 int main() {
index 3a671585b56aef7a8610511055a4d4c0b77a8ee5..9047067c81f7de7b7e624955c2afb78d31123e28 100644 (file)
@@ -9,7 +9,7 @@
 struct S { int  a; int  c; };
 int i = 3;
 S s = {6, i};
-S * the_s  () { return &s; };
+S * the_s  () { return &s; }
 int main ()
 {
   S * cls = the_s ();
index 017ce5dd4200a78aa3c243f69ac8e36d19347308..d80bae27e4b542c2da1a69066ebd45eb8877c4b0 100644 (file)
@@ -120,5 +120,5 @@ public:
 void Fixed_List::go_offleft() const
 {
     cursor_position = 0;// ERROR - 
-};
+}
 
index 3600fb274183b14c5efc5db5130af81429ceffa4..e089382a027a4086e05e7ab1b4f05b1108762c20 100644 (file)
@@ -19,7 +19,7 @@ void* new_test::operator new(size_t sz, int count, int type)
   p = new char[sz * count];
   ((new_test *)p)->type = type;
   return p;
-};
+}
 
 int main()
 {
@@ -27,4 +27,4 @@ int main()
   int count = 13;
 
   test = new(count, 1) new_test;
-};
+}
index e92c299960fcebdcf2ed7ca8a169b910387f2d4a..086a18ed7b6d533182e42e0462722ab5c44a8f4b 100644 (file)
@@ -4,13 +4,13 @@ extern "C" int printf( const char *, ...);
 
 class B {
 public:
-        B() { };
-        virtual ~B() { printf( "B::~B\n"); };
+        B() { }
+        virtual ~B() { printf( "B::~B\n"); }
 };
 
 class D : public B {
 public:
-        virtual ~D() { printf( "D::~D\n"); };
+        virtual ~D() { printf( "D::~D\n"); }
   void operator = ( int i) { this->~B(); }// ERROR - D has no ~B part to it
 };
 
@@ -21,4 +21,4 @@ main()
         B * pb = pd;
         delete pb;
         return 0;
-};
+}
index 6488da5be6d17c39075b2b995b5240ded06bd4fd..ad7f2e478c4cf6c7bf87dc5ba58a9e237b22c1e6 100644 (file)
@@ -9,7 +9,7 @@ struct S
 S* S::foo(){
   i = 0;
   return this;
-};
+}
 
 int S::i = 1;
 int main(void)
index 481fe2cb86587718403e6a0924a4b547f5a4cfc5..fea7ebf4589598717e4bc9c1a9633761af42589c 100644 (file)
@@ -4,7 +4,7 @@
 
 struct A{
   int i;
-  A::A():i(1){}
+  A () :i(1){}
   virtual void foo();
 }a;
 
index 7c7b5bc5ce750269d289a5786ac1f20c430c590a..3cd9bc86b1eb1af43504d7f3b27a46c27f798ecf 100644 (file)
@@ -26,4 +26,4 @@ int main () {
     return 0;
   }
   return 1;
-};
+}
index 8627100f2de0bab877747f4d0ad8c213ce59593d..4d677ba9e330c0c2caf386dda1bc23685a415039 100644 (file)
@@ -184,4 +184,4 @@ void super::operator++(void)
 
 int main(void)
 {
-};
+}
index 9cf550c126ed834b8ead7d13a4300185aaf00975..0756e2e90366f8381d94e7c87586dd08c1a1f9b5 100644 (file)
@@ -17,7 +17,7 @@ public:
 
 class bar_2 : public foo {
 public:
-    bar_2(int i) : foo(i) {};
+    bar_2(int i) : foo(i) {}
         int get_k() {return k;}
 };
 
index 21c3a1ee1a076391335145444c5c138530d99d73..c9d0fe9cb941acc5833c6e765e2c21544d569b1a 100644 (file)
@@ -16,4 +16,4 @@ public:
 
 void f(B* b) {
   b->setHandler(A::handlerFn); // ERROR - 
-};
+}
index 365eb8c09235d1b469f0a3c10bbae4a58c11821f..8e2a1713022621797ede36f82a1981316313638f 100644 (file)
@@ -1,6 +1,6 @@
 namespace N {
   int i;
-};
+}
 
 using namespace N;
 
index 12b4a453b9aa2dc26e0e3ef4e5bb2bc3f2f6dfee..d156c6f89246aaba9a63fbd904ef1dfa8c3d0a50 100644 (file)
@@ -72,4 +72,4 @@ int main(int argc, char **argv) {
   Sim_Event_Manager foo;
   foo.post_event();
   return fail;
-};
+}
index d960599450fefa2b86d0e151957af19b6562085d..372965060df1fb5b267540fa54b4e4710234ff92 100644 (file)
@@ -36,4 +36,4 @@ int main (int, char **) {
     }
     printf("PASS\n");
     return 0;
-};
+}
index 72f75b3bfb27e47b1118f002c3aa3ca487cfa1a1..226ac3a321fbc05f878e56314b180ad8b4249bc6 100644 (file)
@@ -82,13 +82,6 @@ return_foo ()
   return f;
 }
 
-foo
-return_named_foo () return f
-{
-  printf ("returning named foo\n");
-  return f;
-}
-
 foo
 foo_parm_returns_foo (foo f)
 {
@@ -132,12 +125,6 @@ warn_return_foo ()
   printf ("returning foo\n");
 }                              // WARNING - control reaches end
 
-foo
-nowarn_return_named_foo () return f
-{
-  printf ("returning named foo\n");
-}
-
 foo
 warn_foo_parm_returns_foo (foo f)
 {
@@ -155,7 +142,7 @@ main ()
   int k = return_sum (-69, 69);
   if (k != 0)
     abort_because ("wrong value returned");
-  foo f1 = return_named_foo ();
+  foo f1 = return_foo ();
   if (foo::si != 1)
     abort_because ("wrong number of foos");
   f1.i = 5;
index 5413d575652255aa2365d0a75a4185dce9132408..814604fcab935fe10f463d4d85b139eb1e8cfebd 100644 (file)
@@ -249,73 +249,73 @@ inline  int& operator >>=(int& a,  const Int &   b)
 //# 289 "../../../../libg++/etc/benchmarks/Int.h"
 
 
-inline  Int  operator -  (const Int &   a) return r(a)
-{ r.negate();  }
-inline  Int  operator ~  (const Int &   a) return r(a)
-{ r.complement();  }
-
-inline  Int  operator +  (const Int &   a, const Int &   b) return r(a)
-{ r += b.Int::val();  }
-inline  Int  operator -  (const Int &   a, const Int &   b) return r(a)
-{ r -= b.Int::val();  }
-inline  Int  operator *  (const Int &   a, const Int &   b) return r(a)
-{ r *= b.Int::val();  }
-inline  Int  operator /  (const Int &   a, const Int &   b) return r(a)
-{ r /= b.Int::val();  }
-inline  Int  operator %  (const Int &   a, const Int &   b) return r(a)
-{ r %= b.Int::val();  }
-inline  Int  operator << (const Int &   a, const Int &   b) return r(a)
-{ r <<= b.Int::val();  }
-inline  Int  operator >> (const Int &   a, const Int &   b) return r(a)
-{ r >>= b.Int::val();  }
-inline  Int  operator &  (const Int &   a, const Int &   b) return r(a)
-{ r &= b.Int::val();  }
-inline  Int  operator |  (const Int &   a, const Int &   b) return r(a)
-{ r |= b.Int::val();  }
-inline  Int  operator ^  (const Int &   a, const Int &   b) return r(a)
-{ r ^= b.Int::val();  }
-
-inline  Int  operator +  (const Int &   a, const int b) return r(a)
-{ r += b;  }
-inline  Int  operator -  (const Int &   a, const int b) return r(a)
-{ r -= b;  }
-inline  Int  operator *  (const Int &   a, const int b) return r(a)
-{ r *= b;  }
-inline  Int  operator /  (const Int &   a, const int b) return r(a)
-{ r /= b;  }
-inline  Int  operator %  (const Int &   a, const int b) return r(a)
-{ r %= b;  }
-inline  Int  operator << (const Int &   a, const int b) return r(a)
-{ r <<= b;  }
-inline  Int  operator >> (const Int &   a, const int b) return r(a)
-{ r >>= b;  }
-inline  Int  operator &  (const Int &   a, const int b) return r(a)
-{ r &= b;  }
-inline  Int  operator |  (const Int &   a, const int b) return r(a)
-{ r |= b;  }
-inline  Int  operator ^  (const Int &   a, const int b) return r(a)
-{ r ^= b;  }
-
-inline  Int  operator +  (const int a, const Int &   b) return r(a)
-{ r += b.Int::val();  }
-inline  Int  operator -  (const int a, const Int &   b) return r(a)
-{ r -= b.Int::val();  }
-inline  Int  operator *  (const int a, const Int &   b) return r(a)
-{ r *= b.Int::val();  }
-inline  Int  operator /  (const int a, const Int &   b) return r(a)
-{ r /= b.Int::val();  }
-inline  Int  operator %  (const int a, const Int &   b) return r(a)
-{ r %= b.Int::val();  }
-inline  Int  operator << (const int a, const Int &   b) return r(a)
-{ r <<= b.Int::val();  }
-inline  Int  operator >> (const int a, const Int &   b) return r(a)
-{ r >>= b.Int::val();  }
-inline  Int  operator &  (const int a, const Int &   b) return r(a)
-{ r &= b.Int::val();  }
-inline  Int  operator |  (const int a, const Int &   b) return r(a)
-{ r |= b.Int::val();  }
-inline  Int  operator ^  (const int a, const Int &   b) return r(a)
-{ r ^= b.Int::val();  }
+inline  Int  operator -  (const Int &   a) return r(a) // ERROR - 
+{ r.negate();  } // ERROR - 
+inline  Int  operator ~  (const Int &   a) return r(a) // ERROR - 
+{ r.complement();  } // ERROR - 
+
+inline  Int  operator +  (const Int &   a, const Int &   b) return r(a) // ERROR - 
+{ r += b.Int::val();  } // ERROR - 
+inline  Int  operator -  (const Int &   a, const Int &   b) return r(a) // ERROR - 
+{ r -= b.Int::val();  } // ERROR - 
+inline  Int  operator *  (const Int &   a, const Int &   b) return r(a) // ERROR - 
+{ r *= b.Int::val();  } // ERROR - 
+inline  Int  operator /  (const Int &   a, const Int &   b) return r(a) // ERROR - 
+{ r /= b.Int::val();  } // ERROR - 
+inline  Int  operator %  (const Int &   a, const Int &   b) return r(a) // ERROR - 
+{ r %= b.Int::val();  } // ERROR - 
+inline  Int  operator << (const Int &   a, const Int &   b) return r(a) // ERROR - 
+{ r <<= b.Int::val();  } // ERROR - 
+inline  Int  operator >> (const Int &   a, const Int &   b) return r(a) // ERROR - 
+{ r >>= b.Int::val();  } // ERROR - 
+inline  Int  operator &  (const Int &   a, const Int &   b) return r(a) // ERROR - 
+{ r &= b.Int::val();  } // ERROR - 
+inline  Int  operator |  (const Int &   a, const Int &   b) return r(a) // ERROR - 
+{ r |= b.Int::val();  } // ERROR - 
+inline  Int  operator ^  (const Int &   a, const Int &   b) return r(a) // ERROR - 
+{ r ^= b.Int::val();  } // ERROR - 
+
+inline  Int  operator +  (const Int &   a, const int b) return r(a) // ERROR - 
+{ r += b;  } // ERROR - 
+inline  Int  operator -  (const Int &   a, const int b) return r(a) // ERROR - 
+{ r -= b;  } // ERROR - 
+inline  Int  operator *  (const Int &   a, const int b) return r(a) // ERROR - 
+{ r *= b;  } // ERROR - 
+inline  Int  operator /  (const Int &   a, const int b) return r(a) // ERROR - 
+{ r /= b;  } // ERROR - 
+inline  Int  operator %  (const Int &   a, const int b) return r(a) // ERROR - 
+{ r %= b;  } // ERROR - 
+inline  Int  operator << (const Int &   a, const int b) return r(a) // ERROR - 
+{ r <<= b;  } // ERROR - 
+inline  Int  operator >> (const Int &   a, const int b) return r(a) // ERROR - 
+{ r >>= b;  } // ERROR - 
+inline  Int  operator &  (const Int &   a, const int b) return r(a) // ERROR - 
+{ r &= b;  } // ERROR - 
+inline  Int  operator |  (const Int &   a, const int b) return r(a) // ERROR - 
+{ r |= b;  } // ERROR - 
+inline  Int  operator ^  (const Int &   a, const int b) return r(a) // ERROR - 
+{ r ^= b;  } // ERROR - 
+
+inline  Int  operator +  (const int a, const Int &   b) return r(a) // ERROR - 
+{ r += b.Int::val();  } // ERROR - 
+inline  Int  operator -  (const int a, const Int &   b) return r(a) // ERROR - 
+{ r -= b.Int::val();  } // ERROR - 
+inline  Int  operator *  (const int a, const Int &   b) return r(a) // ERROR - 
+{ r *= b.Int::val();  } // ERROR - 
+inline  Int  operator /  (const int a, const Int &   b) return r(a) // ERROR - 
+{ r /= b.Int::val();  } // ERROR - 
+inline  Int  operator %  (const int a, const Int &   b) return r(a) // ERROR - 
+{ r %= b.Int::val();  } // ERROR - 
+inline  Int  operator << (const int a, const Int &   b) return r(a) // ERROR - 
+{ r <<= b.Int::val();  } // ERROR - 
+inline  Int  operator >> (const int a, const Int &   b) return r(a) // ERROR - 
+{ r >>= b.Int::val();  } // ERROR - 
+inline  Int  operator &  (const int a, const Int &   b) return r(a) // ERROR - 
+{ r &= b.Int::val();  } // ERROR - 
+inline  Int  operator |  (const int a, const Int &   b) return r(a) // ERROR - 
+{ r |= b.Int::val();  } // ERROR - 
+inline  Int  operator ^  (const int a, const Int &   b) return r(a) // ERROR - 
+{ r ^= b.Int::val();  } // ERROR - 
 
 
 
@@ -588,73 +588,73 @@ inline  char& operator >>=(char& a,  const Char &   b)
 //# 291 "../../../../libg++/etc/benchmarks/Char.h"
 
 
-inline  Char  operator -  (const Char &   a) return r(a)
-{ r.negate();  }
-inline  Char  operator ~  (const Char &   a) return r(a)
-{ r.complement();  }
-
-inline  Char  operator +  (const Char &   a, const Char &   b) return r(a)
-{ r += b.Char::val();  }
-inline  Char  operator -  (const Char &   a, const Char &   b) return r(a)
-{ r -= b.Char::val();  }
-inline  Char  operator *  (const Char &   a, const Char &   b) return r(a)
-{ r *= b.Char::val();  }
-inline  Char  operator /  (const Char &   a, const Char &   b) return r(a)
-{ r /= b.Char::val();  }
-inline  Char  operator %  (const Char &   a, const Char &   b) return r(a)
-{ r %= b.Char::val();  }
-inline  Char  operator << (const Char &   a, const Char &   b) return r(a)
-{ r <<= b.Char::val();  }
-inline  Char  operator >> (const Char &   a, const Char &   b) return r(a)
-{ r >>= b.Char::val();  }
-inline  Char  operator &  (const Char &   a, const Char &   b) return r(a)
-{ r &= b.Char::val();  }
-inline  Char  operator |  (const Char &   a, const Char &   b) return r(a)
-{ r |= b.Char::val();  }
-inline  Char  operator ^  (const Char &   a, const Char &   b) return r(a)
-{ r ^= b.Char::val();  }
-
-inline  Char  operator +  (const Char &   a, const char b) return r(a)
-{ r += b;  }
-inline  Char  operator -  (const Char &   a, const char b) return r(a)
-{ r -= b;  }
-inline  Char  operator *  (const Char &   a, const char b) return r(a)
-{ r *= b;  }
-inline  Char  operator /  (const Char &   a, const char b) return r(a)
-{ r /= b;  }
-inline  Char  operator %  (const Char &   a, const char b) return r(a)
-{ r %= b;  }
-inline  Char  operator << (const Char &   a, const char b) return r(a)
-{ r <<= b;  }
-inline  Char  operator >> (const Char &   a, const char b) return r(a)
-{ r >>= b;  }
-inline  Char  operator &  (const Char &   a, const char b) return r(a)
-{ r &= b;  }
-inline  Char  operator |  (const Char &   a, const char b) return r(a)
-{ r |= b;  }
-inline  Char  operator ^  (const Char &   a, const char b) return r(a)
-{ r ^= b;  }
-
-inline  Char  operator +  (const char a, const Char &   b) return r(a)
-{ r += b.Char::val();  }
-inline  Char  operator -  (const char a, const Char &   b) return r(a)
-{ r -= b.Char::val();  }
-inline  Char  operator *  (const char a, const Char &   b) return r(a)
-{ r *= b.Char::val();  }
-inline  Char  operator /  (const char a, const Char &   b) return r(a)
-{ r /= b.Char::val();  }
-inline  Char  operator %  (const char a, const Char &   b) return r(a)
-{ r %= b.Char::val();  }
-inline  Char  operator << (const char a, const Char &   b) return r(a)
-{ r <<= b.Char::val();  }
-inline  Char  operator >> (const char a, const Char &   b) return r(a)
-{ r >>= b.Char::val();  }
-inline  Char  operator &  (const char a, const Char &   b) return r(a)
-{ r &= b.Char::val();  }
-inline  Char  operator |  (const char a, const Char &   b) return r(a)
-{ r |= b.Char::val();  }
-inline  Char  operator ^  (const char a, const Char &   b) return r(a)
-{ r ^= b.Char::val();  }
+inline  Char  operator -  (const Char &   a) return r(a) // ERROR - 
+{ r.negate();  } // ERROR - 
+inline  Char  operator ~  (const Char &   a) return r(a) // ERROR - 
+{ r.complement();  } // ERROR - 
+
+inline  Char  operator +  (const Char &   a, const Char &   b) return r(a) // ERROR - 
+{ r += b.Char::val();  } // ERROR - 
+inline  Char  operator -  (const Char &   a, const Char &   b) return r(a) // ERROR - 
+{ r -= b.Char::val();  } // ERROR - 
+inline  Char  operator *  (const Char &   a, const Char &   b) return r(a) // ERROR - 
+{ r *= b.Char::val();  } // ERROR - 
+inline  Char  operator /  (const Char &   a, const Char &   b) return r(a) // ERROR - 
+{ r /= b.Char::val();  } // ERROR - 
+inline  Char  operator %  (const Char &   a, const Char &   b) return r(a) // ERROR - 
+{ r %= b.Char::val();  } // ERROR - 
+inline  Char  operator << (const Char &   a, const Char &   b) return r(a) // ERROR - 
+{ r <<= b.Char::val();  } // ERROR - 
+inline  Char  operator >> (const Char &   a, const Char &   b) return r(a) // ERROR - 
+{ r >>= b.Char::val();  } // ERROR - 
+inline  Char  operator &  (const Char &   a, const Char &   b) return r(a) // ERROR - 
+{ r &= b.Char::val();  } // ERROR - 
+inline  Char  operator |  (const Char &   a, const Char &   b) return r(a) // ERROR - 
+{ r |= b.Char::val();  } // ERROR - 
+inline  Char  operator ^  (const Char &   a, const Char &   b) return r(a) // ERROR - 
+{ r ^= b.Char::val();  } // ERROR - 
+
+inline  Char  operator +  (const Char &   a, const char b) return r(a) // ERROR - 
+{ r += b;  } // ERROR - 
+inline  Char  operator -  (const Char &   a, const char b) return r(a) // ERROR - 
+{ r -= b;  } // ERROR - 
+inline  Char  operator *  (const Char &   a, const char b) return r(a) // ERROR - 
+{ r *= b;  } // ERROR - 
+inline  Char  operator /  (const Char &   a, const char b) return r(a) // ERROR - 
+{ r /= b;  } // ERROR - 
+inline  Char  operator %  (const Char &   a, const char b) return r(a) // ERROR - 
+{ r %= b;  } // ERROR - 
+inline  Char  operator << (const Char &   a, const char b) return r(a) // ERROR - 
+{ r <<= b;  } // ERROR - 
+inline  Char  operator >> (const Char &   a, const char b) return r(a) // ERROR - 
+{ r >>= b;  } // ERROR - 
+inline  Char  operator &  (const Char &   a, const char b) return r(a) // ERROR - 
+{ r &= b;  } // ERROR - 
+inline  Char  operator |  (const Char &   a, const char b) return r(a) // ERROR - 
+{ r |= b;  } // ERROR - 
+inline  Char  operator ^  (const Char &   a, const char b) return r(a) // ERROR - 
+{ r ^= b;  } // ERROR - 
+
+inline  Char  operator +  (const char a, const Char &   b) return r(a) // ERROR - 
+{ r += b.Char::val();  } // ERROR - 
+inline  Char  operator -  (const char a, const Char &   b) return r(a) // ERROR - 
+{ r -= b.Char::val();  } // ERROR - 
+inline  Char  operator *  (const char a, const Char &   b) return r(a) // ERROR - 
+{ r *= b.Char::val();  } // ERROR - 
+inline  Char  operator /  (const char a, const Char &   b) return r(a) // ERROR - 
+{ r /= b.Char::val();  } // ERROR - 
+inline  Char  operator %  (const char a, const Char &   b) return r(a) // ERROR - 
+{ r %= b.Char::val();  } // ERROR - 
+inline  Char  operator << (const char a, const Char &   b) return r(a) // ERROR - 
+{ r <<= b.Char::val();  } // ERROR - 
+inline  Char  operator >> (const char a, const Char &   b) return r(a) // ERROR - 
+{ r >>= b.Char::val();  } // ERROR - 
+inline  Char  operator &  (const char a, const Char &   b) return r(a) // ERROR - 
+{ r &= b.Char::val();  } // ERROR - 
+inline  Char  operator |  (const char a, const Char &   b) return r(a) // ERROR - 
+{ r |= b.Char::val();  } // ERROR - 
+inline  Char  operator ^  (const char a, const Char &   b) return r(a) // ERROR - 
+{ r ^= b.Char::val();  } // ERROR - 
 
 
 
index c222ea1e8887800fb69f11e440980cdf59fac2d8..f4e7f9341f0beaf77b745c8d9b38c2e411dd83ca 100644 (file)
@@ -4,7 +4,7 @@
 extern "C" 
 {
   int printf(const char *, ...);
-};
+}
 
 
 void Munge(int& x) 
index 62dffe9ff8eda0cf9387de42054d9e21c16f77d4..4e9e602a4bb1dace7292f46d00eddb560d14a380 100644 (file)
@@ -19,7 +19,7 @@
 extern "C" 
 {
    int printf(const char*, ...);
-};
+}
 
 
 
index 23ceaf477ab7140dcb99a6f5ec56ade52080e72a..f83baf2b06bdc1e0e4bf814f6983eaf72b00ac4b 100644 (file)
@@ -5,7 +5,7 @@
 //# 1 "GctSymbol.GctSymbol.CHMap.cc"
 // This may look like C code, but it is really -*- C++ -*-
 /*
-Copyright (C) 1988, 2000 Free Software Foundation
+Copyright (C) 1988, 2000, 2002 Free Software Foundation
     written by Doug Lea (dl@rocky.oswego.edu)
 
 This file is part of the GNU C++ Library.  This library is free
@@ -1602,74 +1602,74 @@ inline void String:: operator +=(char y)
 
 
 
-inline String operator + (const String& x, const String& y) return r;
+inline String operator + (const String& x, const String& y) return r; // ERROR - 
 {
-  cat(x, y, r);
+  cat(x, y, r); // ERROR - 
 }
 
-inline String operator + (const String& x, const SubString& y) return r;
+inline String operator + (const String& x, const SubString& y) return r; // ERROR - 
 {
-  cat(x, y, r);
+  cat(x, y, r); // ERROR - 
 }
 
-inline String operator + (const String& x, const char* y) return r;
+inline String operator + (const String& x, const char* y) return r; // ERROR - 
 {
-  cat(x, y, r);
+  cat(x, y, r); // ERROR - 
 }
 
-inline String operator + (const String& x, char y) return r;
+inline String operator + (const String& x, char y) return r; // ERROR - 
 {
-  cat(x, y, r);
+  cat(x, y, r); // ERROR - 
 }
 
-inline String operator + (const SubString& x, const String& y) return r;
+inline String operator + (const SubString& x, const String& y) return r; // ERROR - 
 {
-  cat(x, y, r);
+  cat(x, y, r); // ERROR - 
 }
 
-inline String operator + (const SubString& x, const SubString& y) return r;
+inline String operator + (const SubString& x, const SubString& y) return r; // ERROR - 
 {
-  cat(x, y, r);
+  cat(x, y, r); // ERROR - 
 }
 
-inline String operator + (const SubString& x, const char* y) return r;
+inline String operator + (const SubString& x, const char* y) return r; // ERROR - 
 {
-  cat(x, y, r);
+  cat(x, y, r); // ERROR - 
 }
 
-inline String operator + (const SubString& x, char y) return r;
+inline String operator + (const SubString& x, char y) return r; // ERROR - 
 {
-  cat(x, y, r);
+  cat(x, y, r); // ERROR - 
 }
 
-inline String operator + (const char* x, const String& y) return r;
+inline String operator + (const char* x, const String& y) return r; // ERROR - 
 {
-  cat(x, y, r);
+  cat(x, y, r); // ERROR - 
 }
 
-inline String operator + (const char* x, const SubString& y) return r;
+inline String operator + (const char* x, const SubString& y) return r; // ERROR - 
 {
-  cat(x, y, r);
+  cat(x, y, r); // ERROR - 
 }
 
-inline String reverse(const String& x) return r;
+inline String reverse(const String& x) return r; // ERROR - 
 {
-  r.rep = Sreverse(x.rep, r.rep);
+  r.rep = Sreverse(x.rep, r.rep); // ERROR - 
 }
 
-inline String upcase(const String& x) return r;
+inline String upcase(const String& x) return r; // ERROR - 
 {
-  r.rep = Supcase(x.rep, r.rep);
+  r.rep = Supcase(x.rep, r.rep); // ERROR - 
 }
 
-inline String downcase(const String& x) return r;
+inline String downcase(const String& x) return r; // ERROR - 
 {
-  r.rep = Sdowncase(x.rep, r.rep);
+  r.rep = Sdowncase(x.rep, r.rep); // ERROR - 
 }
 
-inline String capitalize(const String& x) return r;
+inline String capitalize(const String& x) return r; // ERROR - 
 {
-  r.rep = Scapitalize(x.rep, r.rep);
+  r.rep = Scapitalize(x.rep, r.rep); // ERROR - 
 }
 
 //# 883 "/projects/gnu-cygnus/gnu-cygnus-8/common/g++-include/String.h"
index b238171ba5ffd1e8ca83eba4e0f6d62fee206e6c..ceea3bf963e5e1e05bae5b73ed4378810454d3b0 100644 (file)
@@ -10,7 +10,7 @@ public:
 template<class SP, class CB> SP& call_dummy(SP* sp, CB cb) {
   sp->dummy(cb);
   return *sp;
-};
+}
 
 class A {
 public:
index 800618ff6c682e17f29d1cfbe42b6b5ba1804c2f..9a352301c7ef91e768000e6df339a344bf63e9f9 100644 (file)
@@ -13,7 +13,7 @@ private:
 
 int Q::g() {
   return (kp->f)(42);
-};
+}
 
 
 int main () {
index d49189bfbe189167d22f4908519467f8a17d222f..a4b1ba3d958c476564bbcc682ec00cab6c02dc1a 100644 (file)
@@ -7,6 +7,6 @@
 namespace hei {
   class CSomeClass {};
   extern CSomeClass SomeClass;
-};
+}
 
-hei::CSomeClass hei::CSomeClass; // ERROR - should be hei::SomeClass
+hei::CSomeClass hei::CSomeClass; // ERROR - should be hei::SomeClass - XFAIL *-*-*
index 842ed090bcc62d34317eeec69809ab968592d582..dbffae1b9af8c4a4aafdb27a4f21e4b79120fff4 100644 (file)
@@ -2,7 +2,7 @@
 
 namespace N {
   template <class T> struct S;
-};
+}
 
 void f()
 {
index 76d3d70db387b60120f8f3ddb8aeb938bb30e6b4..9ec2adfe8558f16fd6a3a0d7ce69251a07d17dd0 100644 (file)
@@ -1,5 +1,5 @@
 //Build don't link:
-namespace x { };
+namespace x { }
 
 void f(int);
 
index 8d1fdd7e2ac58c7ab89f01f4043abc38c0970b1a..2357c5f01f9a3c838bc4e87854b4a628d983869a 100644 (file)
@@ -4,7 +4,7 @@ namespace foo
   class c
   {
   };
-};
+}
 
 int
 foo::c:fn ()  // ERROR - syntax error
index 760be469dc8805f1f7cc210177e6662f84ff9c29..9d5367995cf2ee419aedf1172d28409d123142a8 100644 (file)
@@ -6,10 +6,10 @@
 namespace N {
   template <class T> void f () { }
   template <class T> struct A { friend void f<T>(); };
-};
+}
 
 namespace M {
   struct B;
-};
+}
 
 struct M::B: public N::A<int> { };
index 9dc7a396a7efcab9bd6fa13209a058ca6092d464..d9b487bc92184f832301ebc22aa8183ca800089c 100644 (file)
@@ -23,7 +23,7 @@ int main()
   X::Y<int> z;
   if (z.f(4) != 1)
     return 1;
-  z.template g<long>();
+  z.g<long>();
 
   Y<int> z1;
   if (z1.f(5) != 2)
index 324b4d22a5970d3d58b2cf92c44ffe0b4db02ce7..f0137b4cffe6d6b2b6235f51b5c87bb7d1b367fa 100644 (file)
@@ -15,7 +15,7 @@ namespace A {
       template <>
          const unsigned B<int,int>::count = 2; // ERROR - duplicate init
    }
-};
+}
 
 int
 main()
index 547ae3101fd88d53f74ac7be47baaf2ba25e3063..e664ccde5dfd678c2548871b482275a0f7aefe58 100644 (file)
@@ -3,8 +3,8 @@
 // Build don't link:
 
 namespace standard 
-{ void print(int) {};
-  void dump(int)  {};
+{ void print(int) {}
+  void dump(int)  {}
 }
 namespace A { using standard::print; }
 namespace B { using namespace standard; }
index 6cb5c9ec38572757d5be5fe8b9be553fc9aea592..9ef5131e8750d7810d9005d3a83ab546a168eba4 100644 (file)
@@ -1,5 +1,5 @@
 // Build don't link:
-// Copyright (C) 1999, 2000 Free Software Foundation
+// Copyright (C) 1999, 2000, 2002 Free Software Foundation
 
 // by Alexandre Oliva <oliva@lsd.ic.unicamp.br>
 
@@ -7,7 +7,7 @@
 
 // Special g++ Options: -Wno-deprecated
 
-inline int bar () return r {}
+inline int bar () return r {} // ERROR - 
 
 int foo () {
   return bar ();
index f54d55c7255da96642b4e1803256e37190b76bb2..092e4cd5747707b537c0f164b44d87c6471bcfee 100644 (file)
@@ -1,5 +1,5 @@
 // Build don't link:
-// Copyright (C) 1999, 2000 Free Software Foundation
+// Copyright (C) 1999, 2000, 2002 Free Software Foundation
 
 // by Alexandre Oliva <oliva@lsd.ic.unicamp.br>
 
@@ -7,7 +7,7 @@
 
 // Special g++ Options: -O1 -Wno-deprecated
 
-inline int bar () return r {}
+inline int bar () return r {} // ERROR - 
 
 int& foo (int& x) {
   bar ();
index 75f3a6191a386d667935fd9f81af3a9d52940901..7cf472fb980d7f7a2122175aead646816c49b87d 100644 (file)
@@ -1,11 +1,11 @@
 // Build don't link:
 
-struct A {
+struct A { // ERROR - inaccessible
   static int i;
 };
 
 struct B : private A { };
 
 struct C : public B {
-  int f () { return A::i; }
+  int f () { return A::i; } // ERROR - context
 };
index ab076f2af383c2ac8b05de29465a84f392e0ea5d..e824850a44aafa35df77fb51e6bc7542564473f6 100644 (file)
@@ -5,16 +5,16 @@ int count = 0;
 double foo () {
   count++;
   return 0;
-};
+}
 
 double bar () {
   const double x[1] = { foo() };
   return x[0];
-};
+}
 
 int main () 
 {
   bar();
   if (count != 1)
     return 1;
-};
+}
index f7caa2f00badf7ba85dcf77a41cdbb3b64a88f8d..a4734122641500f3d6aad2794d18f32075a49217 100644 (file)
@@ -1,6 +1,6 @@
 class A
 {
-        enum B { ONE, TWO, THREE };
+  enum B { ONE, TWO, THREE }; // ERROR - private
 };
 
-class A::B; // ERROR - A::B is not a class type
+class A::B; // ERROR - A::B is not a class type, context
index 535a6a2d6306aa1162a37d8dff4a760f87e465ae..6b78b2f8b7fb467f85e2e84f2b763e1e29ccd764 100644 (file)
@@ -18,4 +18,4 @@ struct string
   max_size() const { return size; }
 };
 
-template string <char>;
+template struct string <char>;
index 2f471fb866f99b5e67ccb2cdc277bde091aefe58..6c9e1a1c08417b27ca8926db943d8823e252b67e 100644 (file)
@@ -11,6 +11,6 @@ X::x()
 {                              // ERROR - 
 }
 
-X::~x()
-{                              // ERROR - 
+X::~x()                         // ERROR - 
+{                              
 }
index d86a6bb3f66d6baddda5ab2900691dc413cc3647..cedaa5041bb95d0f9f3b06ec3f61d496d8562d05 100644 (file)
@@ -4,4 +4,4 @@ struct T {
   struct S __attribute__ ((packed)) { // ERROR - parse error
     int i;                            
   };
-}; // ERROR - parse error
+};
index f79b00a9cc7518e458090d84e15604338f3d6eb6..8b3efccefedaea8adeea7e80de8550a14f7c44e6 100644 (file)
@@ -4,7 +4,7 @@
 
 namespace std {
   const int __stl_chunk_size = 7;
-};
+}
 
 int main ()
 {
index 98a7c462d426873383290175aec325e33a5df512..00086d0035fe9d47a148742978b8c840789fa674 100644 (file)
@@ -1,6 +1,6 @@
 // Build don't link:
 
-// Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+// Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 22 Apr 1999 <nathan@acm.org>
 // derived from a bug report by <rch@larissa.sd.bi.ruhr-uni-bochum.de>
 // http://gcc.gnu.org/ml/gcc-bugs/1999-04n/msg00631.html
@@ -26,12 +26,12 @@ struct B {
   struct A::fink {    // ERROR - no such member
   int m;
   };
-  struct A::Z {       // ERROR XFAIL - A::Z not a member of B
+  struct A::Z {       // ERROR - A::Z not a member of B XFAIL 
     int m;
   };
   int m;
   int n;
-  struct ::Q {        // ERROR XFAIL - ::Q not a member of B
+  struct ::Q {        // ERROR - ::Q not a member of B XFAIL 
     int m;
   };
   int A::fn() {       // ERROR - A::fn not a member of B
@@ -66,7 +66,7 @@ namespace NMS
   int N::fn() {       // ERROR - N::fn not a member of NMS
     return 0;
   }
-  struct N::F {       // ERROR XFAIL - N::F not a member of NMS
+  struct N::F {       // ERROR - N::F not a member of NMS XFAIL 
     int i;
   };
 }
index cb5a6daeae1f8040b9eb249d1459b377b7daddba..e4a27a39bc9d00c778d7e760496c61fa6be9a452 100644 (file)
@@ -1,15 +1,18 @@
 // Build don't link:
 
-// Copyright (C) 2000 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 7 Jan 2001 <nathan@codesourcery.com>
 
+// As of G++ 3.4, we no longer attempt to detect dependencies; the
+// standard does not require that we do.
+
 // Bug 1038. Default args on class members can produce circular dependencies.
 // Make sure we spot them, and don't depend on a particular ordering.
 
 struct A
 {
-  static int Foo (int = Baz ());    // WARNING - circular
-  static int Baz (int = Foo ());    // WARNING - circular
+  static int Foo (int = Baz ()); // ERROR - 
+  static int Baz (int = Foo ());
 };
 
 struct Test
@@ -21,7 +24,7 @@ struct Test
 struct B
 {
   static int Bar (int = Foo (1));
-  static int Foo (int = Baz ());
+  static int Foo (int = Baz ()); // ERROR - 
   static int Baz (int = Foo (1));
 };
 
index 7188209cb224fc2171b8cdd05e9c231edca326a3..42ddcb8f4d44c7d426a9469a91d64dd710a9e361 100644 (file)
@@ -1,23 +1,26 @@
 // Build don't link:
 // Special g++ options: -pedantic-errors -ansi -w
 
-// Copyright (C) 2000 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 7 Jan 2001 <nathan@codesourcery.com>
 
+// As of G++ 3.4, we no longer attempt to detect dependencies; the
+// standard does not require that we do.
+
 // Bug 1038. Default args on class members can produce circular dependencies.
 // Make sure we spot them, and don't depend on a particular ordering.
 
 struct AA
 {
-  static int Foo (int = Baz ());    // ERROR - candidate
-  static int Baz (int = Foo ());    // ERROR - candidate
+  static int Foo (int = Baz ()); // ERROR - not yet been parsed
+  static int Baz (int = Foo ());
 };
 
 int main ()
 {
-  AA::Foo ();   // ERROR - no candidate
+  AA::Foo ();
   AA::Foo (1);
-  AA::Baz ();   // ERROR - no candidate
+  AA::Baz ();
   AA::Baz (1);
   
   return 0;
index 3f9803c39a837864aa53b48bc9b289f4e7cab5e2..18ab8b05821568e70937e7f54fd922f6e50b9800 100644 (file)
@@ -14,4 +14,4 @@ main ()
 {
   X* p = new (bar) X;
   p->~foo();
-};
+}
index c8f7babb0648fed1cad67d979e872852b916def9..78bf613eefd93b68b022f16f3d93006a9ba1fc7d 100644 (file)
@@ -31,7 +31,7 @@ T f () {
 }
 
 void g (S) {
-};
+}
 
 int main ()
 {
index f5e9a581faf98d97c83849be667089d3532e5cab..1bdccbd607ec036622eb270133b3125e1abaad64 100644 (file)
@@ -8,8 +8,8 @@ struct S; // ERROR - forward ref
 
 void f(S);            // ok
 void f(S s) {}        // ERROR - incomplete type
-void j (int){};       // ok
-void k (){};          // ok
+void j (int){}        // ok
+void k (){}           // ok
 void q (void){}       // ok
 void t (void t);      // ERROR - incomplete
 void r (void, ...);   // ERROR - incomplete
index b168e013db13a9549b78e786993d43c624e75d78..561181bbe75db957ec02908441aabc82bb3219e9 100644 (file)
@@ -7,7 +7,7 @@ namespace N {
   void f () {
     i = 3;
   }
-};
+}
 
 int i;
 
index e355f2d392a12d94071176f935f3ac0a91a78d7b..12663e701eb2b7891b5017f75ad01494017f3619 100644 (file)
@@ -6,10 +6,10 @@ typedef int B;
 struct A
 {
   int B;
-  operator B *();
+  operator B *(); // ERROR - 
 };
 
-A::operator B * ()
+A::operator B * () // ERROR - 
 {
   return 0;
 }
@@ -48,7 +48,7 @@ struct G
 };
 
 typedef double H;
-G::operator H * ()             // ERROR - mismatch
+G::operator H * ()
 {
   return 0;
 }
index 25bab87a24986a52661014784ce8ea6827bc2203..2a8065ec482cf73cafb587dccc86a7295cded441 100644 (file)
@@ -13,7 +13,7 @@ inline bool operator!=(const c& x, const c& y)
 {
   return x.a != y.a;
 }
-};
+}
 
 void foo();
 
index 1246e7837728a1b19c472088d14b2b3242f3639a..6b0211c395e0ccf98094003d0c2bf612c3401949 100644 (file)
@@ -1,6 +1,6 @@
 // Build don't link:
 // 
-// Copyright (C) 2000 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 10 Aug 2000 <nathan@codesourcery.com>
 
 // bug 381. We gave slightly different diagnostics, when binding an rvalue to
@@ -8,7 +8,7 @@
 
 namespace A { 
 template <class T> void f(T) {}
-};
+}
 void (* &h)(int) = A::f<int>;       // ERROR - rvalue to non-const
 void (*const volatile &i)(int) = A::f<int>;  // ERROR - rvalue to volatile
 void (*const &j)(int) = A::f<int>;
index c597844ae2e5e7e5b18cd8b4cfb8aedd559c4c88..1a45fe385e459d4bd28697906b2c38eb4ecd60d9 100644 (file)
@@ -3,13 +3,13 @@
 
 struct S
 {
-  int j; // ERROR - member
-  int i[2]; // ERROR - member
+  int j; // ERROR - non-static data member
+  int i[2]; // ERROR - non-static data member
 };
 
 void f ()
 {
-  sizeof (S::j); // ERROR - non-static data member
-  sizeof (S::i[0]); //  ERROR - non-static data member
+  sizeof (S::j); // ERROR - used here
+  sizeof (S::i[0]); //  ERROR - used here
 }
 
index dc36519d0506c12770291c4e99713d052290c53d..6761404859029329027d37ce2b3888aea827a117 100644 (file)
@@ -9,4 +9,4 @@ namespace std {
 void f () {
   memcmp (0, 0, 0);
 }
-};
+}
index ab46d8f59146f6763624d43cf174d40f536bb250..6b0df69f16aac61c1a93d158bc0af84ea6d546c7 100644 (file)
@@ -11,4 +11,4 @@ void f(unsigned int n) {
   int x[n];
 
   asize(x); // ERROR - no matching function
-};
+}
index 05bef96983660a328fc2cb082a5a07552726a850..5334cd30c5c768a5c5d9ef7a2cac6ebc1631408b 100644 (file)
@@ -50,6 +50,7 @@ public:
                                : MetaClassGeneric( TypeIDInit<T>::info ) {}
 };
 
+template <>
 class MetaClass<UUId>
 : public NameInfo<UUId>
 {
index af6ef5b95cd36560a0f031971de1e845d1a18902..80864db73cde738e819fb85a5189e6e4c4cc1032 100644 (file)
@@ -8,6 +8,6 @@ template <class T> struct A
 
 template<class T> struct C
 {
-  friend typename A<T>::B; // ERROR - struct is required
+  friend typename A<T>::B; // ERROR - `typename' not allowed
 };
 
index e324491e4b11c756a43d6604609cec7764b9eb11..802e01d0849f2d9483b759520c9159c7dd56ffde 100644 (file)
@@ -7,7 +7,7 @@ struct S {
   struct Y {};
 
   template <int U>
-  friend struct S<U>::X; // ERROR - typename as friend
+  friend struct S<U>::X;
 
   template <int U>
   friend typename S<U>::Y; // ERROR - typename as friend
@@ -15,7 +15,7 @@ struct S {
 
 struct T {
   template <int T>
-  friend struct S<T>::X; // ERROR - typename as friend
+  friend struct S<T>::X;
 };
 
 struct U {
index 10d23a03d6a9b2a6a1a9b8a18d26bd56235bed48..387b5f545719603b43c829402b74fc5b7ffcb60f 100644 (file)
@@ -1,13 +1,13 @@
 // Build don't link:
 // 
-// Copyright (C) 2000 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 5 Sept 2000 <nathan@codesourcery.com>
 
 // bug 147. We ICE'd on an unprocessed LOOKUP_EXPR during tsubsting
 
 namespace EManip {
     template <class T> void do_assign(T* d);  // ERROR - candidate
-};
+}
 template <class T> void do_assign(T* d);    // ERROR - candidate
 
 template <class T>
index 7b632a60a1d1bdb2f73f4f9686e16231379fb305..2e66d5d92c38bc4509cb26ff4deb6df64005b852 100644 (file)
@@ -1,6 +1,6 @@
 // Build don't link:
 
-// Copyright (C) 2000 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 11 Jan 2001 <nathan@codesourcery.com>
 
 // Bug 1506. We ICE'd on a struct definition inside a template parms.
@@ -10,3 +10,4 @@
 
 template<class T =
 struct W {};    // ERROR - inside template parms
+> struct S{};
index 6a68bad8251826e67eac028173f964fb79daaa89..facd0b67158458dbbfc713118ebbdd33b5b2c9d2 100644 (file)
@@ -21,4 +21,4 @@ template <>
 void bar<2>::foo (Point<2> p) {
   const int dim = 2;
   Point<dim> q = p;
-};
+}
index 6bb1125259c73d93bae55aad6814e4804aa9448f..b267409974bb7afd46060cefa327d4d86623826d 100644 (file)
@@ -8,7 +8,7 @@ template <class T, class U> class foo2;
 
 struct bar {
   template <class T, class U>
-  bar(int i = foo1<T>::baz, // ok
+  bar(int i = foo1<T>::baz, // gets bogus error - XFAIL *-*-*
       int j = int(foo2<T, U>::baz), // ok
       int k = foo2<T, U>::baz) {} // gets bogus error - before > - XFAIL *-*-*
 };
index 154587b0ac90a30fae910b476e05b9958597cb71..102ab290edcf056ab2793242b3301f8ccb65a650 100644 (file)
@@ -15,8 +15,8 @@ public:
   void sz(X s) { sss = s; }
 };
 
-float TC<float>::sss;
-long TC<long>::sss;
+template <> float TC<float>::sss = 0.0;
+template <> long TC<long>::sss = 0;
 
 TC<long> xjj(1,2);
 
index 1a37eebfc23f2c6a1fdafb5c14b3c628015c847e..a4c5f1643c1c110d12caef92a48879e76609b07f 100644 (file)
@@ -8,8 +8,8 @@ public:
 };
 
 
-long TC<long>::sss;
-float TC<float>::sss;
+template <> long TC<long>::sss = 0;
+template <> float TC<float>::sss = 0.0;
 
 TC<long> xjj(1,2);
 
index 51bb4474c8fefcce696594b104844286ef44e559..25f269ce89d39b38ddc8d4fa097d090a7a98ae17 100644 (file)
@@ -8,8 +8,8 @@ public:
   void syy(X syarg) { sss = syarg; }
 };
 
-long TC<long>::sss;
-float TC<float>::sss;
+template <> long TC<long>::sss = 0;
+template <> float TC<float>::sss = 0.0;
 
 TC<long> xjj(1,2);
 
index 47dcbfa6761311de6e2cc7a6eea93dec0ebff289..d2ea2016d7d7c362435f3a2e96b6a88f74ba41c2 100644 (file)
@@ -8,7 +8,7 @@ int f()
       E e;
       e = a;
       return (int) e;
-    };
+    }
   };
 
   S s;
index 820da3d62bc519a9fd6a45449365e448a81395ae..03355a7639fcfc812ef0374aa3515cc1e82a3092 100644 (file)
@@ -16,5 +16,5 @@ void S<char*>::foo<int>(int) {}
 int main()
 {
   S<char*> s;
-  s.template foo<int>(3.0);
+  s.foo<int>(3.0);
 }
index 900ba1157e54f5e2f73d23ef2122ab9b2fb1fd91..54f0b6c2270f2f96cdaa6046115004828e39d3a1 100644 (file)
@@ -11,7 +11,7 @@ struct S
 
 int main()
 {
-  double d = S<int>::template foo<char>(3.3);
+  double d = S<int>::foo<char>(3.3);
 
   return (d >= 3.1);
 }
index 048a3565be8c11b4cec87aaf52c1ef54b6e0c203..d9d3b07322bdab954b959e9f4ba023b165a9de29 100644 (file)
@@ -4,6 +4,6 @@ template <class T>
 void foo(T t);
 
 template <>
-void foo(int) {};
+void foo(int) {}
 
 void foo(int) {}
index e39a27bc501e080f5c0a74cb7a09fa0d985a06a1..1aee1317514d565391833b0316ec9982a0bf88d5 100644 (file)
@@ -13,5 +13,5 @@ void S::foo<int>(int i) { }
 int main()
 {
   S s;
-  s.template foo<int>(3.0);
+  s.foo<int>(3.0);
 }
index c84eebcc4289a62060cf0e7b9b09b2a9a65a30d3..23c8d276b14a7280ca16b78b7c0dadd38dbc5d4c 100644 (file)
@@ -12,4 +12,4 @@ class bug {
 };
 template <class X> 
 template <>                    // ERROR - invalid specialization
-class bug<X>::a<char> {};      // ERROR -  ""
+class bug<X>::a<char> {};      
index c53982daa81998283e4ddb18079e95147e9edada..2cbdeab0cb65a6ba6973f5b41b2e4ffe280ad491 100644 (file)
@@ -10,7 +10,7 @@ struct A
   class B;
 };
 
-class A<int>::B { };
+template <> class A<int>::B { };
 
 template class A<int>;
 template class A<double>;
index f86d0b67b95219c04c05ca0a988c9f521f4ef9b2..84e39941e4daf80df5340484066c94d1ed9fa33c 100644 (file)
@@ -2,6 +2,10 @@
 
 class mystream;
 
+template <class T> class a;
+
+template <class T> mystream& operator>>( mystream& s, a<T>& thea );
+
 template <class T> class a {
 public:
        friend mystream& operator>> <>( mystream&, a<T>& thea );
@@ -9,8 +13,6 @@ private:
        T amember;
 };
 
-template <class T> mystream& operator>>( mystream& s, a<T>& thea );
-
 template<> mystream& operator>> <int>( mystream& s, a<int>& thea );
 
 template class a<int>;
index e141aaa363fb8f2f7650bbedfca0cf20b48f67bb..7eea65398cfaedc9d9f7a54e561c1681a822efb1 100644 (file)
@@ -1,5 +1,9 @@
 // Build don't link:
 
+template <class T> class a;
+
+template <class T> void foo( a<T>& thea );
+
 template <class T> class a {
 public:
        friend void foo<>( a<T>& thea );
index 58c87c496443a59479e83ee89d99c5fff4933b4e..d8b33fdf98993b740e504056e0291d639bb96d23 100644 (file)
@@ -1,5 +1,5 @@
 // Build don't link:
-// Copyright (C) 2000 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 17 Nov 2000 <nathan@codesourcery.com>
 
 // bug 43. Two failings, bison parser ickiness caused us to find the member
@@ -17,7 +17,7 @@ namespace X {
     V (const T&);
   
     void operator- ();
-    friend void operator-<> (const P<T>& a);
+    friend void X::operator-<> (const P<T>& a);
   };
 }
 
index af0e3caf15c86921012aa60de76d0b49ad4dba1e..3e087f1e12f856dec6964f53c314db2864fc002f 100644 (file)
@@ -14,4 +14,4 @@ class D {
   template <class U>
   friend class N::D;
 };
-};
+}
index 11f9c781988d3ed8ef0aa43c963273cc85278b20..b2759bbfaac716062b1e940f406d1210b2396543 100644 (file)
@@ -16,7 +16,7 @@ struct S
 };
 
 
-template S<char>;
+template struct S<char>;
 template void S<int>::bar(int);
 template void S<double>::baz<short>(short);
 template void S<long>::baz<>(char);
index ae53224e9c846bb4bbba1bebf61828d3ff2b55f2..7e9af2a74aee1df8ab968dc4474644685f3c7a9a 100644 (file)
@@ -15,7 +15,7 @@ public:
 
   vect<t>& operator=( const vect<t>& v );
   vect<t>  operator-( void ) const;
-  friend vect<t> operator- <>( const vect<t>&, const vect<t>& );
+  friend vect<t> (::operator- <>)( const vect<t>&, const vect<t>& );
 
 private:
   t a_;
index beffa02477fe6b3e2080b4a8c7df94a694eecd1c..5c4945d35c221ea316c0ffd1b50fbc09d9c0f0e7 100644 (file)
@@ -1,5 +1,5 @@
 // Build don't link:
-// Copyright (C) 2000 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 14 Nov 2000 <nathan@codesourcery.com>
 
 // bug 616. We failed to complete the type of decls in templates, leading to
@@ -35,6 +35,6 @@ void f()
   const X<dim+1> y[3];
   Z z2;           // ERROR - incomplete
   typedef Z z3;   // ok
-};
+}
 
 template void f<3> ();
index 30ad03b46fc0d974a29cc34d662e24f91137c95f..37c132e182b811273f8caee123f0ca31c3d18106 100644 (file)
@@ -14,7 +14,7 @@ struct A {
 
 template <typename T1>
 struct B {
-   A<T1>::C<int> s1;
+   typename A<T1>::template C<int> s1;
 };
 
 int main()
index c57c27dfe098ec1842c2cdad82c2bddebd553ce1..3f456e631d608284df02b5f3f649a727a108fa6e 100644 (file)
@@ -12,7 +12,7 @@ struct S<int, X> {
 
 template <class T>
 void f() {
-  typename S<T, T>::I<T> si;
+  typename S<T, T>::template I<T> si;
 }
 
 template void f<int>();
index 06a1413eb0e2c1db373269241a3280e1e5d2dc94..6fc72199b6458376bad918423674f91c2e7192f9 100644 (file)
@@ -9,7 +9,7 @@ template <class T, class U>
 void f ()
 {
   A<T>::template B<U>::template f<T> ();
-  typename A<T>::B<U> b;
+  typename A<T>::template B<U> b;
   typename A<T>::template B<U> b2;
   b.A<T>::template B<U>::~B();
 }
index d356a4ed55a59fd34a4c5fc72d499c770cdfdbea..1ae4230bf7347eb26294f3a7ca80469c62495d07 100644 (file)
@@ -15,5 +15,5 @@ void S::Y<char>::foo<int>(int i) { }
 int main()
 {
   S::Y<char> s;
-  s.template foo<int>(3.0);
+  s.foo<int>(3.0);
 }
index 4ff38b6c04c80bb58e45833621fff9be52d490a8..d9a58e5b8fc7808b09e842a91f07eaeb4f090cbb 100644 (file)
@@ -21,5 +21,5 @@ int
 main()
 {
   bar<int>     b;
-  b.template doit<print>(2);
+  b.doit<print>(2);
 }
index 1584f88b8020de88347c90260f44a6814a26117e..73a7a7ebc6f30599dda2a15e721452694ca6ac4a 100644 (file)
@@ -7,7 +7,7 @@ int  k;
 
 template <int j> int f() const { return this->f<j-1>(); }
 
-int g() const { return f<i>(); };
+int g() const { return f<i>(); }
 };
 
 template <>
index a57ad17fef1e44984f626694cd57b8541eb5e2e9..7632049a14c78159cec2d5a7ac222b43ee6ed08c 100644 (file)
@@ -2,9 +2,10 @@
 // crash test - XFAIL *-*-*
 
 // by Paul Burchard <burchard@pobox.com>, Level Set Systems, Inc.
-// Copyright (C) 1999 Free Software Foundation
+// Copyright (C) 1999, 2002 Free Software Foundation
 
 class Q {
+public:
        template<class>
        class X {
        };
index 8f11b8b3002e816754a0d82a99068470ea04e6ed..37a8d8b37bfc472e2fc683cc011d11d80f37a168 100644 (file)
@@ -1,8 +1,3 @@
-// Test that .template limits overload resolution to member templates.
-
-// Note that the standard doesn't seem to require this behavior, but
-// EDG works this way.
-
 struct A {
   template <class T> int f (T) { return 0; }
   int f (int) { return 1; }
@@ -11,5 +6,5 @@ struct A {
 int main ()
 {
   A a;
-  return a.template f (0); // gets bogus error XFAIL *-*-*
+  return a.template f (0); // ERROR - 
 }
index 856d36cd231d215ac5d99cf66a8f06c196f9c39e..d7a644c2073a735a8452ff69dfe267d98edf6a5f 100644 (file)
@@ -20,11 +20,11 @@ struct Ethel {
 struct Fred {
    
   template <class Q, class LA, class LB>
-  Ethel<typename Q::Sig<typename LA::WrappedType>::Third> baz ();
+  Ethel<typename Q::template Sig<typename LA::WrappedType>::Third> baz ();
 
 
   template <class Z, class A, class B>
-  Ethel<typename Z::Sig<A>::Third>
+  Ethel<typename Z::template Sig<A>::Third>
   foo ( const Z&, const Ethel<A>&, const Ethel<B>&) const;
 };
 
index e14c726c1d7241ddf17b0e32ea575ce52e2376fd..5bf7dd77f0a0c53b28fef20582da14e076c27c50 100644 (file)
@@ -10,7 +10,7 @@ main()
 {
   foo f;
   
-  int (foo::*s)() = &foo::template bar<int>;
+  int (foo::*s)() = &foo::bar<int>;
   if ((f.*s)() == 7)
     return 0;
   else 
index 5d53e2d76b1ddbd268cd8f7f1b5a97c6489a1f74..e86f220cfc743a7170071f203f6d50de4b82ef82 100644 (file)
@@ -19,9 +19,9 @@ int main()
 {
   S<double> s;
 
-  if (s.template f<7>(3) != 10)
+  if (s.f<7>(3) != 10)
     abort();
 
-  if (s.template f<8>(3) != 11)
+  if (s.f<8>(3) != 11)
     abort();
 }
index cb073802a925b3127795707f6edae557c638e5a0..a6fdc064a7c74a9ce920b9c03141c6b00735be8f 100644 (file)
@@ -1,5 +1,8 @@
 // Build don't link:
 
+template <class T>
+bool f(T);
+
 template <class T> 
 struct S1 {
   typedef T X;
@@ -15,9 +18,6 @@ struct S2<S1<T> > {
   typedef typename S1<T>::X Y;
 };
 
-template <class T>
-bool f(T);
-
 template <class T>
 typename S2<S1<T> >::Y
 f(const S1<T>&);
index 4f3fc182e04609c1864176c4d10a0b3c71477178..c70b902366cf9f5ee600b7009a7540d7485d618e 100644 (file)
@@ -1,6 +1,6 @@
 // Build don't link: 
 
 template <class A> class B { public: A a; B(); };
-class B<char> { public: int y[10]; };
+template <> class B<char> { public: int y[10]; };
 static B<int> bi;
 static B<char> bc;
index 89f8db191086ea563d1c8ebd0bd37b6df960fbbe..f2614f8789ad579f363aeaf4204c6c1e70ae59fa 100644 (file)
@@ -7,7 +7,7 @@ template <class X> struct A {
   inline int z () { return 5; }
 };
 
-template <class Y> int A<Y>::fooo (int t) { return (this->*(x?&A<Y>::y : &A<Y>::z))() + t; };  // gets bogus error
+template <class Y> int A<Y>::fooo (int t) { return (this->*(x?&A<Y>::y : &A<Y>::z))() + t; }   // gets bogus error
 
 A<int> ai;
 
index 40fba4d0997fd334a516a307fce972684c594f68..71712bf50193cdceb05834aa1ee8e134a48e9ea2 100644 (file)
@@ -1,5 +1,5 @@
 // Build don't link: 
 
 template <class X> struct A {  };
-struct A<int> { int foo (); };
+template <> struct A<int> { int foo (); };
 int A<int>::foo () { return 37; }
index 1e6278f6b80a818e522f40df4ef3c66e794165ad..b73d1a1b1c764e0679d03ac0d02a299f15d49d5b 100644 (file)
@@ -13,7 +13,7 @@ template<template<class> class D,class E> int f()
 {
        D<E> d;
        return d.f();
-};
+}
 
 int main()
 {
index cf415251874771efc684734cfb3e7a7f8c39b3b8..1ff649d71befb798b96cf317677e7c728eeae04d 100644 (file)
@@ -18,7 +18,7 @@ template <class X> struct D { };
 template <class T>
 bool is_C (const T&) {
    return is_instance_of<C,T>::answer;
-};
+}
 
 int main() {
    if (!is_C(C<int>()))
index c4665fc4bb34eec22a3eda4cbab2719ff57ac508..bfbc425d58d6646d4b924b1a3435717cba011b67 100644 (file)
@@ -7,40 +7,40 @@
 
 template <class T> class A2 {
 public:
-   A2() {};
-   virtual ~A2() {};
+   A2() {}
+   virtual ~A2() {}
    template <class other> A2 & operator=(const A2<other> o) {
       i=o.i;
       return *this;
-   };
+   }
    T i;
    T j;
 };
 
 template <class T> class A1 {
 public:
-   A1() {};
-   virtual ~A1() {};
+   A1() {}
+   virtual ~A1() {}
    template <class other> A1 & operator=(const A1<other> o) {
       i=o.i;
       return *this;
-   };
+   }
    template <class other> A1 & operator=(const A2<other> o) {
       i=o.i;
       return *this;
-   };
+   }
    T i;
 };
 
 template <template <class U> class T> class B {
 public:
-   B(){};
-   virtual ~B(){};
+   B(){}
+   virtual ~B(){}
    template <template <class U2> class O> struct rebind { typedef B<O> other ;};
    template <template <class U2> class O> B & operator=(const B<O> o) {
       i=o.i;
       return *this;
-   };
+   }
    T<int> i;
 };
 
index cfc9f131ee9e2138719a87c7194f346f11e02190..1cee212c90327bb4b23dd18d8da506144cc171ed 100644 (file)
@@ -1,5 +1,4 @@
 // Build don't link:
-// Special g++ Options: -Wno-deprecated
 
 template <class T, int I>
 struct S {
@@ -7,9 +6,9 @@ struct S {
 };
 
 template <class T, class U, int I>
-S<T,I>::X f(T, U) {   // WARNING - implicit typename
-  S<T, I>::X();
-  return S<T, I>::X();
+typename S<T,I>::X f(T, U) {
+  typename S<T, I>::X();
+  return typename S<T, I>::X();
 }
 
 template S<int, 3>::X f<int, double, 3>(int, double);
index 8e26057922e396aceb94da58da0923c0c2729254..8f263f03903aac2effb031fc294dab8191cc92f8 100644 (file)
@@ -12,7 +12,7 @@ struct S : public R <T, B> {
 
 template <class T> void f() 
 {
-  S<T>::X();
+  typename S<T>::X();
 }
 
 template void f<int>();
index 86a82df65cb08059e078fad9312c3a2c47815fb3..ba9da1bc952c58bfd7662f2298b63735277be979 100644 (file)
@@ -14,4 +14,4 @@ struct S {
 
 template <class T>
 template <class U>
-typename S<T>::I<U>::X S<T>::I<U>::f() {}
+typename S<T>::template I<U>::X S<T>::I<U>::f() {}
index a3df71840e7f8b52273466e0aea7b0c4027c1b9d..1f72cec1169e1e3a6d3f641807af5aba9d4418e1 100644 (file)
@@ -1,7 +1,4 @@
-// We don't try to make implicit typename handle this case.
-
 // Build don't link:
-// Special g++ Options:
 
 template <class T>
 struct A
@@ -13,10 +10,10 @@ struct A
 template <class U>
 struct B : public A<U>
 {
-  A_Type Func();               // ERROR - candidate
+  A_Type Func();               // ERROR - declaration
 };
 
 template <class U>
-A<U>::A_Type B<U>::Func()
-{                              // ERROR - no match
+A<U>::A_Type B<U>::Func()       // ERROR - function
+{                              
 }
index 632fca00a45e82ce51d104f8ca869d49028af30a..3857d701af2db545c71b116f6cc59060ad4f8d52 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 26 Feb 2001 <nathan@codesourcery.com>
 
 // Bug 1981. using declarations in namespace scope were not remembered.
@@ -6,7 +6,7 @@
 namespace A
 {
   void swap () {}
-};
+}
 
 template <class T> void f()
 {
@@ -28,7 +28,7 @@ namespace B
     return foo (1);
   }
   template int baz<float> ();
-};
+}
 
 int main ()
 {
index 052b049790865a6dcfc478d29f2acc40e336e8d5..59fab8952a5c35b0f8c0443d25ec346c74d37aa4 100644 (file)
@@ -14,7 +14,7 @@ struct D : public B<T> {
 
 void g() {
   B<int>* bi = new D<int>;
-};
+}
 
 template <class T>
 void B<T>::f() {}
index b191ac11717187276365811a00975a19b1d4406a..51d86af42315670fb9b06297712f2877b8f70692 100644 (file)
@@ -16,6 +16,7 @@ A<T>::test(){
   std::cerr << "test for " << typeid(*this).name() << std::endl;
 }
 // Specialization declaration
+template <> 
 void                           
 A<double>::test();
 
index 3d32f1c00284f0cc57060ead2fca35e89300341b..4e2d5eafb7c0178564e12d4ff9e68f3e78db87f8 100644 (file)
@@ -28,8 +28,8 @@ class test
 
 // named return value version
 template <class T>
-test<T> operator + (const test<T>& a, const test<T>& b) return c(a);
-{ c += b; };
+test<T> operator + (const test<T>& a, const test<T>& b) return c(a);// ERROR - named return value
+{ c += b; } // ERROR - c undeclared
 
 int main()
 {
index f98464c91df01dbc8d24df450234d917c17015b2..c4cf02804c74e3c3b32f130b881e345140a61634 100644 (file)
@@ -17,7 +17,7 @@ public :
 };
 
 template <class T >
-inline bool compare(const Expr<T> a, const Expr<T> b){ return true; };
+inline bool compare(const Expr<T> a, const Expr<T> b){ return true; }
 
 int main()
 {
index 453916ed0977bdde7f9de57efd6ae6f71fc66900..b95bfafeb36c27d5cf405a8b586626e54bfbb32f 100644 (file)
@@ -19,7 +19,7 @@ int main()
   double d = 1234.5678;
 
   cout.precision(12);
-  cout << max(d, i) << endl;  // #1
-  cout << max(i, d) << endl;  // #2
+  cout << max(d, i) << endl;  // ERROR - 
+  cout << max(i, d) << endl;  // ERROR - 
   return 0;
 }
index 1e4d8c6249c2985ba89095b6ed5ecd8ab4ce7e1a..7492c8f9446854850c488db30399df2c197ca733 100644 (file)
@@ -1,12 +1,12 @@
 #include <stdio.h>
 
 template <int n1>
-double val <int> ()
-{                          // ERROR - bogus code
+double val <int> () // ERROR - bogus code
+{                          
    return (double) n1;
-};
+}
 
 int main ()
 {
-   printf ("%d\n", val<(int)3> ());
+   printf ("%d\n", val<(int)3> ()); // ERROR - val undeclared
 }
index 463d2d1cb6084b0d78adcd242ad9e748d1dcb39f..1922dc290f3c70a1c9cfef957e92d9e2f3987dd5 100644 (file)
@@ -1,4 +1,6 @@
 // Build don't link: 
+template <class T> void foo ();
+
 template <class T>
 class Q {
     friend void foo<T> ();
This page took 0.404521 seconds and 5 git commands to generate.