diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Support/YAMLParser.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/Support/YAMLParser.cpp | 64 |
1 files changed, 18 insertions, 46 deletions
diff --git a/contrib/llvm-project/llvm/lib/Support/YAMLParser.cpp b/contrib/llvm-project/llvm/lib/Support/YAMLParser.cpp index d17e7b227f4a..9b2fe9c4418a 100644 --- a/contrib/llvm-project/llvm/lib/Support/YAMLParser.cpp +++ b/contrib/llvm-project/llvm/lib/Support/YAMLParser.cpp @@ -178,10 +178,10 @@ namespace { /// others) before the SimpleKey's Tok. struct SimpleKey { TokenQueueT::iterator Tok; - unsigned Column = 0; - unsigned Line = 0; - unsigned FlowLevel = 0; - bool IsRequired = false; + unsigned Column; + unsigned Line; + unsigned FlowLevel; + bool IsRequired; bool operator ==(const SimpleKey &Other) { return Tok == Other.Tok; @@ -789,7 +789,6 @@ Token &Scanner::peekNext() { if (TokenQueue.empty() || NeedMore) { if (!fetchMoreTokens()) { TokenQueue.clear(); - SimpleKeys.clear(); TokenQueue.push_back(Token()); return TokenQueue.front(); } @@ -933,16 +932,12 @@ void Scanner::scan_ns_uri_char() { } bool Scanner::consume(uint32_t Expected) { - if (Expected >= 0x80) { - setError("Cannot consume non-ascii characters"); - return false; - } + if (Expected >= 0x80) + report_fatal_error("Not dealing with this yet"); if (Current == End) return false; - if (uint8_t(*Current) >= 0x80) { - setError("Cannot consume non-ascii characters"); - return false; - } + if (uint8_t(*Current) >= 0x80) + report_fatal_error("Not dealing with this yet"); if (uint8_t(*Current) == Expected) { ++Current; ++Column; @@ -1232,10 +1227,7 @@ bool Scanner::scanValue() { if (i == SK.Tok) break; } - if (i == e) { - Failed = true; - return false; - } + assert(i != e && "SimpleKey not in token queue!"); i = TokenQueue.insert(i, T); // We may also need to add a Block-Mapping-Start token. @@ -1780,11 +1772,10 @@ Stream::~Stream() = default; bool Stream::failed() { return scanner->failed(); } void Stream::printError(Node *N, const Twine &Msg) { - SMRange Range = N ? N->getSourceRange() : SMRange(); - scanner->printError( Range.Start + scanner->printError( N->getSourceRange().Start , SourceMgr::DK_Error , Msg - , Range); + , N->getSourceRange()); } document_iterator Stream::begin() { @@ -1943,18 +1934,15 @@ StringRef ScalarNode::unescapeDoubleQuoted( StringRef UnquotedValue UnquotedValue = UnquotedValue.substr(1); break; default: - if (UnquotedValue.size() == 1) { - Token T; - T.Range = StringRef(UnquotedValue.begin(), 1); - setError("Unrecognized escape code", T); - return ""; - } + if (UnquotedValue.size() == 1) + // TODO: Report error. + break; UnquotedValue = UnquotedValue.substr(1); switch (UnquotedValue[0]) { default: { Token T; T.Range = StringRef(UnquotedValue.begin(), 1); - setError("Unrecognized escape code", T); + setError("Unrecognized escape code!", T); return ""; } case '\r': @@ -2090,14 +2078,7 @@ Node *KeyValueNode::getKey() { Node *KeyValueNode::getValue() { if (Value) return Value; - - if (Node* Key = getKey()) - Key->skip(); - else { - setError("Null key in Key Value.", peekNext()); - return Value = new (getAllocator()) NullNode(Doc); - } - + getKey()->skip(); if (failed()) return Value = new (getAllocator()) NullNode(Doc); @@ -2288,8 +2269,8 @@ Document::Document(Stream &S) : stream(S), Root(nullptr) { bool Document::skip() { if (stream.scanner->failed()) return false; - if (!Root && !getRoot()) - return false; + if (!Root) + getRoot(); Root->skip(); Token &T = peekNext(); if (T.Kind == Token::TK_StreamEnd) @@ -2413,15 +2394,6 @@ parse_property: // TODO: Properly handle tags. "[!!str ]" should resolve to !!str "", not // !!null null. return new (NodeAllocator) NullNode(stream.CurrentDoc); - case Token::TK_FlowMappingEnd: - case Token::TK_FlowSequenceEnd: - case Token::TK_FlowEntry: { - if (Root && (isa<MappingNode>(Root) || isa<SequenceNode>(Root))) - return new (NodeAllocator) NullNode(stream.CurrentDoc); - - setError("Unexpected token", T); - return nullptr; - } case Token::TK_Error: return nullptr; } |
