Swift: replace assert with CODEQL_ASSERT

This commit is contained in:
Paolo Tranquilli
2023-05-04 12:15:58 +02:00
parent bce483ddb1
commit d61e366441
2 changed files with 16 additions and 4 deletions

View File

@@ -5,8 +5,17 @@
#include "absl/strings/str_join.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_split.h"
#include "swift/logging/SwiftAssert.h"
namespace codeql {
namespace {
Logger& logger() {
static Logger ret{"diagnostics"};
return ret;
}
} // namespace
void SwiftDiagnosticsSource::emit(std::ostream& out,
std::string_view timestamp,
std::string_view message) const {
@@ -36,6 +45,10 @@ std::string SwiftDiagnosticsSource::sourceId() const {
std::replace(ret.begin(), ret.end(), '_', '-');
return ret;
}
void SwiftDiagnosticsSource::inscribeImpl(const SwiftDiagnosticsSource* source) {
auto [it, inserted] = map().emplace(source->id, source);
CODEQL_ASSERT(inserted, "duplicate diagnostics source detected with id {}", source->id);
}
void SwiftDiagnosticsDumper::write(const char* buffer, std::size_t bufferSize) {
binlog::Range range{buffer, bufferSize};

View File

@@ -31,10 +31,7 @@ struct SwiftDiagnosticsSource {
template <const SwiftDiagnosticsSource* Spec>
static void inscribe() {
static std::once_flag once;
std::call_once(once, [] {
auto [it, inserted] = map().emplace(Spec->id, Spec);
assert(inserted);
});
std::call_once(once, inscribeImpl, Spec);
}
// gets a previously inscribed SwiftDiagnosticsSource for the given id. Will abort if none exists
@@ -47,6 +44,8 @@ struct SwiftDiagnosticsSource {
void emit(std::ostream& out, std::string_view timestamp, std::string_view message) const;
private:
static void inscribeImpl(const SwiftDiagnosticsSource* Spec);
std::string sourceId() const;
using Map = std::unordered_map<std::string, const SwiftDiagnosticsSource*>;