mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 08:45:46 +00:00
e0d7fa5720
MozReview-Commit-ID: 9G79Wm5fbHc
48 lines
964 B
C++
48 lines
964 B
C++
#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;
|
|
}
|
|
};
|