crashes.cpp revision 2c4792c731690dbbcbe69dd0625977adffc2961a
1025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregor// RUN: %clang_cc1 -fsyntax-only -verify %s
2025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregor
3025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregor// <rdar://problem/8124080>
4025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregortemplate<typename _Alloc> class allocator;
5025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregortemplate<class _CharT> struct char_traits;
6025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregortemplate<typename _CharT, typename _Traits = char_traits<_CharT>,
7025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregor         typename _Alloc = allocator<_CharT> >
8025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregorclass basic_string;
9025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregortemplate<typename _CharT, typename _Traits, typename _Alloc>
10025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregorconst typename basic_string<_CharT, _Traits, _Alloc>::size_type
11025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregorbasic_string<_CharT, _Traits, _Alloc>::_Rep::_S_max_size // expected-error{{no member named '_Rep' in 'basic_string<_CharT, _Traits, _Alloc>'}}
12025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregor  = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4;
13025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregor
14025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregor// PR7118
15025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregortemplate<typename T>
16025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregorclass Foo {
17025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregor  class Bar;
18025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregor  void f() {
19025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregor    Bar i;
20025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregor  }
21025291b591a528d8a3f303991f65e19fa1e90a9dDouglas Gregor};
226a622dfde49ff06df4e0487fa9782a9a137971acArgyrios Kyrtzidis
236a622dfde49ff06df4e0487fa9782a9a137971acArgyrios Kyrtzidis// PR7625
246a622dfde49ff06df4e0487fa9782a9a137971acArgyrios Kyrtzidistemplate<typename T> struct a : T {
256a622dfde49ff06df4e0487fa9782a9a137971acArgyrios Kyrtzidis struct x : T {
266a622dfde49ff06df4e0487fa9782a9a137971acArgyrios Kyrtzidis   int aa() { return p; } // expected-error{{use of undeclared identifier 'p'}}
276a622dfde49ff06df4e0487fa9782a9a137971acArgyrios Kyrtzidis };
286a622dfde49ff06df4e0487fa9782a9a137971acArgyrios Kyrtzidis};
29d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidis
30d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidis// rdar://8605381
31d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidisnamespace rdar8605381 {
32d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidisstruct X {};
33d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidis
34d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidisstruct Y { // expected-note{{candidate}}
35d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidis  Y();
36d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidis};
37d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidis
38d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidisstruct {
39d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidis  Y obj;
40d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidis} objs[] = {
41d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidis  new Y // expected-error{{no viable conversion}}
42d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidis};
43d86132d52c1dd99ad5519abaad92533712692a8bArgyrios Kyrtzidis}
442c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis
452c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis// http://llvm.org/PR8234
462c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidisnamespace PR8234 {
472c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidistemplate<typename Signature>
482c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidisclass callback
492c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis{
502c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis};
512c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis
522c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidistemplate<typename R , typename ARG_TYPE0>
532c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidisclass callback<R( ARG_TYPE0)>
542c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis{
552c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis    public:
562c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis        callback() {}
572c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis};
582c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis
592c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidistemplate< typename ARG_TYPE0>
602c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidisclass callback<void( ARG_TYPE0)>
612c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis{
622c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis    public:
632c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis        callback() {}
642c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis};
652c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis
662c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidisvoid f()
672c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis{
682c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis    callback<void(const int&)> op;
692c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis}
702c4792c731690dbbcbe69dd0625977adffc2961aArgyrios Kyrtzidis}
71