Source code

Revision control

Copy as Markdown

Other Tools

#define MOZ_REQUIRED_BASE_METHOD __attribute__((annotate("moz_required_base_method")))
class Base {
public:
virtual void fo() MOZ_REQUIRED_BASE_METHOD {
}
};
class BaseNonVirtual {
public:
void fo() MOZ_REQUIRED_BASE_METHOD { // expected-error {{MOZ_REQUIRED_BASE_METHOD can be used only on virtual methods}}
}
};
class Deriv : public BaseNonVirtual {
public:
virtual void fo() MOZ_REQUIRED_BASE_METHOD {
}
};
class DerivVirtual : public Base {
public:
void fo() MOZ_REQUIRED_BASE_METHOD {
Base::fo();
}
};
class BaseOperator {
public:
BaseOperator& operator++() MOZ_REQUIRED_BASE_METHOD { // expected-error {{MOZ_REQUIRED_BASE_METHOD can be used only on virtual methods}}
return *this;
}
};
class DerivOperator : public BaseOperator {
public:
virtual DerivOperator& operator++() {
return *this;
}
};
class DerivPrimeOperator : public DerivOperator {
public:
DerivPrimeOperator& operator++() {
return *this;
}
};