Skip to content

Commit f56e70d

Browse files
authored
Fix visitor stubs in traversal templates #1084
Making them valid means that derived implementations need not implement all of them, and can fall back on the ones in the template.
1 parent bcb29e5 commit f56e70d

1 file changed

Lines changed: 34 additions & 34 deletions

File tree

src/wasm-traversal.h

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -35,40 +35,40 @@ namespace wasm {
3535
template<typename SubType, typename ReturnType = void>
3636
struct Visitor {
3737
// Expression visitors
38-
ReturnType visitBlock(Block* curr) {}
39-
ReturnType visitIf(If* curr) {}
40-
ReturnType visitLoop(Loop* curr) {}
41-
ReturnType visitBreak(Break* curr) {}
42-
ReturnType visitSwitch(Switch* curr) {}
43-
ReturnType visitCall(Call* curr) {}
44-
ReturnType visitCallImport(CallImport* curr) {}
45-
ReturnType visitCallIndirect(CallIndirect* curr) {}
46-
ReturnType visitGetLocal(GetLocal* curr) {}
47-
ReturnType visitSetLocal(SetLocal* curr) {}
48-
ReturnType visitGetGlobal(GetGlobal* curr) {}
49-
ReturnType visitSetGlobal(SetGlobal* curr) {}
50-
ReturnType visitLoad(Load* curr) {}
51-
ReturnType visitStore(Store* curr) {}
52-
ReturnType visitAtomicRMW(AtomicRMW* curr) {return ReturnType();} //Stub impl so not every pass has to implement this yet.
53-
ReturnType visitAtomicCmpxchg(AtomicCmpxchg* curr) {return ReturnType();} //Stub impl so not every pass has to implement this yet.
54-
ReturnType visitConst(Const* curr) {}
55-
ReturnType visitUnary(Unary* curr) {}
56-
ReturnType visitBinary(Binary* curr) {}
57-
ReturnType visitSelect(Select* curr) {}
58-
ReturnType visitDrop(Drop* curr) {}
59-
ReturnType visitReturn(Return* curr) {}
60-
ReturnType visitHost(Host* curr) {}
61-
ReturnType visitNop(Nop* curr) {}
62-
ReturnType visitUnreachable(Unreachable* curr) {}
38+
ReturnType visitBlock(Block* curr) { return ReturnType(); }
39+
ReturnType visitIf(If* curr) { return ReturnType(); }
40+
ReturnType visitLoop(Loop* curr) { return ReturnType(); }
41+
ReturnType visitBreak(Break* curr) { return ReturnType(); }
42+
ReturnType visitSwitch(Switch* curr) { return ReturnType(); }
43+
ReturnType visitCall(Call* curr) { return ReturnType(); }
44+
ReturnType visitCallImport(CallImport* curr) { return ReturnType(); }
45+
ReturnType visitCallIndirect(CallIndirect* curr) { return ReturnType(); }
46+
ReturnType visitGetLocal(GetLocal* curr) { return ReturnType(); }
47+
ReturnType visitSetLocal(SetLocal* curr) { return ReturnType(); }
48+
ReturnType visitGetGlobal(GetGlobal* curr) { return ReturnType(); }
49+
ReturnType visitSetGlobal(SetGlobal* curr) { return ReturnType(); }
50+
ReturnType visitLoad(Load* curr) { return ReturnType(); }
51+
ReturnType visitStore(Store* curr) { return ReturnType(); }
52+
ReturnType visitAtomicRMW(AtomicRMW* curr) { return ReturnType(); }
53+
ReturnType visitAtomicCmpxchg(AtomicCmpxchg* curr) { return ReturnType(); }
54+
ReturnType visitConst(Const* curr) { return ReturnType(); }
55+
ReturnType visitUnary(Unary* curr) { return ReturnType(); }
56+
ReturnType visitBinary(Binary* curr) { return ReturnType(); }
57+
ReturnType visitSelect(Select* curr) { return ReturnType(); }
58+
ReturnType visitDrop(Drop* curr) { return ReturnType(); }
59+
ReturnType visitReturn(Return* curr) { return ReturnType(); }
60+
ReturnType visitHost(Host* curr) { return ReturnType(); }
61+
ReturnType visitNop(Nop* curr) { return ReturnType(); }
62+
ReturnType visitUnreachable(Unreachable* curr) { return ReturnType(); }
6363
// Module-level visitors
64-
ReturnType visitFunctionType(FunctionType* curr) {}
65-
ReturnType visitImport(Import* curr) {}
66-
ReturnType visitExport(Export* curr) {}
67-
ReturnType visitGlobal(Global* curr) {}
68-
ReturnType visitFunction(Function* curr) {}
69-
ReturnType visitTable(Table* curr) {}
70-
ReturnType visitMemory(Memory* curr) {}
71-
ReturnType visitModule(Module* curr) {}
64+
ReturnType visitFunctionType(FunctionType* curr) { return ReturnType(); }
65+
ReturnType visitImport(Import* curr) { return ReturnType(); }
66+
ReturnType visitExport(Export* curr) { return ReturnType(); }
67+
ReturnType visitGlobal(Global* curr) { return ReturnType(); }
68+
ReturnType visitFunction(Function* curr) { return ReturnType(); }
69+
ReturnType visitTable(Table* curr) { return ReturnType(); }
70+
ReturnType visitMemory(Memory* curr) { return ReturnType(); }
71+
ReturnType visitModule(Module* curr) { return ReturnType(); }
7272

7373
ReturnType visit(Expression* curr) {
7474
assert(curr);
@@ -117,7 +117,7 @@ struct Visitor {
117117
template<typename SubType, typename ReturnType = void>
118118
struct UnifiedExpressionVisitor : public Visitor<SubType> {
119119
// called on each node
120-
ReturnType visitExpression(Expression* curr) {}
120+
ReturnType visitExpression(Expression* curr) { return ReturnType(); }
121121

122122
// redirects
123123
ReturnType visitBlock(Block* curr) { return static_cast<SubType*>(this)->visitExpression(curr); }

0 commit comments

Comments
 (0)