diff options
author | Sebastian Redl <sebastian.redl@getdesigned.at> | 2009-11-24 17:14:34 +0000 |
---|---|---|
committer | Sebastian Redl <sebastian.redl@getdesigned.at> | 2009-11-24 17:14:34 +0000 |
commit | 03b67ea1a29c6d0dfcdbb0c18e73bd0850e9820b (patch) | |
tree | 0345053e5118586a2b9c2472cccc3ce73be419d5 /clang/test/SemaCXX/class.cpp | |
parent | dcf1962405ad1569230bbb145a26a9bc187c5cf9 (diff) | |
download | bcm5719-llvm-03b67ea1a29c6d0dfcdbb0c18e73bd0850e9820b.tar.gz bcm5719-llvm-03b67ea1a29c6d0dfcdbb0c18e73bd0850e9820b.zip |
Make sure redeclaration chains are properly linked, even through invalid decls. This fixes PR5415.
llvm-svn: 89777
Diffstat (limited to 'clang/test/SemaCXX/class.cpp')
-rw-r--r-- | clang/test/SemaCXX/class.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/class.cpp b/clang/test/SemaCXX/class.cpp index d2a8114f7b0..302d1d58d39 100644 --- a/clang/test/SemaCXX/class.cpp +++ b/clang/test/SemaCXX/class.cpp @@ -110,3 +110,12 @@ struct C4 { void f(); // expected-note{{previous declaration is here}} int f; // expected-error{{duplicate member 'f'}} }; + +// PR5415 - don't hang! +struct S +{ + void f(); // expected-note 2 {{previous declaration}} + // FIXME: the out-of-line error shouldn't be there + void S::f() {} // expected-error {{class member cannot be redeclared}} expected-error {{out-of-line}} expected-note {{previous definition}} + void f() {} // expected-error {{class member cannot be redeclared}} expected-error {{redefinition}} +}; |