mirror of
https://github.com/llvm/llvm-project.git
synced 2025-05-01 13:06:09 +00:00

In some cases plain scalars are currently parsed with a trailing newline. In particular this shows up often when parsing JSON files, e.g. note the `\n` after `456` below: ``` $ cat test.yaml { "foo": 123, "bar": 456 } $ yaml-bench test.yaml -canonical %YAML 1.2 --- !!map { ? !!str "foo" : !!str "123", ? !!str "bar" : !!str "456\n", } ... ``` The trailing whitespace ends up causing the conversion of the scalar to int/bool/etc. to fail, causing the issue seen here: https://github.com/llvm/llvm-project/issues/15877 From reading the YAML spec (https://yaml.org/spec/1.2.2/#733-plain-style) it seems like plain scalars should never end with whitespace, so this change trims all trailing whitespace characters from the value (specifically `b-line-feed`, `b-carriage-return`, `s-space`, and `s-tab`). Reviewed By: scott.linder Differential Revision: https://reviews.llvm.org/D137118
14 lines
210 B
Plaintext
14 lines
210 B
Plaintext
# RUN: yaml-bench -canonical %s | FileCheck %s
|
|
|
|
# CHECK: !!map {
|
|
# CHECK: ? !!str "foo"
|
|
# CHECK: : !!str "123",
|
|
# CHECK: ? !!str "bar"
|
|
# CHECK: : !!str "456",
|
|
# CHECK: }
|
|
|
|
{
|
|
"foo": 123,
|
|
"bar": 456
|
|
}
|