Skip to content

Commit d67b51a

Browse files
committed
Deduplicate makeXRemover funcs
1 parent a20c1e3 commit d67b51a

1 file changed

Lines changed: 14 additions & 24 deletions

File tree

source/SetRemovers.cpp

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33
#include <slang/ast/ASTVisitor.h>
44
#include <unordered_map>
55

6+
template <typename TNodeMapper>
7+
SetRemover makeSetRemover(std::shared_ptr<SyntaxTree> tree) {
8+
Compilation compilation;
9+
compilation.addSyntaxTree(tree);
10+
compilation.getAllDiagnostics();
11+
TNodeMapper mapper;
12+
compilation.getRoot().visit(mapper);
13+
return SetRemover(std::move(mapper.removals));
14+
}
15+
616
class FunctionArgMapper final : public ASTVisitor<FunctionArgMapper, true, true, true> {
717
// Builds vector that maps the argument in definition to all calls
818
public:
@@ -127,12 +137,7 @@ class FunctionArgMapper final : public ASTVisitor<FunctionArgMapper, true, true,
127137
};
128138

129139
SetRemover makeFunctionArgRemover(std::shared_ptr<SyntaxTree> tree) {
130-
Compilation compilation;
131-
compilation.addSyntaxTree(tree);
132-
compilation.getAllDiagnostics();
133-
FunctionArgMapper mapper;
134-
compilation.getRoot().visit(mapper);
135-
return SetRemover(std::move(mapper.removals));
140+
return makeSetRemover<FunctionArgMapper>(tree);
136141
}
137142

138143
class PortMapper final : public ASTVisitor<PortMapper, true, true, true> {
@@ -220,12 +225,7 @@ class PortMapper final : public ASTVisitor<PortMapper, true, true, true> {
220225
};
221226

222227
SetRemover makePortsRemover(std::shared_ptr<SyntaxTree> tree) {
223-
Compilation compilation;
224-
compilation.addSyntaxTree(tree);
225-
compilation.getAllDiagnostics(); // kludge for launching full elaboration
226-
PortMapper mapper;
227-
compilation.getRoot().visit(mapper);
228-
return SetRemover(std::move(mapper.removals));
228+
return makeSetRemover<PortMapper>(tree);
229229
}
230230

231231
class ExternMapper final : public ASTVisitor<ExternMapper, true, true, true> {
@@ -262,12 +262,7 @@ class ExternMapper final : public ASTVisitor<ExternMapper, true, true, true> {
262262
};
263263

264264
SetRemover makeExternRemover(std::shared_ptr<SyntaxTree> tree) {
265-
Compilation compilation;
266-
compilation.addSyntaxTree(tree);
267-
compilation.getAllDiagnostics(); // kludge for launching full elaboration
268-
ExternMapper mapper;
269-
compilation.getRoot().visit(mapper);
270-
return SetRemover(std::move(mapper.removals));
265+
return makeSetRemover<ExternMapper>(tree);
271266
}
272267

273268
class StructFieldMapper final : public ASTVisitor<StructFieldMapper, true, true, true> {
@@ -295,10 +290,5 @@ class StructFieldMapper final : public ASTVisitor<StructFieldMapper, true, true,
295290
};
296291

297292
SetRemover makeStructFieldRemover(std::shared_ptr<SyntaxTree> tree) {
298-
Compilation compilation;
299-
compilation.addSyntaxTree(tree);
300-
compilation.getAllDiagnostics(); // kludge for launching full elaboration
301-
StructFieldMapper mapper;
302-
compilation.getRoot().visit(mapper);
303-
return SetRemover(std::move(mapper.removals));
293+
return makeSetRemover<StructFieldMapper>(tree);
304294
}

0 commit comments

Comments
 (0)