@@ -105,7 +105,11 @@ class SwiftDispatcher {
105
105
return *l;
106
106
}
107
107
waitingForNewLabel = e;
108
- visit (e, std::forward<Args>(args)...);
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
+ }
109
113
// TODO when everything is moved to structured C++ classes, this should be moved to createEntry
110
114
if (auto l = store.get (e)) {
111
115
if constexpr (IsLocatable<E>) {
@@ -331,15 +335,15 @@ class SwiftDispatcher {
331
335
// TODO: for const correctness these should consistently be `const` (and maybe const references
332
336
// as we don't expect `nullptr` here. However `swift::ASTVisitor` and `swift::TypeVisitor` do not
333
337
// accept const pointers
334
- virtual void visit (const swift::Decl* decl) = 0;
335
- virtual void visit (const swift::Stmt* stmt) = 0;
336
- virtual void visit (const swift::StmtCondition* cond) = 0;
337
- virtual void visit (const swift::StmtConditionElement* cond) = 0;
338
- virtual void visit (const swift::CaseLabelItem* item) = 0;
339
- virtual void visit (const swift::Expr* expr) = 0;
340
- virtual void visit (const swift::Pattern* pattern) = 0;
341
- virtual void visit (const swift::TypeRepr* typeRepr, swift::Type type) = 0;
342
- virtual void visit (swift::TypeBase* type) = 0;
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;
343
347
344
348
void visit (const std::filesystem::path& file) {
345
349
auto entry = createEntry (file, file.string ());
0 commit comments