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 Kyrtzidisvoid 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