public:
BlockScalarNode(std::unique_ptr<Document> &D, StringRef Anchor, StringRef Tag,
- std::string &Value, StringRef RawVal)
- : Node(NK_BlockScalar, D, Anchor, Tag), Value(std::move(Value)) {
+ StringRef Value, StringRef RawVal)
+ : Node(NK_BlockScalar, D, Anchor, Tag), Value(Value) {
SMLoc Start = SMLoc::getFromPointer(RawVal.begin());
SMLoc End = SMLoc::getFromPointer(RawVal.end());
SourceRange = SMRange(Start, End);
}
private:
- std::string Value;
+ StringRef Value;
};
/// \brief A key and value pair. While not technically a Node under the YAML
, AnchorInfo.Range.substr(1)
, TagInfo.Range
, T.Range);
- case Token::TK_BlockScalar:
+ case Token::TK_BlockScalar: {
getNext();
+ StringRef StrCopy = StringRef(T.Value).copy(NodeAllocator);
return new (NodeAllocator)
BlockScalarNode(stream.CurrentDoc, AnchorInfo.Range.substr(1),
- TagInfo.Range, T.Value, T.Range);
+ TagInfo.Range, StrCopy, T.Range);
+ }
case Token::TK_Key:
// Don't eat the TK_Key, KeyValueNode expects it.
return new (NodeAllocator)