Path: blob/main/contrib/llvm-project/clang/lib/InstallAPI/DiagnosticBuilderWrappers.cpp
35233 views
//===- DiagnosticBuilderWrappers.cpp ----------------------------*- C++-*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#include "DiagnosticBuilderWrappers.h"9#include "llvm/ADT/STLExtras.h"10#include "llvm/ADT/SmallString.h"11#include "llvm/Support/raw_ostream.h"12#include "llvm/TextAPI/Platform.h"1314using clang::DiagnosticBuilder;1516namespace llvm {17namespace MachO {18const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,19const Architecture &Arch) {20DB.AddString(getArchitectureName(Arch));21return DB;22}2324const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,25const ArchitectureSet &ArchSet) {26DB.AddString(std::string(ArchSet));27return DB;28}2930const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,31const PlatformType &Platform) {32DB.AddString(getPlatformName(Platform));33return DB;34}3536const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,37const PlatformVersionSet &Platforms) {38std::string PlatformAsString;39raw_string_ostream Stream(PlatformAsString);4041Stream << "[ ";42llvm::interleaveComma(43Platforms, Stream,44[&Stream](const std::pair<PlatformType, VersionTuple> &PV) {45Stream << getPlatformName(PV.first);46if (!PV.second.empty())47Stream << PV.second.getAsString();48});49Stream << " ]";50DB.AddString(PlatformAsString);51return DB;52}5354const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,55const FileType &Type) {56switch (Type) {57case FileType::MachO_Bundle:58DB.AddString("mach-o bundle");59return DB;60case FileType::MachO_DynamicLibrary:61DB.AddString("mach-o dynamic library");62return DB;63case FileType::MachO_DynamicLibrary_Stub:64DB.AddString("mach-o dynamic library stub");65return DB;66case FileType::TBD_V1:67DB.AddString("tbd-v1");68return DB;69case FileType::TBD_V2:70DB.AddString("tbd-v2");71return DB;72case FileType::TBD_V3:73DB.AddString("tbd-v3");74return DB;75case FileType::TBD_V4:76DB.AddString("tbd-v4");77return DB;78case FileType::TBD_V5:79DB.AddString("tbd-v5");80return DB;81case FileType::Invalid:82case FileType::All:83break;84}85llvm_unreachable("Unexpected file type for diagnostics.");86}8788const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,89const PackedVersion &Version) {90std::string VersionString;91raw_string_ostream OS(VersionString);92OS << Version;93DB.AddString(VersionString);94return DB;95}9697const clang::DiagnosticBuilder &98operator<<(const clang::DiagnosticBuilder &DB,99const StringMapEntry<ArchitectureSet> &LibAttr) {100std::string IFAsString;101raw_string_ostream OS(IFAsString);102103OS << LibAttr.getKey() << " [ " << LibAttr.getValue() << " ]";104DB.AddString(IFAsString);105return DB;106}107108} // namespace MachO109} // namespace llvm110111112