| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <uchar.h> |
| #include <wchar.h> |
| |
| #include <array> |
| #include <string_view> |
| #include <tuple> |
| |
| int UnsafeIndex(); // This function might return an out-of-bound index. |
| |
| void func() { |
| // Expected rewrite: |
| // const std::string_view buf = "123456789"; |
| const std::string_view buf = "123456789"; |
| std::ignore = buf[UnsafeIndex()]; |
| |
| // Expected rewrite: |
| // const std::wstring_view buf = L"123456789"; |
| const std::wstring_view buf2 = L"123456789"; |
| std::ignore = buf2[UnsafeIndex()]; |
| |
| // Expected rewrite: |
| // const std::u16string_view buf = u"123456789"; |
| const std::u16string_view buf4 = u"123456789"; |
| std::ignore = buf4[UnsafeIndex()]; |
| |
| // Expected rewrite: |
| // const std::u32string_view buf = U"123456789"; |
| const std::u32string_view buf5 = U"123456789"; |
| std::ignore = buf5[UnsafeIndex()]; |
| } |
| |
| void non_const_case() { |
| // The explicit specification of the element type and size are necessary, |
| // otherwise the deduced element type will be const. |
| // |
| // Expected rewrite: |
| // std::array<char, 4> buf{"abc"}; |
| std::array<char, 4> buf{"abc"}; |
| std::ignore = buf[UnsafeIndex()]; |
| |
| // Expected rewrite: |
| // std::array<char, 1 + 3> buf2{"abc"}; |
| std::array<char, 1 + 3> buf2{"abc"}; |
| std::ignore = buf2[UnsafeIndex()]; |
| } |