summaryrefslogtreecommitdiff
path: root/src/wasm-validator.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm-validator.h')
-rw-r--r--src/wasm-validator.h24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/wasm-validator.h b/src/wasm-validator.h
index f0e73fb85..237942047 100644
--- a/src/wasm-validator.h
+++ b/src/wasm-validator.h
@@ -25,7 +25,7 @@
namespace wasm {
-struct WasmValidator : public WasmWalker {
+struct WasmValidator : public WasmWalker<WasmValidator, void> {
bool valid;
public:
@@ -37,23 +37,23 @@ public:
// visitors
- void visitLoop(Loop *curr) override {
+ void visitLoop(Loop *curr) {
if (curr->in.is()) {
LoopChildChecker childChecker(curr->in);
childChecker.walk(curr->body);
shouldBeTrue(childChecker.valid);
}
}
- void visitSetLocal(SetLocal *curr) override {
+ void visitSetLocal(SetLocal *curr) {
shouldBeTrue(curr->type == curr->value->type);
}
- void visitLoad(Load *curr) override {
+ void visitLoad(Load *curr) {
validateAlignment(curr->align);
}
- void visitStore(Store *curr) override {
+ void visitStore(Store *curr) {
validateAlignment(curr->align);
}
- void visitSwitch(Switch *curr) override {
+ void visitSwitch(Switch *curr) {
std::set<Name> inTable;
for (auto target : curr->targets) {
if (target.is()) {
@@ -65,14 +65,14 @@ public:
}
shouldBeFalse(curr->default_.is() && inTable.find(curr->default_) == inTable.end());
}
- void visitUnary(Unary *curr) override {
+ void visitUnary(Unary *curr) {
shouldBeTrue(curr->value->type == curr->type);
}
- void visitFunction(Function *curr) override {
+ void visitFunction(Function *curr) {
shouldBeTrue(curr->result == curr->body->type);
}
- void visitMemory(Memory *curr) override {
+ void visitMemory(Memory *curr) {
shouldBeFalse(curr->initial > curr->max);
size_t top = 0;
for (auto segment : curr->segments) {
@@ -81,7 +81,7 @@ public:
}
shouldBeFalse(top > curr->initial);
}
- void visitModule(Module *curr) override {
+ void visitModule(Module *curr) {
for (auto& exp : curr->exports) {
Name name = exp->name;
bool found = false;
@@ -98,13 +98,13 @@ public:
private:
// the "in" label has a none type, since no one can receive its value. make sure no one breaks to it with a value.
- struct LoopChildChecker : public WasmWalker {
+ struct LoopChildChecker : public WasmWalker<LoopChildChecker, void> {
Name in;
bool valid = true;
LoopChildChecker(Name in) : in(in) {}
- void visitBreak(Break *curr) override {
+ void visitBreak(Break *curr) {
if (curr->name == in && curr->value) {
valid = false;
}