diff --git a/llvm/include/llvm/Support/YAMLTraits.h b/llvm/include/llvm/Support/YAMLTraits.h index eca26e90845bf..e707a445012b5 100644 --- a/llvm/include/llvm/Support/YAMLTraits.h +++ b/llvm/include/llvm/Support/YAMLTraits.h @@ -819,6 +819,7 @@ class IO { virtual NodeKind getNodeKind() = 0; virtual void setError(const Twine &) = 0; + virtual std::error_code error() = 0; virtual void setAllowUnknownKeys(bool Allow); template @@ -1448,7 +1449,7 @@ class Input : public IO { ~Input() override; // Check if there was an syntax or semantic error during parsing. - std::error_code error(); + std::error_code error() override; private: bool outputting() const override; @@ -1631,6 +1632,7 @@ class Output : public IO { void scalarTag(std::string &) override; NodeKind getNodeKind() override; void setError(const Twine &message) override; + std::error_code error() override; bool canElideEmptySequence() override; // These are only used by operator<<. They could be private diff --git a/llvm/lib/Support/YAMLTraits.cpp b/llvm/lib/Support/YAMLTraits.cpp index f326422138488..28642e004c4f4 100644 --- a/llvm/lib/Support/YAMLTraits.cpp +++ b/llvm/lib/Support/YAMLTraits.cpp @@ -750,6 +750,8 @@ void Output::scalarTag(std::string &Tag) { void Output::setError(const Twine &message) { } +std::error_code Output::error() { return {}; } + bool Output::canElideEmptySequence() { // Normally, with an optional key/value where the value is an empty sequence, // the whole key/value can be not written. But, that produces wrong yaml