xref: /llvm-project/clang/test/Index/overrides.cpp (revision 62770bea4b0bd203c7ad09f57cf68bfc16a58612)
199a26afdSDouglas Gregor struct A {
299a26afdSDouglas Gregor   virtual void f(int);
399a26afdSDouglas Gregor };
499a26afdSDouglas Gregor 
599a26afdSDouglas Gregor struct B {
699a26afdSDouglas Gregor   virtual void f(int);
799a26afdSDouglas Gregor   virtual void g();
899a26afdSDouglas Gregor };
999a26afdSDouglas Gregor 
1099a26afdSDouglas Gregor struct C : B, A {
1199a26afdSDouglas Gregor   virtual void g();
1299a26afdSDouglas Gregor };
1399a26afdSDouglas Gregor 
1499a26afdSDouglas Gregor struct D : C {
1599a26afdSDouglas Gregor   virtual void f(int);
1699a26afdSDouglas Gregor };
1799a26afdSDouglas Gregor 
g()18cc4ca0a3SArgyrios Kyrtzidis void C::g() {}
19cc4ca0a3SArgyrios Kyrtzidis 
20*62770beaSDmitri Gribenko struct E {
21*62770beaSDmitri Gribenko   virtual void h() = 0;
22*62770beaSDmitri Gribenko   template <typename T> void i(T);
23*62770beaSDmitri Gribenko };
24*62770beaSDmitri Gribenko 
2599a26afdSDouglas Gregor // RUN: c-index-test -test-load-source local %s | FileCheck %s
26a8d0c774SDouglas Gregor // CHECK: overrides.cpp:11:16: CXXMethod=g:11:16 (virtual) [Overrides @7:16] Extent=[11:3 - 11:19]
27a8d0c774SDouglas Gregor // CHECK: overrides.cpp:15:16: CXXMethod=f:15:16 (virtual) [Overrides @2:16, @6:16] Extent=[15:3 - 15:22]
28cc4ca0a3SArgyrios Kyrtzidis // CHECK: overrides.cpp:18:9: CXXMethod=g:18:9 (Definition) (virtual) [Overrides @7:16] Extent=[18:1 - 18:15]
29*62770beaSDmitri Gribenko // CHECK: overrides.cpp:21:16: CXXMethod=h:21:16 (virtual) (pure) Extent=[21:3 - 21:23]
30*62770beaSDmitri Gribenko // CHECK: overrides.cpp:22:30: FunctionTemplate=i:22:30 Extent=[22:3 - 22:34]
31