brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · ff93e58 Raw
118 lines · cpp
1// RUN: c-index-test -test-load-source all %s -fno-delayed-template-parsing | FileCheck %s2template<typename MyBase>3struct Derived:  MyBase::InnerIterator4{5    Derived() : MyBase::InnerIterator() {}6// CHECK:  TypeRef=MyBase:2:19 Extent=[5:17 - 5:23]7};8 9template<typename MyBase>10struct Derived2:  MyBase::Deeper::InnerIterator11{12    Derived2() : MyBase::Deeper::InnerIterator() {}13// CHECK:  TypeRef=MyBase:9:19 Extent=[12:18 - 12:24]14};15 16template<typename Q>17struct Templ;18 19template<typename MyBase>20struct Derived3:  Templ<MyBase>::InnerIterator21{22    Derived3() : Templ<MyBase>::InnerIterator() {}23// CHECK: TemplateRef=Templ:17:8 Extent=[22:18 - 22:23]24// CHECK: TypeRef=MyBase:19:19 Extent=[22:24 - 22:30]25};26 27 28struct Outer {29    template <typename Q>30    struct Inner {31        typedef Q Parm;32    };33};34 35template<typename Q>36struct Derived4:  Outer::Inner<Q>::Parm37{38    Derived4() : Outer::Inner<Q>::Parm() {}39// CHECK: TypeRef=struct Outer:28:8 Extent=[38:18 - 38:23]40// CHECK: TemplateRef=Inner:30:12 Extent=[38:25 - 38:30]41// CHECK: TypeRef=Q:35:19 Extent=[38:31 - 38:32]42};43 44template<typename Q>45struct Derived5:  Outer::Inner<Q>::Parm::InnerIterator46{47    Derived5() : Outer::Inner<Q>::Parm::InnerIterator() {}48// CHECK: TypeRef=struct Outer:28:8 Extent=[47:18 - 47:23]49// CHECK: TemplateRef=Inner:30:12 Extent=[47:25 - 47:30]50// CHECK: TypeRef=Q:44:19 Extent=[47:31 - 47:32]51};52 53template<typename Q>54struct Derived6:  Outer::Inner<Q>55{56    Derived6() : Outer::Inner<Q>() {}57// CHECK: TypeRef=struct Outer:28:8 Extent=[56:18 - 56:23]58// CHECK: TemplateRef=Inner:30:12 Extent=[56:25 - 56:30]59// CHECK: TypeRef=Q:53:19 Extent=[56:31 - 56:32]60};61 62struct Base {};63 64struct Derived7:  Outer::Inner<Base>::Parm65{66    Derived7() : Outer::Inner<Base>::Parm() {}67// CHECK: TypeRef=struct Outer:28:8 Extent=[66:18 - 66:23]68// CHECK: TemplateRef=Inner:30:12 Extent=[66:25 - 66:30]69// CHECK: TypeRef=struct Base:62:8 Extent=[66:31 - 66:35]70};71 72struct Derived8:  Outer::Inner<Base>73{74    Derived8() : Outer::Inner<Base>() {}75// CHECK: TypeRef=struct Outer:28:8 Extent=[74:18 - 74:23]76// CHECK: TemplateRef=Inner:30:12 Extent=[74:25 - 74:30]77// CHECK: TypeRef=struct Base:62:8 Extent=[74:31 - 74:35]78};79 80namespace Namespace {81    template<typename Q> struct Templ;82 83    struct Outer {84        template <typename Q>85        struct Inner {86            typedef Q Parm;87        };88    };89}90 91template<typename MyBase>92struct Derived9:  Namespace::Templ<MyBase>::InnerIterator93{94    Derived9() : Namespace::Templ<MyBase>::InnerIterator() {}95// CHECK: NamespaceRef=Namespace:80:11 Extent=[94:18 - 94:27]96// CHECK: TemplateRef=Templ:81:33 Extent=[94:29 - 94:34]97// CHECK: TypeRef=MyBase:91:19 Extent=[94:35 - 94:41]98};99 100template<typename MyBase>101struct Derived10:  Namespace::Templ<MyBase>102{103    Derived10() : Namespace::Templ<MyBase>() {}104// CHECK: NamespaceRef=Namespace:80:11 Extent=[103:19 - 103:28]105// CHECK: TemplateRef=Templ:81:33 Extent=[103:30 - 103:35]106// CHECK: TypeRef=MyBase:100:19 Extent=[103:36 - 103:42]107};108 109template<typename MyBase>110struct Derived11:  Namespace::Outer::Inner<MyBase>::Parm111{112    Derived11() : Namespace::Outer::Inner<MyBase>::Parm() {}113// CHECK: NamespaceRef=Namespace:80:11 Extent=[112:19 - 112:28]114// CHECK: TypeRef=struct Namespace::Outer:83:12 Extent=[112:30 - 112:35]115// CHECK: TemplateRef=Inner:85:16 Extent=[112:37 - 112:42]116// CHECK: TypeRef=MyBase:109:19 Extent=[112:43 - 112:49]117};118