Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/build/clang-plugin/tests/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  TestMustOverride.cpp   Sprache: C

 
#define MOZ_MUST_OVERRIDE __attribute__((annotate("moz_must_override")))
// Ignore warnings not related to static analysis here
#pragma GCC diagnostic ignored "-Woverloaded-virtual"

struct S {
  virtual void f() MOZ_MUST_OVERRIDE; // expected-note {{function to override is here}}
  virtual void g() MOZ_MUST_OVERRIDE;
  virtual void h() MOZ_MUST_OVERRIDE; // expected-note {{function to override is here}}
};
struct C : S { // expected-error {{'C' must override 'f'}} expected-error {{'C' must override 'h'}}
  virtual void g() MOZ_MUST_OVERRIDE; // expected-note {{function to override is here}}
  virtual void h(int);
  void q() MOZ_MUST_OVERRIDE; // expected-note {{function to override is here}}
};
struct D : C { // expected-error {{'D' must override 'g'}} expected-error {{'D' must override 'q'}}
  virtual void f();
};

struct Base {
  virtual void VirtMethod() MOZ_MUST_OVERRIDE; // expected-note {{function to override is here}}
  void NonVirtMethod() MOZ_MUST_OVERRIDE; // expected-note {{function to override is here}}
  static void StaticMethod() MOZ_MUST_OVERRIDE;
};

struct DoesNotPropagate : Base {
  virtual void VirtMethod();
  void NonVirtMethod();
  static void StaticMethod();
};

struct Final : DoesNotPropagate { };

struct Propagates : Base {
  virtual void VirtMethod() MOZ_MUST_OVERRIDE; // expected-note {{function to override is here}}
  void NonVirtMethod() MOZ_MUST_OVERRIDE; // expected-note {{function to override is here}}
  static void StaticMethod() MOZ_MUST_OVERRIDE; // expected-note {{function to override is here}}
};

struct FailsFinal : Propagates { }; // expected-error {{'FailsFinal' must override 'VirtMethod'}} expected-error {{'FailsFinal' must override 'NonVirtMethod'}} expected-error {{'FailsFinal' must override 'StaticMethod'}}

struct WrongOverload : Base { // expected-error {{'WrongOverload' must override 'VirtMethod'}} expected-error {{'WrongOverload' must override 'NonVirtMethod'}}
  virtual void VirtMethod() const;
  void NonVirtMethod(int param);
  static void StaticMethod();
};

namespace A { namespace B { namespace C {
  struct Param {};
  struct Base {
    void f(Param p) MOZ_MUST_OVERRIDE; // expected-note {{function to override is here}}
  };
}}}

struct Param {};

struct Derived : A::B::C::Base {
  typedef A::B::C::Param Typedef;
  void f(Typedef t);
};

struct BadDerived : A::B::C::Base { // expected-error {{'BadDerived' must override 'f'}}
  void f(Param p);
};

Messung V0.5
C=98 H=100 G=98

¤ Dauer der Verarbeitung: 0.9 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.