//
//===----------------------------------------------------------------------===//
+#include "llvm/Support/Errc.h"
#include "llvm/Support/YAMLTraits.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/Casting.h"
Input::~Input() {
}
-error_code Input::error() {
- return EC;
-}
+std::error_code Input::error() { return EC; }
// Pin the vtables to this file.
void Input::HNode::anchor() {}
Node *N = DocIterator->getRoot();
if (!N) {
assert(Strm->failed() && "Root is NULL iff parsing failed");
- EC = std::make_error_code(std::errc::invalid_argument);
+ EC = make_error_code(errc::invalid_argument);
return false;
}
// nodes are present.
if (!CurrentNode) {
if (Required)
- EC = std::make_error_code(std::errc::invalid_argument);
+ EC = make_error_code(errc::invalid_argument);
return false;
}
void Input::setError(Node *node, const Twine &message) {
Strm->printError(node, message);
- EC = std::make_error_code(std::errc::invalid_argument);
+ EC = make_error_code(errc::invalid_argument);
}
Input::HNode *Input::createHNodes(Node *N) {
} else if (MappingNode *Map = dyn_cast<MappingNode>(N)) {
MapHNode *mapHNode = new MapHNode(N);
for (KeyValueNode &KVN : *Map) {
- ScalarNode *KeyScalar = dyn_cast<ScalarNode>(KVN.getKey());
+ Node *KeyNode = KVN.getKey();
+ ScalarNode *KeyScalar = dyn_cast<ScalarNode>(KeyNode);
+ if (!KeyScalar) {
+ setError(KeyNode, "Map key must be a scalar");
+ break;
+ }
StringStorage.clear();
StringRef KeyStr = KeyScalar->getValue(StringStorage);
if (!StringStorage.empty()) {