@@ -53,32 +53,33 @@ std::optional<TrapDomain> createTargetTrapDomain(SwiftExtractorState& state,
5353 return std::nullopt;
5454}
5555
56- std::optional<LinkDomain> createTargetLinkDomain (const SwiftExtractorState& state,
57- const std::filesystem::path& target) {
56+ namespace {
57+ template <typename Domain>
58+ std::optional<Domain> createTarget (const SwiftExtractorState& state,
59+ const std::filesystem::path& target,
60+ const char * extension) {
5861 if (target.empty ()) {
5962 return std::nullopt;
6063 }
61- auto file = getRelativeTrapPath (target, TrapType::linkage, " .link " );
64+ auto file = getRelativeTrapPath (target, TrapType::linkage, extension );
6265 auto ret =
6366 TargetFile::create (file, state.configuration .trapDir , state.configuration .getTempTrapDir ());
6467 if (ret) {
65- return LinkDomain {*std::move (ret)};
68+ return Domain {*std::move (ret)};
6669 }
6770 return std::nullopt;
6871}
6972
73+ } // namespace
74+
75+ std::optional<LinkDomain> createTargetLinkDomain (const SwiftExtractorState& state,
76+ const std::filesystem::path& target) {
77+ return createTarget<LinkDomain>(state, target, " .link" );
78+ }
79+
7080std::optional<ObjectDomain> createTargetObjectDomain (const SwiftExtractorState& state,
7181 const std::filesystem::path& target) {
72- if (target.empty ()) {
73- return std::nullopt;
74- }
75- auto file = getRelativeTrapPath (target, TrapType::linkage, " .odep" );
76- auto ret =
77- TargetFile::create (file, state.configuration .trapDir , state.configuration .getTempTrapDir ());
78- if (ret) {
79- return ObjectDomain{*std::move (ret)};
80- }
81- return std::nullopt;
82+ return createTarget<ObjectDomain>(state, target, " .odep" );
8283}
8384
8485} // namespace codeql
0 commit comments