[YAMLTraits] Fix mapping <none> value that followed by comments.

When mapping an optional value, if the value is <none> and followed
by comments, there will be a parsing error. This patch helps fix this
issue.

e.g.,

When mapping the following YAML,

```
Sections:
  - Name:  blah
    Type:  SHT_foo
    Flags: [[FLAGS=<none>]] ## some comments.
```

the raw value of `ScalarNode` is "<none> " rather than "<none>". We need
to remove the spaces.

Differential Revision: https://reviews.llvm.org/D85180
This commit is contained in:
Xing GUO 2020-08-04 16:47:38 +08:00
parent 4be13b15d6
commit 79b44a4d47
2 changed files with 4 additions and 1 deletions

View File

@ -1629,7 +1629,9 @@ void IO::processKeyWithDefault(const char *Key, Optional<T> &Val,
bool IsNone = false;
if (!outputting())
if (auto *Node = dyn_cast<ScalarNode>(((Input *)this)->getCurrentNode()))
IsNone = Node->getRawValue() == "<none>";
// We use rtrim to ignore possible white spaces that might exist when a
// comment is present on the same line.
IsNone = Node->getRawValue().rtrim(' ') == "<none>";
if (IsNone)
Val = DefaultValue;

View File

@ -21,6 +21,7 @@ FileHeader:
Sections:
- Name: .bar
Type: SHT_PROGBITS
Flags: [[TEST=<none>]] ## Comment
Offset: [[TEST=<none>]]
Address: [[TEST=<none>]]
Content: [[TEST=<none>]]