Skip to content

Commit 3a8efb3

Browse files
committed
Swift: make visit arguments pointers again
1 parent e0eb820 commit 3a8efb3

File tree

2 files changed

+22
-29
lines changed

2 files changed

+22
-29
lines changed

swift/extractor/infra/SwiftDispatcher.h

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,7 @@ class SwiftDispatcher {
105105
return *l;
106106
}
107107
waitingForNewLabel = e;
108-
if constexpr (std::is_pointer_v<E>) {
109-
visit(*e, std::forward<Args>(args)...);
110-
} else {
111-
visit(e, std::forward<Args>(args)...);
112-
}
108+
visit(e, std::forward<Args>(args)...);
113109
// TODO when everything is moved to structured C++ classes, this should be moved to createEntry
114110
if (auto l = store.get(e)) {
115111
if constexpr (IsLocatable<E>) {
@@ -332,18 +328,15 @@ class SwiftDispatcher {
332328
return ret;
333329
}
334330

335-
// TODO: for const correctness these should consistently be `const` (and maybe const references
336-
// as we don't expect `nullptr` here. However `swift::ASTVisitor` and `swift::TypeVisitor` do not
337-
// accept const pointers
338-
virtual void visit(const swift::Decl& decl) = 0;
339-
virtual void visit(const swift::Stmt& stmt) = 0;
340-
virtual void visit(const swift::StmtCondition& cond) = 0;
341-
virtual void visit(const swift::StmtConditionElement& cond) = 0;
342-
virtual void visit(const swift::CaseLabelItem& item) = 0;
343-
virtual void visit(const swift::Expr& expr) = 0;
344-
virtual void visit(const swift::Pattern& pattern) = 0;
345-
virtual void visit(const swift::TypeRepr& typeRepr, swift::Type type) = 0;
346-
virtual void visit(const swift::TypeBase& type) = 0;
331+
virtual void visit(const swift::Decl* decl) = 0;
332+
virtual void visit(const swift::Stmt* stmt) = 0;
333+
virtual void visit(const swift::StmtCondition* cond) = 0;
334+
virtual void visit(const swift::StmtConditionElement* cond) = 0;
335+
virtual void visit(const swift::CaseLabelItem* item) = 0;
336+
virtual void visit(const swift::Expr* expr) = 0;
337+
virtual void visit(const swift::Pattern* pattern) = 0;
338+
virtual void visit(const swift::TypeRepr* typeRepr, swift::Type type) = 0;
339+
virtual void visit(const swift::TypeBase* type) = 0;
347340

348341
void visit(const std::filesystem::path& file) {
349342
auto entry = createEntry(file, file.string());

swift/extractor/translators/SwiftVisitor.h

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,22 @@ class SwiftVisitor : private SwiftDispatcher {
2121
void extract(swift::Token& comment) { emitComment(comment); }
2222

2323
private:
24-
void visit(const swift::Decl& decl) override { declTranslator.translateAndEmit(decl); }
25-
void visit(const swift::Stmt& stmt) override { stmtTranslator.translateAndEmit(stmt); }
26-
void visit(const swift::StmtCondition& cond) override { stmtTranslator.translateAndEmit(cond); }
27-
void visit(const swift::StmtConditionElement& element) override {
28-
stmtTranslator.translateAndEmit(element);
24+
void visit(const swift::Decl* decl) override { declTranslator.translateAndEmit(*decl); }
25+
void visit(const swift::Stmt* stmt) override { stmtTranslator.translateAndEmit(*stmt); }
26+
void visit(const swift::StmtCondition* cond) override { stmtTranslator.translateAndEmit(*cond); }
27+
void visit(const swift::StmtConditionElement* element) override {
28+
stmtTranslator.translateAndEmit(*element);
2929
}
3030

31-
void visit(const swift::CaseLabelItem& item) override { stmtTranslator.translateAndEmit(item); }
32-
void visit(const swift::Expr& expr) override { exprTranslator.translateAndEmit(expr); }
33-
void visit(const swift::Pattern& pattern) override {
34-
patternTranslator.translateAndEmit(pattern);
31+
void visit(const swift::CaseLabelItem* item) override { stmtTranslator.translateAndEmit(*item); }
32+
void visit(const swift::Expr* expr) override { exprTranslator.translateAndEmit(*expr); }
33+
void visit(const swift::Pattern* pattern) override {
34+
patternTranslator.translateAndEmit(*pattern);
3535
}
3636

37-
void visit(const swift::TypeBase& type) override { typeTranslator.translateAndEmit(type); }
38-
void visit(const swift::TypeRepr& typeRepr, swift::Type type) override {
39-
typeTranslator.translateAndEmit(typeRepr, type);
37+
void visit(const swift::TypeBase* type) override { typeTranslator.translateAndEmit(*type); }
38+
void visit(const swift::TypeRepr* typeRepr, swift::Type type) override {
39+
typeTranslator.translateAndEmit(*typeRepr, type);
4040
}
4141

4242
DeclTranslator declTranslator{*this};

0 commit comments

Comments
 (0)