summaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2016-09-13 22:22:56 +0000
committerReid Kleckner <rnk@google.com>2016-09-13 22:22:56 +0000
commit238012f2b7106ee47d2a3336ba054689af0fad54 (patch)
tree57c8d7a9f659e5a4decdc5bfb592fdefe8366653 /utils
parent19ed54635a3a99cc6d81e5091f12d481ff44b548 (diff)
Fix a FIXME about MSVC 2013 in the diagnostic doc generation code
Ultimately it boiled down to adding a move constructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281408 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r--utils/TableGen/ClangDiagnosticsEmitter.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/utils/TableGen/ClangDiagnosticsEmitter.cpp b/utils/TableGen/ClangDiagnosticsEmitter.cpp
index 00769a4557..036e742311 100644
--- a/utils/TableGen/ClangDiagnosticsEmitter.cpp
+++ b/utils/TableGen/ClangDiagnosticsEmitter.cpp
@@ -928,13 +928,14 @@ struct DiagText {
void print(std::vector<std::string> &RST) override;
};
struct SelectPiece : Piece {
+ SelectPiece() {}
+ SelectPiece(SelectPiece &&O) LLVM_NOEXCEPT : Options(std::move(O.Options)) {
+ }
std::vector<DiagText> Options;
void print(std::vector<std::string> &RST) override;
};
- // FIXME: This should be a unique_ptr, but I can't figure out how to get MSVC
- // to not issue errors on that.
- std::vector<std::shared_ptr<Piece>> Pieces;
+ std::vector<std::unique_ptr<Piece>> Pieces;
DiagText();
DiagText(DiagText &&O) LLVM_NOEXCEPT : Pieces(std::move(O.Pieces)) {}
@@ -943,7 +944,7 @@ struct DiagText {
DiagText(StringRef Kind, StringRef Text);
template<typename P> void add(P Piece) {
- Pieces.push_back(std::make_shared<P>(std::move(Piece)));
+ Pieces.push_back(llvm::make_unique<P>(std::move(Piece)));
}
void print(std::vector<std::string> &RST);
};
@@ -1040,7 +1041,8 @@ DiagText::DiagText(StringRef Kind, StringRef Text) : DiagText(parseDiagText(Text
Prefix.Role = Kind;
Prefix.Text = Kind;
Prefix.Text += ": ";
- Pieces.insert(Pieces.begin(), std::make_shared<TextPiece>(std::move(Prefix)));
+ Pieces.insert(Pieces.begin(),
+ llvm::make_unique<TextPiece>(std::move(Prefix)));
}
void escapeRST(StringRef Str, std::string &Out) {