brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 789710e Raw
32 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify -Wunnecessary-virtual-specifier -Wno-inconsistent-missing-override %s2 3struct Foo final {4  Foo() = default;5  virtual ~Foo() = default;                      // expected-warning {{virtual method}}6  virtual Foo& operator=(Foo& other) = default;  // expected-warning {{virtual method}}7  virtual Foo& operator=(Foo&& other) = default; // expected-warning {{virtual method}}8  void f();9  virtual void f(int);                           // expected-warning {{virtual method}}10  int g(int x) { return x; };11  virtual int g(bool);                           // expected-warning {{virtual method}}12  static int s();13};14 15struct BarBase {16  virtual ~BarBase() = delete;17  virtual void virt() {}18  virtual int  virt2(int);19  virtual bool virt3(bool);20  int nonvirt();21};22 23struct Bar final : BarBase {24  ~Bar() override = delete;25          void virt() override {};26  virtual int  virt2(int) override;               // `virtual ... override;` is a common pattern, so don't warn27  virtual bool virt3(bool);                       // Already virtual in the base class; triggers28                                                  // -Winconsistent-missing-override or -Wsuggest-override instead29  virtual int  new_virt(bool);                    // expected-warning {{virtual method}}30  int nonvirt();31};32