From: Scott Linder Date: Wed, 14 Nov 2018 19:39:59 +0000 (+0000) Subject: [Support] Teach YAMLIO about polymorphic types X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=52daf3b92d0db0617bdc8d4125aaed5e4abe02db;p=clang [Support] Teach YAMLIO about polymorphic types Add support for "polymorphic" types to YAMLIO. PolymorphicTraits can dynamically switch between other traits (Scalar, Map, or Sequence). When inputting, the PolymorphicTraits type is told which type to become, and when outputting the PolymorphicTraits type is asked which type it currently is. Also add support for TaggedScalarTraits to allow dynamically differentiating between multiple scalar types using YAML tags. Serialize empty maps as "{}" and empty sequences as "[]", so that types are preserved when round-tripping PolymorphicTraits. This change has equivalent semantics, but may break e.g. tests which compare output verbatim. Differential Revision: https://reviews.llvm.org/D48144 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@346884 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/unittests/Tooling/DiagnosticsYamlTest.cpp b/unittests/Tooling/DiagnosticsYamlTest.cpp index 18284bd995..420d7af2ef 100644 --- a/unittests/Tooling/DiagnosticsYamlTest.cpp +++ b/unittests/Tooling/DiagnosticsYamlTest.cpp @@ -82,7 +82,7 @@ TEST(DiagnosticsYamlTest, serializesDiagnostics) { " Message: 'message #3'\n" " FileOffset: 72\n" " FilePath: 'path/to/source2.cpp'\n" - " Replacements: \n" + " Replacements: []\n" "...\n", YamlContentStream.str()); } @@ -113,7 +113,7 @@ TEST(DiagnosticsYamlTest, deserializesDiagnostics) { " Message: 'message #3'\n" " FileOffset: 98\n" " FilePath: path/to/source.cpp\n" - " Replacements: \n" + " Replacements: []\n" "...\n"; TranslationUnitDiagnostics TUDActual; yaml::Input YAML(YamlContent); diff --git a/unittests/Tooling/RefactoringActionRulesTest.cpp b/unittests/Tooling/RefactoringActionRulesTest.cpp index e9a12deb3f..acacfa05b4 100644 --- a/unittests/Tooling/RefactoringActionRulesTest.cpp +++ b/unittests/Tooling/RefactoringActionRulesTest.cpp @@ -117,8 +117,8 @@ TEST_F(RefactoringActionRulesTest, MyFirstRefactoringRule) { "Key: 'input.cpp:30'\n" "FilePath: input.cpp\n" "Error: ''\n" - "InsertedHeaders: \n" - "RemovedHeaders: \n" + "InsertedHeaders: []\n" + "RemovedHeaders: []\n" "Replacements: \n" // Extra whitespace here! " - FilePath: input.cpp\n" " Offset: 30\n"