1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
28e8fb3be5bd78f0564444eca02b404566a5f3b5dAndy Gibbs// expected-no-diagnostics
3c7119a871df4d2d79db3e48fc9d0ab421be54a3dAnders Carlsson
4c7119a871df4d2d79db3e48fc9d0ab421be54a3dAnders Carlssonstruct Base {
5c7119a871df4d2d79db3e48fc9d0ab421be54a3dAnders Carlsson  virtual void override();
6c7119a871df4d2d79db3e48fc9d0ab421be54a3dAnders Carlsson};
7c7119a871df4d2d79db3e48fc9d0ab421be54a3dAnders Carlsson
8c7119a871df4d2d79db3e48fc9d0ab421be54a3dAnders Carlssonstruct S : Base {
91f3b6fdabbb10779a473d6315154d7325ce20aeaAnders Carlsson  virtual void final() final;
101f3b6fdabbb10779a473d6315154d7325ce20aeaAnders Carlsson  virtual void override() override;
11aa031fd7cbba511404a26b733138e392d4f9f17aAnders Carlsson};
12aa031fd7cbba511404a26b733138e392d4f9f17aAnders Carlsson
133ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainarstruct T : Base {
143ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar  virtual void override() override { }
151f3b6fdabbb10779a473d6315154d7325ce20aeaAnders Carlsson};
1637ea6c461897bcfc8865eb130cddd5c1853c3c22Anders Carlsson
1737ea6c461897bcfc8865eb130cddd5c1853c3c22Anders Carlssonstruct override;
18c7119a871df4d2d79db3e48fc9d0ab421be54a3dAnders Carlssonstruct Base2 {
19c7119a871df4d2d79db3e48fc9d0ab421be54a3dAnders Carlsson  virtual override override(int override);
20c7119a871df4d2d79db3e48fc9d0ab421be54a3dAnders Carlsson};
21c7119a871df4d2d79db3e48fc9d0ab421be54a3dAnders Carlsson
22c7119a871df4d2d79db3e48fc9d0ab421be54a3dAnders Carlssonstruct A : Base2 {
23c7119a871df4d2d79db3e48fc9d0ab421be54a3dAnders Carlsson  virtual struct override override(int override) override;
2437ea6c461897bcfc8865eb130cddd5c1853c3c22Anders Carlsson};
25