mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-23 14:25:07 +00:00
YAML: Implement block scalar parsing.
This commit implements the parsing of YAML block scalars. Some code existed for it before, but it couldn't parse block scalars. This commit adds a new yaml node type to represent the block scalar values. This commit also deletes the 'spec-09-27' and 'spec-09-28' tests as they are identical to the test file 'spec-09-26'. This commit introduces 3 new utility functions to the YAML scanner class: `skip_s_space`, `advanceWhile` and `consumeLineBreakIfPresent`. Reviewers: Duncan P. N. Exon Smith Differential Revision: http://reviews.llvm.org/D9503 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237314 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -130,6 +130,33 @@ TEST(YAMLParser, ParsesArrayOfArrays) {
|
||||
ExpectParseSuccess("Array of arrays", "[[]]");
|
||||
}
|
||||
|
||||
TEST(YAMLParser, ParsesBlockLiteralScalars) {
|
||||
ExpectParseSuccess("Block literal scalar", "test: |\n Hello\n World\n");
|
||||
ExpectParseSuccess("Block literal scalar EOF", "test: |\n Hello\n World");
|
||||
ExpectParseSuccess("Empty block literal scalar header EOF", "test: | ");
|
||||
ExpectParseSuccess("Empty block literal scalar", "test: |\ntest2: 20");
|
||||
ExpectParseSuccess("Empty block literal scalar 2", "- | \n \n\n \n- 42");
|
||||
ExpectParseSuccess("Block literal scalar in sequence",
|
||||
"- |\n Testing\n Out\n\n- 22");
|
||||
ExpectParseSuccess("Block literal scalar in document",
|
||||
"--- |\n Document\n...");
|
||||
ExpectParseSuccess("Empty non indented lines still count",
|
||||
"- |\n First line\n \n\n Another line\n\n- 2");
|
||||
ExpectParseSuccess("Comment in block literal scalar header",
|
||||
"test: | # Comment \n No Comment\ntest 2: | # Void");
|
||||
ExpectParseSuccess("Chomping indicators in block literal scalar header",
|
||||
"test: |- \n Hello\n\ntest 2: |+ \n\n World\n\n\n");
|
||||
ExpectParseSuccess("Indent indicators in block literal scalar header",
|
||||
"test: |1 \n \n Hello \n World\n");
|
||||
ExpectParseSuccess("Chomping and indent indicators in block literals",
|
||||
"test: |-1\n Hello\ntest 2: |9+\n World");
|
||||
ExpectParseSuccess("Trailing comments in block literals",
|
||||
"test: |\n Content\n # Trailing\n #Comment\ntest 2: 3");
|
||||
ExpectParseError("Invalid block scalar header", "test: | failure");
|
||||
ExpectParseError("Invalid line indentation", "test: |\n First line\n Error");
|
||||
ExpectParseError("Long leading space line", "test: |\n \n Test\n");
|
||||
}
|
||||
|
||||
TEST(YAMLParser, HandlesEndOfFileGracefully) {
|
||||
ExpectParseError("In string starting with EOF", "[\"");
|
||||
ExpectParseError("In string hitting EOF", "[\" ");
|
||||
|
Reference in New Issue
Block a user