#pragma once #include #include namespace codeql { class SwiftBodyEmissionStrategy { public: SwiftBodyEmissionStrategy(swift::ModuleDecl& currentModule, swift::SourceFile* currentPrimarySourceFile, const swift::Decl* currentLazyDeclaration) : currentModule(currentModule), currentPrimarySourceFile(currentPrimarySourceFile), currentLazyDeclaration(currentLazyDeclaration) { llvm::SmallVector decls; currentModule.getTopLevelDecls(decls); currentTopLevelDecls.insert(decls.begin(), decls.end()); } bool shouldEmitDeclBody(const swift::Decl& decl); private: swift::ModuleDecl& currentModule; swift::SourceFile* currentPrimarySourceFile; const swift::Decl* currentLazyDeclaration; std::unordered_set currentTopLevelDecls; }; } // namespace codeql