13bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenek// RUN: c-index-test -test-print-linkage-source %s | FileCheck %s 23bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenek 33bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenekenum Baz { Qux = 0 }; 43bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenekint x; 53bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenekvoid foo(); 63bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenekstatic int w; 73bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenekvoid bar(int y) { 83bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenek static int z; 93bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenek int k; 103bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenek} 113bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenekextern int n; 12c2a2b3c2c2da1086d76bf804633ed5c6c48ae722Douglas Gregorstatic int wibble(int); 133bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenek 14f8d34ed0d0933350323d9f7a8521011d73dc98d5Argyrios Kyrtzidisvoid ena(int (*dio)(int tria)); 15f8d34ed0d0933350323d9f7a8521011d73dc98d5Argyrios Kyrtzidis 16a7a2f2a96dc9d2e66a5e6ee7ca50cb04931f4c98Rafael Espindolastatic int test2; 17a7a2f2a96dc9d2e66a5e6ee7ca50cb04931f4c98Rafael Espindolavoid f16(void) { 18a7a2f2a96dc9d2e66a5e6ee7ca50cb04931f4c98Rafael Espindola extern int test2; 19a7a2f2a96dc9d2e66a5e6ee7ca50cb04931f4c98Rafael Espindola} 20a7a2f2a96dc9d2e66a5e6ee7ca50cb04931f4c98Rafael Espindola 21a7a2f2a96dc9d2e66a5e6ee7ca50cb04931f4c98Rafael Espindola 223bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenek// CHECK: EnumDecl=Baz:3:6 (Definition)linkage=External 233bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenek// CHECK: EnumConstantDecl=Qux:3:12 (Definition)linkage=External 243bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenek// CHECK: VarDecl=x:4:5linkage=External 253bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenek// CHECK: FunctionDecl=foo:5:6linkage=External 26c2a2b3c2c2da1086d76bf804633ed5c6c48ae722Douglas Gregor// CHECK: VarDecl=w:6:12linkage=Internal 273bed527b10502c6a5916ebb6e6abc49687ce1444Ted Kremenek// CHECK: FunctionDecl=bar:7:6 (Definition)linkage=External 28c2a2b3c2c2da1086d76bf804633ed5c6c48ae722Douglas Gregor// CHECK: ParmDecl=y:7:14 (Definition)linkage=NoLinkage 29c2a2b3c2c2da1086d76bf804633ed5c6c48ae722Douglas Gregor// CHECK: VarDecl=z:8:14 (Definition)linkage=NoLinkage 30c2a2b3c2c2da1086d76bf804633ed5c6c48ae722Douglas Gregor// CHECK: VarDecl=k:9:7 (Definition)linkage=NoLinkage 31c2a2b3c2c2da1086d76bf804633ed5c6c48ae722Douglas Gregor// CHECK: VarDecl=n:11:12linkage=External 32c2a2b3c2c2da1086d76bf804633ed5c6c48ae722Douglas Gregor// CHECK: FunctionDecl=wibble:12:12linkage=Internal 33f8d34ed0d0933350323d9f7a8521011d73dc98d5Argyrios Kyrtzidis// CHECK: ParmDecl=:12:22 (Definition)linkage=NoLinkage 34f8d34ed0d0933350323d9f7a8521011d73dc98d5Argyrios Kyrtzidis// CHECK: FunctionDecl=ena:14:6linkage=External 35f8d34ed0d0933350323d9f7a8521011d73dc98d5Argyrios Kyrtzidis// CHECK: ParmDecl=dio:14:16 (Definition)linkage=NoLinkage 36f8d34ed0d0933350323d9f7a8521011d73dc98d5Argyrios Kyrtzidis// CHECK: ParmDecl=tria:14:25 (Definition)linkage=NoLinkage 37a7a2f2a96dc9d2e66a5e6ee7ca50cb04931f4c98Rafael Espindola// CHECK: VarDecl=test2{{.*}}linkage=Internal 38a7a2f2a96dc9d2e66a5e6ee7ca50cb04931f4c98Rafael Espindola// CHECK: VarDecl=test2{{.*}}linkage=Internal 39