]> granicus.if.org Git - clang/commitdiff
Attempt #3 to placate MSVC.
authorRichard Smith <richard-llvm@metafoo.co.uk>
Mon, 12 Sep 2016 06:38:31 +0000 (06:38 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Mon, 12 Sep 2016 06:38:31 +0000 (06:38 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281197 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/ClangDiagnosticsEmitter.cpp

index 2f16261d764030b24d31942d4d6e6e5ae38d07ef..22e51572b9cb298647b6e635b14ee6c6c2160f94 100644 (file)
@@ -926,16 +926,18 @@ struct DiagText {
     void print(std::vector<std::string> &RST) override;
   };
 
-  std::vector<std::unique_ptr<Piece>> Pieces;
+  // 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;
 
   DiagText();
-  DiagText(DiagText &&O) : Pieces(std::move(O.Pieces)) {}
+  DiagText(DiagText &&O) LLVM_NOEXCEPT : Pieces(std::move(O.Pieces)) {}
 
   DiagText(StringRef Text);
   DiagText(StringRef Kind, StringRef Text);
 
   template<typename P> void add(P Piece) {
-    Pieces.push_back(llvm::make_unique<P>(std::move(Piece)));
+    Pieces.push_back(std::make_shared<P>(std::move(Piece)));
   }
   void print(std::vector<std::string> &RST);
 };
@@ -1032,7 +1034,7 @@ DiagText::DiagText(StringRef Kind, StringRef Text) : DiagText(parseDiagText(Text
   Prefix.Role = Kind;
   Prefix.Text = Kind;
   Prefix.Text += ": ";
-  Pieces.insert(Pieces.begin(), llvm::make_unique<TextPiece>(std::move(Prefix)));
+  Pieces.insert(Pieces.begin(), std::make_shared<TextPiece>(std::move(Prefix)));
 }
 
 void escapeRST(StringRef Str, std::string &Out) {