1263b47b6272bfd3ea1c0e61b7ac404e7b2e0f759Douglas Gregortypedef int T;
2263b47b6272bfd3ea1c0e61b7ac404e7b2e0f759Douglas Gregorstruct X { int a, b; };
3263b47b6272bfd3ea1c0e61b7ac404e7b2e0f759Douglas Gregorvoid f(int x) {
4263b47b6272bfd3ea1c0e61b7ac404e7b2e0f759Douglas Gregor  for (T y = x; T z = x; ++x) {
5263b47b6272bfd3ea1c0e61b7ac404e7b2e0f759Douglas Gregor  }
6263b47b6272bfd3ea1c0e61b7ac404e7b2e0f759Douglas Gregor  if (T *z2 = &x) { }
7263b47b6272bfd3ea1c0e61b7ac404e7b2e0f759Douglas Gregor  while (T *z3 = &x) { }
8263b47b6272bfd3ea1c0e61b7ac404e7b2e0f759Douglas Gregor  switch (T z4 = x) {
9263b47b6272bfd3ea1c0e61b7ac404e7b2e0f759Douglas Gregor  case 17: break;
10263b47b6272bfd3ea1c0e61b7ac404e7b2e0f759Douglas Gregor  }
11263b47b6272bfd3ea1c0e61b7ac404e7b2e0f759Douglas Gregor}
12263b47b6272bfd3ea1c0e61b7ac404e7b2e0f759Douglas Gregor
133064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek// Test handling of C++ base specifiers.
143064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenekclass A {
153064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek  void doA();
163064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek};
173064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek
183064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenekclass B {
193064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek  void doB();
203064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek};
213064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek
223064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenekclass C : public A, private B {
233064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek  void doC();
243064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek};
253064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek
263064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenekclass D : virtual public C, virtual private A {};
273064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek
28948022908d0c16acc3411fdec15aeb1790ffaa86Douglas Gregornamespace std {
29948022908d0c16acc3411fdec15aeb1790ffaa86Douglas Gregor  class type_info { };
30948022908d0c16acc3411fdec15aeb1790ffaa86Douglas Gregor}
31948022908d0c16acc3411fdec15aeb1790ffaa86Douglas Gregor
32948022908d0c16acc3411fdec15aeb1790ffaa86Douglas Gregorvoid test_exprs(C *c) {
33948022908d0c16acc3411fdec15aeb1790ffaa86Douglas Gregor  int typeid_marker;
34948022908d0c16acc3411fdec15aeb1790ffaa86Douglas Gregor  typeid(C);
35948022908d0c16acc3411fdec15aeb1790ffaa86Douglas Gregor  typeid(c);
366f7198f6380581645f416dd48a0079f83d89e884Douglas Gregor  typedef int Integer;
376f7198f6380581645f416dd48a0079f83d89e884Douglas Gregor  Integer *int_ptr;
386f7198f6380581645f416dd48a0079f83d89e884Douglas Gregor  int_ptr->Integer::~Integer();
39948022908d0c16acc3411fdec15aeb1790ffaa86Douglas Gregor}
40948022908d0c16acc3411fdec15aeb1790ffaa86Douglas Gregor
418ab670ee2b8147da63d1f282d928e754e4e97408Douglas Gregornamespace N {
428ab670ee2b8147da63d1f282d928e754e4e97408Douglas Gregor  int f(int);
438ab670ee2b8147da63d1f282d928e754e4e97408Douglas Gregor  float f(float);
441f7b590d120758d0c969a8153c38d2446935d4aaDouglas Gregor
451f7b590d120758d0c969a8153c38d2446935d4aaDouglas Gregor  template<typename T> T g(T);
461f7b590d120758d0c969a8153c38d2446935d4aaDouglas Gregor  template<typename T> T g(T*);
478ab670ee2b8147da63d1f282d928e754e4e97408Douglas Gregor}
488ab670ee2b8147da63d1f282d928e754e4e97408Douglas Gregor
498ab670ee2b8147da63d1f282d928e754e4e97408Douglas Gregortemplate<typename T>
508ab670ee2b8147da63d1f282d928e754e4e97408Douglas Gregorvoid test_dependent_exprs(T t) {
518ab670ee2b8147da63d1f282d928e754e4e97408Douglas Gregor  N::f(t);
521f7b590d120758d0c969a8153c38d2446935d4aaDouglas Gregor  typedef T type;
531f7b590d120758d0c969a8153c38d2446935d4aaDouglas Gregor  N::g<type>(t);
54bfebed2a839e12c3e99d635dbd1f4f875ce8b066Douglas Gregor  type::template f<type*>(t);
5525d63629cc37a9737c6d8d5c6aa08b356649212fDouglas Gregor  t->type::template f<type*>();
568ab670ee2b8147da63d1f282d928e754e4e97408Douglas Gregor}
578ab670ee2b8147da63d1f282d928e754e4e97408Douglas Gregor
58aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregorstruct Y {
59aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor  int f(int);
60aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor  float f(float);
61aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor
62aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor  template<typename T> T g(T);
63aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor  template<typename T> T g(T*);
64aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor};
65aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor
66aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregortemplate<typename T>
67aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregorvoid test_more_dependent_exprs(T t, Y y) {
68aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor  y.Y::f(t);
69aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor  typedef T type;
70aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor  y.g<type>(t);
71aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor}
72aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor
731bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregorstruct Pair {
741bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregor  Pair(int, int);
751bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregor};
761bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregor
771bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregorvoid *operator new(__SIZE_TYPE__, void*) throw();
781bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregor
791bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregorvoid test_more_exprs(void *mem, int i, int j) {
801bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregor  new (mem) Pair(i, j);
81ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor  typedef int Integer;
82ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor  (void)Integer(i);
83ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor  (Integer)i;
84ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor  Integer();
85ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor}
86ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor
87ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregortemplate<typename T>
88ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregorvoid test_even_more_dependent_exprs(T t, Y y) {
89ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor  typedef T type;
90ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor  (void)type(t, y);
913d37c0ada0e46b87be0a10e8d52d990a97d3907aDouglas Gregor  (void)__has_nothrow_assign(type);
921bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregor}
931bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregor
94a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregorstruct Base {
95a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor  Base(int);
96a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor};
97a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor
98a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregorstruct Derived : public Base {
99a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor  Derived(int x);
100a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor  int member;
101a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor};
102a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor
103a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas GregorDerived::Derived(int x)
104a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor  : member(x), Base(x) {
105a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor}
106a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor
10736897b05ca2886e287f01802614bc10cbadcec22Douglas Gregorvoid considered_harmful(int x) {
10836897b05ca2886e287f01802614bc10cbadcec22Douglas Gregor start_over:
10936897b05ca2886e287f01802614bc10cbadcec22Douglas Gregor  void *ptr = &&start_over;
11036897b05ca2886e287f01802614bc10cbadcec22Douglas Gregor  if (x > 17)
11136897b05ca2886e287f01802614bc10cbadcec22Douglas Gregor    goto *ptr;
11236897b05ca2886e287f01802614bc10cbadcec22Douglas Gregor  else
11336897b05ca2886e287f01802614bc10cbadcec22Douglas Gregor    goto start_over;
11436897b05ca2886e287f01802614bc10cbadcec22Douglas Gregor}
11536897b05ca2886e287f01802614bc10cbadcec22Douglas Gregor
1161d5d0b9df6d2a3df338bc3e63000536406e7666cDouglas Gregorvoid casts(int *ip) {
1171d5d0b9df6d2a3df338bc3e63000536406e7666cDouglas Gregor  (void)reinterpret_cast<float *>(ip);
1181d5d0b9df6d2a3df338bc3e63000536406e7666cDouglas Gregor}
1191d5d0b9df6d2a3df338bc3e63000536406e7666cDouglas Gregor
1208efcc0184a6dfe1ea799d3a6b9c1312ef1fac11dFrancois Pichet// RUN: c-index-test -test-load-source all -fno-delayed-template-parsing %s | FileCheck %s
121344577e6b58f42d18dc8118c8903b49a85dc005eAbramo Bagnara// CHECK: load-stmts.cpp:1:13: TypedefDecl=T:1:13 (Definition) Extent=[1:1 - 1:14]
1229a700d277c38d9afaa7cb3fe93a714bfe9b62eecTed Kremenek// CHECK: load-stmts.cpp:2:8: StructDecl=X:2:8 (Definition) Extent=[2:1 - 2:23]
123ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: load-stmts.cpp:2:16: FieldDecl=a:2:16 (Definition) Extent=[2:12 - 2:17]
124ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: load-stmts.cpp:2:19: FieldDecl=b:2:19 (Definition) Extent=[2:12 - 2:20]
125ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: load-stmts.cpp:3:6: FunctionDecl=f:3:6 (Definition) Extent=[3:1 - 11:2]
1269a700d277c38d9afaa7cb3fe93a714bfe9b62eecTed Kremenek// CHECK: load-stmts.cpp:3:12: ParmDecl=x:3:12 (Definition) Extent=[3:8 - 3:13]
1278f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:4:10: VarDecl=y:4:10 (Definition) Extent=[4:8 - 4:15]
1288f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:4:8: TypeRef=T:1:13 Extent=[4:8 - 4:9]
1298f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:4:14: DeclRefExpr=x:3:12 Extent=[4:14 - 4:15]
1308f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:4:19: VarDecl=z:4:19 (Definition) Extent=[4:17 - 4:24]
1318f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:4:17: TypeRef=T:1:13 Extent=[4:17 - 4:18]
1328f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:4:23: DeclRefExpr=x:3:12 Extent=[4:23 - 4:24]
1338f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:4:19: UnexposedExpr=z:4:19 Extent=[4:19 - 4:20]
1348f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:4:19: DeclRefExpr=z:4:19 Extent=[4:19 - 4:20]
13542b2984771a7fd1b17c78bbb2c59fed3db2f1960Douglas Gregor// CHECK: load-stmts.cpp:4:26: UnaryOperator= Extent=[4:26 - 4:29]
1368f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:4:28: DeclRefExpr=x:3:12 Extent=[4:28 - 4:29]
1378f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:6:10: VarDecl=z2:6:10 (Definition) Extent=[6:7 - 6:17]
1388f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:6:7: TypeRef=T:1:13 Extent=[6:7 - 6:8]
13942b2984771a7fd1b17c78bbb2c59fed3db2f1960Douglas Gregor// CHECK: load-stmts.cpp:6:15: UnaryOperator= Extent=[6:15 - 6:17]
1408f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:6:16: DeclRefExpr=x:3:12 Extent=[6:16 - 6:17]
1418f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:6:10: UnexposedExpr=z2:6:10 Extent=[6:10 - 6:12]
1428f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:6:10: DeclRefExpr=z2:6:10 Extent=[6:10 - 6:12]
1438f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:7:13: VarDecl=z3:7:13 (Definition) Extent=[7:10 - 7:20]
1448f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:7:10: TypeRef=T:1:13 Extent=[7:10 - 7:11]
14542b2984771a7fd1b17c78bbb2c59fed3db2f1960Douglas Gregor// CHECK: load-stmts.cpp:7:18: UnaryOperator= Extent=[7:18 - 7:20]
1468f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:7:19: DeclRefExpr=x:3:12 Extent=[7:19 - 7:20]
1478f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:7:13: UnexposedExpr=z3:7:13 Extent=[7:13 - 7:15]
1488f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:7:13: DeclRefExpr=z3:7:13 Extent=[7:13 - 7:15]
1498f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:8:13: VarDecl=z4:8:13 (Definition) Extent=[8:11 - 8:19]
1508f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:8:11: TypeRef=T:1:13 Extent=[8:11 - 8:12]
1518f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:8:18: DeclRefExpr=x:3:12 Extent=[8:18 - 8:19]
1528f0bf81c0f3ab31881cc7db7914e6978bb2a19afDaniel Dunbar// CHECK: load-stmts.cpp:8:13: DeclRefExpr=z4:8:13 Extent=[8:13 - 8:15]
15342b2984771a7fd1b17c78bbb2c59fed3db2f1960Douglas Gregor// CHECK: load-stmts.cpp:9:8: IntegerLiteral= Extent=[9:8 - 9:10]
1543064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek// CHECK: load-stmts.cpp:14:7: ClassDecl=A:14:7 (Definition) Extent=[14:1 - 16:2]
155ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: load-stmts.cpp:15:8: CXXMethod=doA:15:8 Extent=[15:3 - 15:13]
1563064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek// CHECK: load-stmts.cpp:18:7: ClassDecl=B:18:7 (Definition) Extent=[18:1 - 20:2]
157ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: load-stmts.cpp:19:8: CXXMethod=doB:19:8 Extent=[19:3 - 19:13]
1583064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek// CHECK: load-stmts.cpp:22:7: ClassDecl=C:22:7 (Definition) Extent=[22:1 - 24:2]
1591b0f7af64113b63253ced088a2bc64eb98e6f388Douglas Gregor// CHECK: load-stmts.cpp:22:18: C++ base class specifier=class A:14:7 [access=public isVirtual=false]
1601b0f7af64113b63253ced088a2bc64eb98e6f388Douglas Gregor// CHECK: load-stmts.cpp:22:29: C++ base class specifier=class B:18:7 [access=private isVirtual=false]
161ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: load-stmts.cpp:23:8: CXXMethod=doC:23:8 Extent=[23:3 - 23:13]
1623064ef9e604d19a0cfd0d8e3ed3055bfd83f88fdTed Kremenek// CHECK: load-stmts.cpp:26:7: ClassDecl=D:26:7 (Definition) Extent=[26:1 - 26:49]
1631b0f7af64113b63253ced088a2bc64eb98e6f388Douglas Gregor// CHECK: load-stmts.cpp:26:26: C++ base class specifier=class C:22:7 [access=public isVirtual=true]
1641b0f7af64113b63253ced088a2bc64eb98e6f388Douglas Gregor// CHECK: load-stmts.cpp:26:45: C++ base class specifier=class A:14:7 [access=private isVirtual=true]
165948022908d0c16acc3411fdec15aeb1790ffaa86Douglas Gregor// CHECK: load-stmts.cpp:33:7: VarDecl=typeid_marker:33:7 (Definition)
166948022908d0c16acc3411fdec15aeb1790ffaa86Douglas Gregor// CHECK: load-stmts.cpp:34:10: TypeRef=class C:22:7 Extent=[34:10 - 34:11]
167948022908d0c16acc3411fdec15aeb1790ffaa86Douglas Gregor// CHECK: load-stmts.cpp:35:10: DeclRefExpr=c:32:20 Extent=[35:10 - 35:11]
1686f7198f6380581645f416dd48a0079f83d89e884Douglas Gregor// CHECK: load-stmts.cpp:37:12: VarDecl=int_ptr:37:12 (Definition) Extent=[37:3 - 37:19]
1696f7198f6380581645f416dd48a0079f83d89e884Douglas Gregor// CHECK: load-stmts.cpp:37:3: TypeRef=Integer:36:15 Extent=[37:3 - 37:10]
1706f7198f6380581645f416dd48a0079f83d89e884Douglas Gregor// CHECK: load-stmts.cpp:38:3: DeclRefExpr=int_ptr:37:12 Extent=[38:3 - 38:10]
1716f7198f6380581645f416dd48a0079f83d89e884Douglas Gregor// CHECK: load-stmts.cpp:38:12: TypeRef=Integer:36:15 Extent=[38:12 - 38:19]
1726f7198f6380581645f416dd48a0079f83d89e884Douglas Gregor// CHECK: load-stmts.cpp:38:22: TypeRef=Integer:36:15 Extent=[38:22 - 38:29]
1731f7b590d120758d0c969a8153c38d2446935d4aaDouglas Gregor// CHECK: load-stmts.cpp:50:6: FunctionTemplate=test_dependent_exprs:50:6 (Definition)
1741f7b590d120758d0c969a8153c38d2446935d4aaDouglas Gregor// CHECK: load-stmts.cpp:51:3: CallExpr= Extent=[51:3 - 51:10]
1751f7b590d120758d0c969a8153c38d2446935d4aaDouglas Gregor// CHECK: load-stmts.cpp:51:3: NamespaceRef=N:41:11 Extent=[51:3 - 51:4]
1761f7b590d120758d0c969a8153c38d2446935d4aaDouglas Gregor// CHECK: load-stmts.cpp:51:8: DeclRefExpr=t:50:29 Extent=[51:8 - 51:9]
177344577e6b58f42d18dc8118c8903b49a85dc005eAbramo Bagnara// CHECK: load-stmts.cpp:52:13: TypedefDecl=type:52:13 (Definition) Extent=[52:3 - 52:17]
1781f7b590d120758d0c969a8153c38d2446935d4aaDouglas Gregor// CHECK: load-stmts.cpp:53:3: CallExpr= Extent=[53:3 - 53:16]
1791f7b590d120758d0c969a8153c38d2446935d4aaDouglas Gregor// CHECK: load-stmts.cpp:53:3: NamespaceRef=N:41:11 Extent=[53:3 - 53:4]
1801f7b590d120758d0c969a8153c38d2446935d4aaDouglas Gregor// CHECK: load-stmts.cpp:53:8: TypeRef=type:52:13 Extent=[53:8 - 53:12]
1811f7b590d120758d0c969a8153c38d2446935d4aaDouglas Gregor// CHECK: load-stmts.cpp:53:14: DeclRefExpr=t:50:29 Extent=[53:14 - 53:15]
182bfebed2a839e12c3e99d635dbd1f4f875ce8b066Douglas Gregor// CHECK: load-stmts.cpp:54:3: CallExpr= Extent=[54:3 - 54:29]
183bfebed2a839e12c3e99d635dbd1f4f875ce8b066Douglas Gregor// CHECK: load-stmts.cpp:54:3: TypeRef=type:52:13 Extent=[54:3 - 54:7]
184bfebed2a839e12c3e99d635dbd1f4f875ce8b066Douglas Gregor// CHECK: load-stmts.cpp:54:20: TypeRef=type:52:13 Extent=[54:20 - 54:24]
185bfebed2a839e12c3e99d635dbd1f4f875ce8b066Douglas Gregor// CHECK: load-stmts.cpp:54:27: DeclRefExpr=t:50:29 Extent=[54:27 - 54:28]
18625d63629cc37a9737c6d8d5c6aa08b356649212fDouglas Gregor// CHECK: load-stmts.cpp:55:3: CallExpr= Extent=[55:3 - 55:31]
18725d63629cc37a9737c6d8d5c6aa08b356649212fDouglas Gregor// CHECK: load-stmts.cpp:55:3: DeclRefExpr=t:50:29 Extent=[55:3 - 55:4]
18825d63629cc37a9737c6d8d5c6aa08b356649212fDouglas Gregor// CHECK: load-stmts.cpp:55:23: TypeRef=type:52:13 Extent=[55:23 - 55:27]
189aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor// CHECK: load-stmts.cpp:67:6: FunctionTemplate=test_more_dependent_exprs:67:6 (Definition)
190aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor// CHECK: load-stmts.cpp:68:3: CallExpr= Extent=[68:3 - 68:12]
191aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor// CHECK: load-stmts.cpp:68:3: DeclRefExpr=y:67:39 Extent=[68:3 - 68:4]
192aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor// CHECK: load-stmts.cpp:68:5: TypeRef=struct Y:58:8 Extent=[68:5 - 68:6]
193aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor// CHECK: load-stmts.cpp:68:10: DeclRefExpr=t:67:34 Extent=[68:10 - 68:11]
194aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor// CHECK: load-stmts.cpp:70:3: CallExpr= Extent=[70:3 - 70:15]
195aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor// CHECK: load-stmts.cpp:70:3: DeclRefExpr=y:67:39 Extent=[70:3 - 70:4]
196aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor// CHECK: load-stmts.cpp:70:7: TypeRef=type:69:13 Extent=[70:7 - 70:11]
197aaa80b208de3e2c706badf45060bd126fa747b84Douglas Gregor// CHECK: load-stmts.cpp:70:13: DeclRefExpr=t:67:34 Extent=[70:13 - 70:14]
1981bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregor// CHECK: load-stmts.cpp:79:6: FunctionDecl=test_more_exprs:79:6 (Definition)
1991bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregor// CHECK: load-stmts.cpp:80:8: DeclRefExpr=mem:79:28 Extent=[80:8 - 80:11]
2001bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregor// CHECK: load-stmts.cpp:80:13: TypeRef=struct Pair:73:8 Extent=[80:13 - 80:17]
2011bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregor// CHECK: load-stmts.cpp:80:18: DeclRefExpr=i:79:37 Extent=[80:18 - 80:19]
2021bb2a93ab7b1499dda6f6b58865bd0dce1864228Douglas Gregor// CHECK: load-stmts.cpp:80:21: DeclRefExpr=j:79:44 Extent=[80:21 - 80:22]
203ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor// CHECK: load-stmts.cpp:82:9: TypeRef=Integer:81:15 Extent=[82:9 - 82:16]
204ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor// CHECK: load-stmts.cpp:82:17: DeclRefExpr=i:79:37 Extent=[82:17 - 82:18]
20542b2984771a7fd1b17c78bbb2c59fed3db2f1960Douglas Gregor// CHECK: load-stmts.cpp:83:3: CStyleCastExpr= Extent=[83:3 - 83:13]
206ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor// CHECK: load-stmts.cpp:83:4: TypeRef=Integer:81:15 Extent=[83:4 - 83:11]
207c2954616fbd11f5a6117236f58420029b773a639Argyrios Kyrtzidis// CHECK: load-stmts.cpp:83:12: UnexposedExpr=i:79:37 Extent=[83:12 - 83:13]
208ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor// CHECK: load-stmts.cpp:83:12: DeclRefExpr=i:79:37 Extent=[83:12 - 83:13]
209ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor// CHECK: load-stmts.cpp:84:3: UnexposedExpr= Extent=[84:3 - 84:12]
210ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor// CHECK: load-stmts.cpp:84:3: TypeRef=Integer:81:15 Extent=[84:3 - 84:10]
211ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor// CHECK: load-stmts.cpp:90:9: TypeRef=type:89:13 Extent=[90:9 - 90:13]
212ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor// CHECK: load-stmts.cpp:90:14: DeclRefExpr=t:88:39 Extent=[90:14 - 90:15]
213ab6677ec401cfd2c82b34e4cdfebd55a9dc25778Douglas Gregor// CHECK: load-stmts.cpp:90:17: DeclRefExpr=y:88:44 Extent=[90:17 - 90:18]
2143d37c0ada0e46b87be0a10e8d52d990a97d3907aDouglas Gregor// CHECK: load-stmts.cpp:91:9: UnexposedExpr= Extent=[91:9 - 91:35]
2153d37c0ada0e46b87be0a10e8d52d990a97d3907aDouglas Gregor// CHECK: load-stmts.cpp:91:30: TypeRef=type:89:13 Extent=[91:30 - 91:34]
216a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor// CHECK: load-stmts.cpp:103:10: CXXConstructor=Derived:103:10 (Definition)
217a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor// CHECK: load-stmts.cpp:103:1: TypeRef=struct Derived:98:8 Extent=[103:1 - 103:
218a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor// FIXME: Missing TypeRef for constructor name.
219a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor// CHECK: load-stmts.cpp:103:22: ParmDecl=x:103:22 (Definition)
220a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor// CHECK: load-stmts.cpp:104:5: MemberRef=member:100:7 Extent=[104:5 - 104:11]
221a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor// CHECK: load-stmts.cpp:104:12: DeclRefExpr=x:103:22 Extent=[104:12 - 104:13]
222a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor// CHECK: load-stmts.cpp:104:16: TypeRef=struct Base:94:8 Extent=[104:16 - 104:2
22393798e25d68e2d146cff9bd0355d4b7b1ca765f1Douglas Gregor// CHECK: load-stmts.cpp:104:16: CallExpr=Base:95:3 Extent=[104:16 - 104:23]
224a67e03fdf1ae8a1f92463a307d0b6281f1161f40Douglas Gregor// CHECK: load-stmts.cpp:104:21: DeclRefExpr=x:103:22 Extent=[104:21 - 104:22]
22536897b05ca2886e287f01802614bc10cbadcec22Douglas Gregor// CHECK: load-stmts.cpp:107:6: FunctionDecl=considered_harmful:107:6 (Definition)
22636897b05ca2886e287f01802614bc10cbadcec22Douglas Gregor// CHECK: load-stmts.cpp:108:2: LabelStmt=start_over Extent=[108:2 - 109:28]
22736897b05ca2886e287f01802614bc10cbadcec22Douglas Gregor// CHECK: load-stmts.cpp:109:17: LabelRef=start_over:108:2 Extent=[109:17 - 109:27]
22836897b05ca2886e287f01802614bc10cbadcec22Douglas Gregor// CHECK: load-stmts.cpp:113:10: LabelRef=start_over:108:2 Extent=[113:10 - 113:20]
229c2954616fbd11f5a6117236f58420029b773a639Argyrios Kyrtzidis// CHECK: load-stmts.cpp:117:35: UnexposedExpr=ip:116:17 Extent=[117:35 - 117:37]
230c2954616fbd11f5a6117236f58420029b773a639Argyrios Kyrtzidis// CHECK: load-stmts.cpp:117:35: DeclRefExpr=ip:116:17 Extent=[117:35 - 117:37]
2311d5d0b9df6d2a3df338bc3e63000536406e7666cDouglas Gregor
232