mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
Swift: make visit arguments pointers again
This commit is contained in:
@@ -105,11 +105,7 @@ class SwiftDispatcher {
|
||||
return *l;
|
||||
}
|
||||
waitingForNewLabel = e;
|
||||
if constexpr (std::is_pointer_v<E>) {
|
||||
visit(*e, std::forward<Args>(args)...);
|
||||
} else {
|
||||
visit(e, std::forward<Args>(args)...);
|
||||
}
|
||||
visit(e, std::forward<Args>(args)...);
|
||||
// TODO when everything is moved to structured C++ classes, this should be moved to createEntry
|
||||
if (auto l = store.get(e)) {
|
||||
if constexpr (IsLocatable<E>) {
|
||||
@@ -332,18 +328,15 @@ class SwiftDispatcher {
|
||||
return ret;
|
||||
}
|
||||
|
||||
// TODO: for const correctness these should consistently be `const` (and maybe const references
|
||||
// as we don't expect `nullptr` here. However `swift::ASTVisitor` and `swift::TypeVisitor` do not
|
||||
// accept const pointers
|
||||
virtual void visit(const swift::Decl& decl) = 0;
|
||||
virtual void visit(const swift::Stmt& stmt) = 0;
|
||||
virtual void visit(const swift::StmtCondition& cond) = 0;
|
||||
virtual void visit(const swift::StmtConditionElement& cond) = 0;
|
||||
virtual void visit(const swift::CaseLabelItem& item) = 0;
|
||||
virtual void visit(const swift::Expr& expr) = 0;
|
||||
virtual void visit(const swift::Pattern& pattern) = 0;
|
||||
virtual void visit(const swift::TypeRepr& typeRepr, swift::Type type) = 0;
|
||||
virtual void visit(const swift::TypeBase& type) = 0;
|
||||
virtual void visit(const swift::Decl* decl) = 0;
|
||||
virtual void visit(const swift::Stmt* stmt) = 0;
|
||||
virtual void visit(const swift::StmtCondition* cond) = 0;
|
||||
virtual void visit(const swift::StmtConditionElement* cond) = 0;
|
||||
virtual void visit(const swift::CaseLabelItem* item) = 0;
|
||||
virtual void visit(const swift::Expr* expr) = 0;
|
||||
virtual void visit(const swift::Pattern* pattern) = 0;
|
||||
virtual void visit(const swift::TypeRepr* typeRepr, swift::Type type) = 0;
|
||||
virtual void visit(const swift::TypeBase* type) = 0;
|
||||
|
||||
void visit(const std::filesystem::path& file) {
|
||||
auto entry = createEntry(file, file.string());
|
||||
|
||||
@@ -21,22 +21,22 @@ class SwiftVisitor : private SwiftDispatcher {
|
||||
void extract(swift::Token& comment) { emitComment(comment); }
|
||||
|
||||
private:
|
||||
void visit(const swift::Decl& decl) override { declTranslator.translateAndEmit(decl); }
|
||||
void visit(const swift::Stmt& stmt) override { stmtTranslator.translateAndEmit(stmt); }
|
||||
void visit(const swift::StmtCondition& cond) override { stmtTranslator.translateAndEmit(cond); }
|
||||
void visit(const swift::StmtConditionElement& element) override {
|
||||
stmtTranslator.translateAndEmit(element);
|
||||
void visit(const swift::Decl* decl) override { declTranslator.translateAndEmit(*decl); }
|
||||
void visit(const swift::Stmt* stmt) override { stmtTranslator.translateAndEmit(*stmt); }
|
||||
void visit(const swift::StmtCondition* cond) override { stmtTranslator.translateAndEmit(*cond); }
|
||||
void visit(const swift::StmtConditionElement* element) override {
|
||||
stmtTranslator.translateAndEmit(*element);
|
||||
}
|
||||
|
||||
void visit(const swift::CaseLabelItem& item) override { stmtTranslator.translateAndEmit(item); }
|
||||
void visit(const swift::Expr& expr) override { exprTranslator.translateAndEmit(expr); }
|
||||
void visit(const swift::Pattern& pattern) override {
|
||||
patternTranslator.translateAndEmit(pattern);
|
||||
void visit(const swift::CaseLabelItem* item) override { stmtTranslator.translateAndEmit(*item); }
|
||||
void visit(const swift::Expr* expr) override { exprTranslator.translateAndEmit(*expr); }
|
||||
void visit(const swift::Pattern* pattern) override {
|
||||
patternTranslator.translateAndEmit(*pattern);
|
||||
}
|
||||
|
||||
void visit(const swift::TypeBase& type) override { typeTranslator.translateAndEmit(type); }
|
||||
void visit(const swift::TypeRepr& typeRepr, swift::Type type) override {
|
||||
typeTranslator.translateAndEmit(typeRepr, type);
|
||||
void visit(const swift::TypeBase* type) override { typeTranslator.translateAndEmit(*type); }
|
||||
void visit(const swift::TypeRepr* typeRepr, swift::Type type) override {
|
||||
typeTranslator.translateAndEmit(*typeRepr, type);
|
||||
}
|
||||
|
||||
DeclTranslator declTranslator{*this};
|
||||
|
||||
Reference in New Issue
Block a user