1cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremeneknamespace foo {
2cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  int x;
3cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  void bar(int z);
4cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek}
5cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremeneknamespace bar {
6cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  typedef int QType;
7cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  void bar(QType z);
8cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek}
9cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek
10cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenekclass ClsA {
11cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenekpublic:
12cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  int a, b;
13cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  ClsA(int A, int B) : a(A), b(B) {}
14cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek};
15cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek
16cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremeneknamespace foo {
17cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  class ClsB : public ClsA {
18cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  public:
19cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek    ClsB() : ClsA(1, 2) {}
20cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek    int result() const;
21cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  };
22cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek}
23cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek
24cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenekint foo::ClsB::result() const {
25cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  return a + b;
26cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek}
27cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek
28cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremeneknamespace {
29cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  class ClsC : public foo::ClsB {};
30cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  int w;
31cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek}
32cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek
33cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenekint z;
34cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek
35cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremeneknamespace foo { namespace taz {
36cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  int x;
37cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  static inline int add(int a, int b) { return a + b; }
38cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek  void sub(int a, int b);
39cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek}
40cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek}
41cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek
42d5d90fedcc07222acde24dce357266161836b302Ted Kremeneknamespace foo { namespace taz {
43d5d90fedcc07222acde24dce357266161836b302Ted Kremenek  class ClsD : public foo::ClsB {
44d5d90fedcc07222acde24dce357266161836b302Ted Kremenek  public:
45d5d90fedcc07222acde24dce357266161836b302Ted Kremenek    ClsD& operator=(int x) { a = x; return *this; }
46d5d90fedcc07222acde24dce357266161836b302Ted Kremenek    ClsD& operator=(double x) { a = (int) x; return *this; }
472ea5baf08dc5006f2d6168948140fd3a709d5cf7Ted Kremenek    ClsD& operator=(const ClsD &x) { a = x.a; return *this; }
482ea5baf08dc5006f2d6168948140fd3a709d5cf7Ted Kremenek    static int qux();
492ea5baf08dc5006f2d6168948140fd3a709d5cf7Ted Kremenek    static int uz(int z, ...);
502ea5baf08dc5006f2d6168948140fd3a709d5cf7Ted Kremenek    bool operator==(const ClsD &x) const { return a == x.a; }
51d5d90fedcc07222acde24dce357266161836b302Ted Kremenek  };
52d5d90fedcc07222acde24dce357266161836b302Ted Kremenek}}
53d5d90fedcc07222acde24dce357266161836b302Ted Kremenek
548e67219a7cb0cf7bfa432f8c30da9c52999737ceTed Kremenekextern "C" {
558e67219a7cb0cf7bfa432f8c30da9c52999737ceTed Kremenek  void rez(int a, int b);
568e67219a7cb0cf7bfa432f8c30da9c52999737ceTed Kremenek}
578e67219a7cb0cf7bfa432f8c30da9c52999737ceTed Kremenek
586931900f43cea558c6974075256c07728dbfecc6Douglas Gregornamespace foo_alias = foo;
596931900f43cea558c6974075256c07728dbfecc6Douglas Gregor
600a35bceb7768fc0be62cb644a4e31d8bfd9fb44aDouglas Gregorusing namespace foo;
610a35bceb7768fc0be62cb644a4e31d8bfd9fb44aDouglas Gregor
62828629bd81b08385291f71bee8fa086ae24c2e97Douglas Gregornamespace foo_alias2 = foo;
63828629bd81b08385291f71bee8fa086ae24c2e97Douglas Gregor
647e24256c95afb64b4d5abf201a0f9f0527cb4cf3Douglas Gregorusing foo::ClsB;
657e24256c95afb64b4d5abf201a0f9f0527cb4cf3Douglas Gregor
667e24256c95afb64b4d5abf201a0f9f0527cb4cf3Douglas Gregornamespace foo_alias3 = foo;
677e24256c95afb64b4d5abf201a0f9f0527cb4cf3Douglas Gregor
681d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremeneknamespace {
691d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenekclass RDar9371763_Foo {
701d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenekpublic:
711d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek  void bar();
721d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek};
731d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek}
741d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek
751d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenekvoid RDar9371763_Foo::bar() {}
761d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek
771d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenekvoid rdar9371763() {
781d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek  RDar9371763_Foo foo;
791d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek  foo.bar();
801d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek}
811d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek
82cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek// RUN: c-index-test -test-load-source-usrs all %s | FileCheck %s
83acba90f30876b4140b738f0d3dd0e50724053a96Abramo Bagnara// CHECK: usrs.cpp c:@N@foo Extent=[1:1 - 4:2]
84cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek// CHECK: usrs.cpp c:@N@foo@x Extent=[2:3 - 2:8]
85ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:@N@foo@F@bar#I# Extent=[3:3 - 3:18]
861f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@36@N@foo@F@bar#I#@z Extent=[3:12 - 3:17]
87acba90f30876b4140b738f0d3dd0e50724053a96Abramo Bagnara// CHECK: usrs.cpp c:@N@bar Extent=[5:1 - 8:2]
88344577e6b58f42d18dc8118c8903b49a85dc005eAbramo Bagnara// CHECK: usrs.cpp c:usrs.cpp@64@N@bar@T@QType Extent=[6:3 - 6:20]
89ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:@N@bar@F@bar#I# Extent=[7:3 - 7:20]
901f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@94@N@bar@F@bar#I#@z Extent=[7:12 - 7:19]
91cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek// CHECK: usrs.cpp c:@C@ClsA Extent=[10:1 - 14:2]
921f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c: Extent=[11:1 - 11:8]
93ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:@C@ClsA@FI@a Extent=[12:3 - 12:8]
94ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:@C@ClsA@FI@b Extent=[12:3 - 12:11]
952ea5baf08dc5006f2d6168948140fd3a709d5cf7Ted Kremenek// CHECK: usrs.cpp c:@C@ClsA@F@ClsA#I#I# Extent=[13:3 - 13:37]
961f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@147@C@ClsA@F@ClsA#I#I#@A Extent=[13:8 - 13:13]
971f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@154@C@ClsA@F@ClsA#I#I#@B Extent=[13:15 - 13:20]
98acba90f30876b4140b738f0d3dd0e50724053a96Abramo Bagnara// CHECK: usrs.cpp c:@N@foo Extent=[16:1 - 22:2]
99cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek// CHECK: usrs.cpp c:@N@foo@C@ClsB Extent=[17:3 - 21:4]
1001f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c: Extent=[18:3 - 18:10]
1012ea5baf08dc5006f2d6168948140fd3a709d5cf7Ted Kremenek// CHECK: usrs.cpp c:@N@foo@C@ClsB@F@ClsB# Extent=[19:5 - 19:27]
1023deeb6deaed56f28baa32296b10e259cb3e4127bAbramo Bagnara// CHECK: usrs.cpp c:@N@foo@C@ClsB@F@result#1 Extent=[20:5 - 20:23]
103ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:@N@foo@C@ClsB@F@result#1 Extent=[24:1 - 26:2]
104cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek// CHECK: usrs.cpp c:@aN@C@ClsC Extent=[29:3 - 29:35]
105cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek// CHECK: usrs.cpp c:@aN@w Extent=[30:3 - 30:8]
106cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek// CHECK: usrs.cpp c:@z Extent=[33:1 - 33:6]
107acba90f30876b4140b738f0d3dd0e50724053a96Abramo Bagnara// CHECK: usrs.cpp c:@N@foo Extent=[35:1 - 40:2]
108acba90f30876b4140b738f0d3dd0e50724053a96Abramo Bagnara// CHECK: usrs.cpp c:@N@foo@N@taz Extent=[35:17 - 39:2]
109cbd66f00cfe5c4412f8efd6e66b0bb6bae956f7cTed Kremenek// CHECK: usrs.cpp c:@N@foo@N@taz@x Extent=[36:3 - 36:8]
110ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:usrs.cpp@457@N@foo@N@taz@F@add#I#I# Extent=[37:3 - 37:56]
1111f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@479@N@foo@N@taz@F@add#I#I#@a Extent=[37:25 - 37:30]
1121f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@486@N@foo@N@taz@F@add#I#I#@b Extent=[37:32 - 37:37]
113ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:@N@foo@N@taz@F@sub#I#I# Extent=[38:3 - 38:25]
1141f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@522@N@foo@N@taz@F@sub#I#I#@a Extent=[38:12 - 38:17]
1151f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@529@N@foo@N@taz@F@sub#I#I#@b Extent=[38:19 - 38:24]
116acba90f30876b4140b738f0d3dd0e50724053a96Abramo Bagnara// CHECK: usrs.cpp c:@N@foo Extent=[42:1 - 52:3]
117acba90f30876b4140b738f0d3dd0e50724053a96Abramo Bagnara// CHECK: usrs.cpp c:@N@foo@N@taz Extent=[42:17 - 52:2]
1182ea5baf08dc5006f2d6168948140fd3a709d5cf7Ted Kremenek// CHECK: usrs.cpp c:@N@foo@N@taz@C@ClsD Extent=[43:3 - 51:4]
1191f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c: Extent=[44:3 - 44:10]
120ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:@N@foo@N@taz@C@ClsD@F@operator=#I# Extent=[45:5 - 45:52]
1211f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@638@N@foo@N@taz@C@ClsD@F@operator=#I#@x Extent=[45:21 - 45:26]
122ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:@N@foo@N@taz@C@ClsD@F@operator=#d# Extent=[46:5 - 46:61]
1231f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@690@N@foo@N@taz@C@ClsD@F@operator=#d#@x Extent=[46:21 - 46:29]
124ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:@N@foo@N@taz@C@ClsD@F@operator=#&1$@N@foo@N@taz@C@ClsD# Extent=[47:5 - 47:62]
125ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:usrs.cpp@751@N@foo@N@taz@C@ClsD@F@operator=#&1$@N@foo@N@taz@C@ClsD#@x Extent=[47:21 - 47:34]
126ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:@N@foo@N@taz@C@ClsD@F@qux#S Extent=[48:5 - 48:21]
127ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:@N@foo@N@taz@C@ClsD@F@uz#I.#S Extent=[49:5 - 49:30]
1281f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@833@N@foo@N@taz@C@ClsD@F@uz#I.#S@z Extent=[49:19 - 49:24]
129ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:@N@foo@N@taz@C@ClsD@F@operator==#&1$@N@foo@N@taz@C@ClsD#1 Extent=[50:5 - 50:62]
130ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:usrs.cpp@866@N@foo@N@taz@C@ClsD@F@operator==#&1$@N@foo@N@taz@C@ClsD#1@x Extent=[50:21 - 50:34]
131ff676cb48fe8bf7be2feaa251dc7c5fb15af4730Abramo Bagnara// CHECK: usrs.cpp c:@F@rez Extent=[55:3 - 55:25]
1321f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@941@F@rez@a Extent=[55:12 - 55:17]
1331f3b4a98d4c5d814f472b4068571422b5650af87Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@948@F@rez@b Extent=[55:19 - 55:24]
1346931900f43cea558c6974075256c07728dbfecc6Douglas Gregor// CHECK: usrs.cpp c:@NA@foo_alias
135828629bd81b08385291f71bee8fa086ae24c2e97Douglas Gregor// CHECK-NOT: foo
136828629bd81b08385291f71bee8fa086ae24c2e97Douglas Gregor// CHECK: usrs.cpp c:@NA@foo_alias2
1377e24256c95afb64b4d5abf201a0f9f0527cb4cf3Douglas Gregor// CHECK-NOT: ClsB
1387e24256c95afb64b4d5abf201a0f9f0527cb4cf3Douglas Gregor// CHECK: usrs.cpp c:@NA@foo_alias3
1391d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek// CHECK: usrs.cpp c:@aN Extent=[68:1 - 73:2]
1401d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek// CHECK: usrs.cpp c:@aN@C@RDar9371763_Foo Extent=[69:1 - 72:2]
1411d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek// CHECK: usrs.cpp c: Extent=[70:1 - 70:8]
1421d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@1131@aN@C@RDar9371763_Foo@F@bar# Extent=[71:3 - 71:13]
1431d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@1131@aN@C@RDar9371763_Foo@F@bar# Extent=[75:1 - 75:31]
1441d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek// CHECK: usrs.cpp c:@F@rdar9371763# Extent=[77:1 - 80:2]
1451d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek// CHECK: usrs.cpp c:usrs.cpp@1204@F@rdar9371763#@foo Extent=[78:3 - 78:22]
1461d8052db5a38b62ba5f3802160dcccd87fa0b5b8Ted Kremenek
147