diff options
| author | 2017-01-14 19:55:43 +0000 | |
|---|---|---|
| committer | 2017-01-14 19:55:43 +0000 | |
| commit | bd3306aecb3a15e8967143b8cdbbccf2b1b19b74 (patch) | |
| tree | 309a8132b44564b9e634c0da6815187ce8eab27c /gnu/llvm/lib/Support/YAMLTraits.cpp | |
| parent | killp -a should not kill the window if only one pane. (diff) | |
| download | wireguard-openbsd-bd3306aecb3a15e8967143b8cdbbccf2b1b19b74.tar.xz wireguard-openbsd-bd3306aecb3a15e8967143b8cdbbccf2b1b19b74.zip | |
Import LLVM 3.9.1 including clang and lld.
Diffstat (limited to 'gnu/llvm/lib/Support/YAMLTraits.cpp')
| -rw-r--r-- | gnu/llvm/lib/Support/YAMLTraits.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/gnu/llvm/lib/Support/YAMLTraits.cpp b/gnu/llvm/lib/Support/YAMLTraits.cpp index 2aa6e9b7468..75fac20a8ed 100644 --- a/gnu/llvm/lib/Support/YAMLTraits.cpp +++ b/gnu/llvm/lib/Support/YAMLTraits.cpp @@ -423,8 +423,29 @@ void Output::beginMapping() { bool Output::mapTag(StringRef Tag, bool Use) { if (Use) { - this->output(" "); + // If this tag is being written inside a sequence we should write the start + // of the sequence before writing the tag, otherwise the tag won't be + // attached to the element in the sequence, but rather the sequence itself. + bool SequenceElement = + StateStack.size() > 1 && (StateStack[StateStack.size() - 2] == inSeq || + StateStack[StateStack.size() - 2] == inFlowSeq); + if (SequenceElement && StateStack.back() == inMapFirstKey) { + this->newLineCheck(); + } else { + this->output(" "); + } this->output(Tag); + if (SequenceElement) { + // If we're writing the tag during the first element of a map, the tag + // takes the place of the first element in the sequence. + if (StateStack.back() == inMapFirstKey) { + StateStack.pop_back(); + StateStack.push_back(inMapOtherKey); + } + // Tags inside maps in sequences should act as keys in the map from a + // formatting perspective, so we always want a newline in a sequence. + NeedsNewLine = true; + } } return Use; } |
