Swift: Support fmtlib for assertions/expectations.

Specifically, this adds custom formatters using `path::operator string()` and `error_code::message()` and dereferences a (non-empty) optional. `fmtlib` provides formatters for these standard library types in `fmt/std.h`, but that file also requires RTTI (which we disable) for `std::exception` so we can't use it without either patching `fmtlib` (which they're open to: https://github.com/fmtlib/fmt/issues/3170) or enabling RTTI (which will require some consideration).
This commit is contained in:
Alexandre Boulgakov
2023-05-15 21:14:17 +01:00
parent 99545420d5
commit 7ada125299
3 changed files with 23 additions and 1 deletions

View File

@@ -253,7 +253,7 @@ void DeclTranslator::fillFunction(const swift::AbstractFunctionDecl& decl,
entry.name = !decl.hasName() ? "(unnamed function decl)" : constructName(decl.getName());
entry.body = dispatcher.fetchOptionalLabel(decl.getBody());
CODEQL_EXPECT_OR(return, decl.hasParameterList(), "Function {} has no parameter list",
entry.name);
*entry.name);
entry.params = dispatcher.fetchRepeatedLabels(*decl.getParameters());
auto self = const_cast<swift::ParamDecl* const>(decl.getImplicitSelfDecl());
entry.self_param = dispatcher.fetchOptionalLabel(self);