Douglas Gregor | f525160 | 2011-03-08 17:10:18 +0000 | [diff] [blame] | 1 | class Base { |
| 2 | public: |
| 3 | virtual void f(); |
| 4 | }; |
| 5 | |
| 6 | class Derived final : public Base { |
| 7 | virtual void f() override final; |
| 8 | |
| 9 | struct final { }; |
| 10 | }; |
| 11 | |
| 12 | typedef int override; |
| 13 | struct Base2 { |
| 14 | virtual int override(); |
| 15 | }; |
| 16 | |
| 17 | struct Derived2 : Base2 { |
| 18 | ::override override() override; |
| 19 | }; |
| 20 | |
| 21 | // RUN: c-index-test -test-annotate-tokens=%s:6:1:19:1 %s | FileCheck -check-prefix=CHECK-OVERRIDE-FINAL %s |
| 22 | |
| 23 | // CHECK-OVERRIDE-FINAL: Keyword: "class" [6:1 - 6:6] ClassDecl=Derived:6:7 (Definition) |
| 24 | // CHECK-OVERRIDE-FINAL: Identifier: "Derived" [6:7 - 6:14] ClassDecl=Derived:6:7 (Definition) |
Argyrios Kyrtzidis | 6639e92 | 2011-09-13 17:39:31 +0000 | [diff] [blame] | 25 | // CHECK-OVERRIDE-FINAL: Keyword: "final" [6:15 - 6:20] attribute(final)= |
Douglas Gregor | f525160 | 2011-03-08 17:10:18 +0000 | [diff] [blame] | 26 | // CHECK-OVERRIDE-FINAL: Punctuation: ":" [6:21 - 6:22] ClassDecl=Derived:6:7 (Definition) |
| 27 | // CHECK-OVERRIDE-FINAL: Keyword: "public" [6:23 - 6:29] C++ base class specifier=class Base:1:7 [access=public isVirtual=false] |
| 28 | // CHECK-OVERRIDE-FINAL: Identifier: "Base" [6:30 - 6:34] TypeRef=class Base:1:7 |
| 29 | // CHECK-OVERRIDE-FINAL: Punctuation: "{" [6:35 - 6:36] ClassDecl=Derived:6:7 (Definition) |
Argyrios Kyrtzidis | e9de485 | 2013-01-07 19:16:27 +0000 | [diff] [blame] | 30 | // CHECK-OVERRIDE-FINAL: Keyword: "virtual" [7:3 - 7:10] CXXMethod=f:7:16 (virtual) [Overrides @3:16] |
Douglas Gregor | b83d4d7 | 2011-05-13 15:54:42 +0000 | [diff] [blame] | 31 | // CHECK-OVERRIDE-FINAL: Keyword: "void" [7:11 - 7:15] CXXMethod=f:7:16 (virtual) [Overrides @3:16] |
| 32 | // CHECK-OVERRIDE-FINAL: Identifier: "f" [7:16 - 7:17] CXXMethod=f:7:16 (virtual) [Overrides @3:16] |
| 33 | // CHECK-OVERRIDE-FINAL: Punctuation: "(" [7:17 - 7:18] CXXMethod=f:7:16 (virtual) [Overrides @3:16] |
| 34 | // CHECK-OVERRIDE-FINAL: Punctuation: ")" [7:18 - 7:19] CXXMethod=f:7:16 (virtual) [Overrides @3:16] |
Argyrios Kyrtzidis | 6639e92 | 2011-09-13 17:39:31 +0000 | [diff] [blame] | 35 | // CHECK-OVERRIDE-FINAL: Keyword: "override" [7:20 - 7:28] attribute(override)= |
| 36 | // CHECK-OVERRIDE-FINAL: Keyword: "final" [7:29 - 7:34] attribute(final)= |
Douglas Gregor | f525160 | 2011-03-08 17:10:18 +0000 | [diff] [blame] | 37 | // CHECK-OVERRIDE-FINAL: Punctuation: ";" [7:34 - 7:35] ClassDecl=Derived:6:7 (Definition) |
| 38 | // CHECK-OVERRIDE-FINAL: Keyword: "struct" [9:3 - 9:9] StructDecl=final:9:10 (Definition) |
| 39 | // CHECK-OVERRIDE-FINAL: Identifier: "final" [9:10 - 9:15] StructDecl=final:9:10 (Definition) |
| 40 | // CHECK-OVERRIDE-FINAL: Punctuation: "{" [9:16 - 9:17] StructDecl=final:9:10 (Definition) |
| 41 | // CHECK-OVERRIDE-FINAL: Punctuation: "}" [9:18 - 9:19] StructDecl=final:9:10 (Definition) |
| 42 | // CHECK-OVERRIDE-FINAL: Punctuation: ";" [9:19 - 9:20] ClassDecl=Derived:6:7 (Definition) |