)]}'
{
  "commit": "aeafac9e4ab7ee71785fff6ec4714ca750fb8695",
  "tree": "329e4aa5cc703ccae212a81d03818fb92d20e0d4",
  "parents": [
    "5082f1ce23a594d30c2fcc739a8347426053e44c"
  ],
  "author": {
    "name": "Casey Carter",
    "email": "Casey@Carter.net",
    "time": "Mon Apr 22 19:08:13 2019 +0000"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Thu Aug 27 18:53:45 2020 -0700"
  },
  "message": "[libc++][test] Update some wstring_convert tests for MSVC quirks\n\nDue to MSVC\u0027s decision to encode `wchar_t` as UTF-16, it rejects wide\ncharacter/string literals that expect a character value greater than\n`\\xffff`. UTF-16 `wchar_t` is clearly non-conforming, given that the\nstandard requires wchar_t to be capable of representing all characters\nin the supported wide character execution sets, but rejecting e.g.\n`\\x40003` is a reasonably sane compromise given that encoding choice:\nthere\u0027s an expectation that `\\xFOO` produces a single character in the\nresulting literal. Consequently `L\u0027\\x40003\u0027`/`L\"\\x40003\"` are ill-formed\nliterals on MSVC. `L\u0027\\U00040003\u0027` is a high surrogate (and produces a\nwarning about ignoring the \"second character\" in a multi-character\nliteral), and `L\"\\U00040003\"` is a perfectly-valid `const wchar_t[3]`.\n\nThis change updates these tests to use universal-character-names instead\nof raw values for the intended character values, which technically makes\nthem portable even to implementations that don\u0027t use a unicode\ntransformation format encoding for their wide character execution\ncharacter set. The two-character literal `L\"\\u1005e\"` is awkward - the\n`e` looks like part of the UCN\u0027s hex encoding - but necessary to compile\nin \u002703 mode since \u002703 didn\u0027t allow UCNs to be used for members of the\nbasic execution character set even in character/string literals.\n\nI\u0027ve also eliminated the extraneous `\\x00` \"bonus null-terminator\" in\nsome of the string literals which doesn\u0027t affect the tested behavior.\n\nI\u0027m sorry about using `*L\"\\U00040003\"` in `conversions.string/to_bytes.pass.cpp`,\nbut it\u0027s correct for platforms with 32-bit wchar_t, *and* doesn\u0027t\ntrigger narrowing warnings as did the prior `CharT(0x40003)`.\n\nDifferential Revision: https://reviews.llvm.org/D60950\n\nllvm-svn: 358908\nGitOrigin-RevId: e3f7074c7e95551c86bfc489ca0f5e23d7a64dcc\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "802aaf65d0f8f68bd5469823438d5e7bfad34342",
      "old_mode": 33188,
      "old_path": "test/std/localization/locales/locale.convenience/conversions/conversions.string/converted.pass.cpp",
      "new_id": "986b0e31324c415c52413675c1ff6289af4053c6",
      "new_mode": 33188,
      "new_path": "test/std/localization/locales/locale.convenience/conversions/conversions.string/converted.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "c1a26d05582ce66622fd59c25a5ff8eb050eef87",
      "old_mode": 33188,
      "old_path": "test/std/localization/locales/locale.convenience/conversions/conversions.string/from_bytes.pass.cpp",
      "new_id": "c02f82b51806bd5e1c5c7fd5f9264247ca053baf",
      "new_mode": 33188,
      "new_path": "test/std/localization/locales/locale.convenience/conversions/conversions.string/from_bytes.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "397ba6494eeaacb112957475a289ba0b3a2d280a",
      "old_mode": 33188,
      "old_path": "test/std/localization/locales/locale.convenience/conversions/conversions.string/to_bytes.pass.cpp",
      "new_id": "3736e4dd0e76c831881a46a1bf1ee3bbc0f6d7be",
      "new_mode": 33188,
      "new_path": "test/std/localization/locales/locale.convenience/conversions/conversions.string/to_bytes.pass.cpp"
    }
  ]
}
