[libcxx] r288753 - [libcxx] [test] D27269: Fix MSVC x64 warning C4267 "conversion from 'size_t' to 'int' [or 'unsigned int'], possible loss of data", part 3/4.

Stephan T. Lavavej via cfe-commits cfe-commits at lists.llvm.org
Mon Dec 5 17:14:52 PST 2016


Author: stl_msft
Date: Mon Dec  5 19:14:51 2016
New Revision: 288753

URL: http://llvm.org/viewvc/llvm-project?rev=288753&view=rev
Log:
[libcxx] [test] D27269: Fix MSVC x64 warning C4267 "conversion from 'size_t' to 'int' [or 'unsigned int'], possible loss of data", part 3/4.

test/std/containers/sequences/vector.bool/copy.pass.cpp
test/std/containers/sequences/vector.bool/copy_alloc.pass.cpp
test/std/containers/sequences/vector/vector.cons/copy.pass.cpp
test/std/containers/sequences/vector/vector.cons/copy_alloc.pass.cpp
Change "unsigned s = x.size();" to "typename C::size_type s = x.size();"
because that's what it returns.

test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp
Include <cstddef>, then change "unsigned n = T::length(s);"
to "std::size_t n = T::length(s);" because that's what char_traits returns.

test/std/strings/basic.string/string.cons/substr.pass.cpp
Change unsigned to typename S::size_type because that's what str.size() returns.

test/std/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp
This was needlessly truncating std::size_t to unsigned.
It's being used to compare and initialize std::size_t.

Modified:
    libcxx/trunk/test/std/containers/sequences/vector.bool/copy.pass.cpp
    libcxx/trunk/test/std/containers/sequences/vector.bool/copy_alloc.pass.cpp
    libcxx/trunk/test/std/containers/sequences/vector/vector.cons/copy.pass.cpp
    libcxx/trunk/test/std/containers/sequences/vector/vector.cons/copy_alloc.pass.cpp
    libcxx/trunk/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp
    libcxx/trunk/test/std/strings/basic.string/string.cons/substr.pass.cpp
    libcxx/trunk/test/std/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp

Modified: libcxx/trunk/test/std/containers/sequences/vector.bool/copy.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/sequences/vector.bool/copy.pass.cpp?rev=288753&r1=288752&r2=288753&view=diff
==============================================================================
--- libcxx/trunk/test/std/containers/sequences/vector.bool/copy.pass.cpp (original)
+++ libcxx/trunk/test/std/containers/sequences/vector.bool/copy.pass.cpp Mon Dec  5 19:14:51 2016
@@ -23,7 +23,7 @@ template <class C>
 void
 test(const C& x)
 {
-    unsigned s = x.size();
+    typename C::size_type s = x.size();
     C c(x);
     LIBCPP_ASSERT(c.__invariants());
     assert(c.size() == s);

Modified: libcxx/trunk/test/std/containers/sequences/vector.bool/copy_alloc.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/sequences/vector.bool/copy_alloc.pass.cpp?rev=288753&r1=288752&r2=288753&view=diff
==============================================================================
--- libcxx/trunk/test/std/containers/sequences/vector.bool/copy_alloc.pass.cpp (original)
+++ libcxx/trunk/test/std/containers/sequences/vector.bool/copy_alloc.pass.cpp Mon Dec  5 19:14:51 2016
@@ -22,7 +22,7 @@ template <class C>
 void
 test(const C& x, const typename C::allocator_type& a)
 {
-    unsigned s = x.size();
+    typename C::size_type s = x.size();
     C c(x, a);
     LIBCPP_ASSERT(c.__invariants());
     assert(c.size() == s);

Modified: libcxx/trunk/test/std/containers/sequences/vector/vector.cons/copy.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/sequences/vector/vector.cons/copy.pass.cpp?rev=288753&r1=288752&r2=288753&view=diff
==============================================================================
--- libcxx/trunk/test/std/containers/sequences/vector/vector.cons/copy.pass.cpp (original)
+++ libcxx/trunk/test/std/containers/sequences/vector/vector.cons/copy.pass.cpp Mon Dec  5 19:14:51 2016
@@ -23,7 +23,7 @@ template <class C>
 void
 test(const C& x)
 {
-    unsigned s = x.size();
+    typename C::size_type s = x.size();
     C c(x);
     LIBCPP_ASSERT(c.__invariants());
     assert(c.size() == s);

Modified: libcxx/trunk/test/std/containers/sequences/vector/vector.cons/copy_alloc.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/sequences/vector/vector.cons/copy_alloc.pass.cpp?rev=288753&r1=288752&r2=288753&view=diff
==============================================================================
--- libcxx/trunk/test/std/containers/sequences/vector/vector.cons/copy_alloc.pass.cpp (original)
+++ libcxx/trunk/test/std/containers/sequences/vector/vector.cons/copy_alloc.pass.cpp Mon Dec  5 19:14:51 2016
@@ -23,7 +23,7 @@ template <class C>
 void
 test(const C& x, const typename C::allocator_type& a)
 {
-    unsigned s = x.size();
+    typename C::size_type s = x.size();
     C c(x, a);
     LIBCPP_ASSERT(c.__invariants());
     assert(c.size() == s);

Modified: libcxx/trunk/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp?rev=288753&r1=288752&r2=288753&view=diff
==============================================================================
--- libcxx/trunk/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp (original)
+++ libcxx/trunk/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp Mon Dec  5 19:14:51 2016
@@ -15,6 +15,7 @@
 #include <stdexcept>
 #include <algorithm>
 #include <cassert>
+#include <cstddef>
 
 #include "test_macros.h"
 #include "test_allocator.h"
@@ -27,7 +28,7 @@ test(const charT* s)
     typedef std::basic_string<charT, std::char_traits<charT>, test_allocator<charT> > S;
     typedef typename S::traits_type T;
     typedef typename S::allocator_type A;
-    unsigned n = T::length(s);
+    std::size_t n = T::length(s);
     S s2(s);
     LIBCPP_ASSERT(s2.__invariants());
     assert(s2.size() == n);
@@ -42,7 +43,7 @@ test(const charT* s, const A& a)
 {
     typedef std::basic_string<charT, std::char_traits<charT>, A> S;
     typedef typename S::traits_type T;
-    unsigned n = T::length(s);
+    std::size_t n = T::length(s);
     S s2(s, a);
     LIBCPP_ASSERT(s2.__invariants());
     assert(s2.size() == n);

Modified: libcxx/trunk/test/std/strings/basic.string/string.cons/substr.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/strings/basic.string/string.cons/substr.pass.cpp?rev=288753&r1=288752&r2=288753&view=diff
==============================================================================
--- libcxx/trunk/test/std/strings/basic.string/string.cons/substr.pass.cpp (original)
+++ libcxx/trunk/test/std/strings/basic.string/string.cons/substr.pass.cpp Mon Dec  5 19:14:51 2016
@@ -39,7 +39,7 @@ test(S str, unsigned pos)
     {
         S s2(str, pos);
         LIBCPP_ASSERT(s2.__invariants());
-        unsigned rlen = str.size() - pos;
+        typename S::size_type rlen = str.size() - pos;
         assert(s2.size() == rlen);
         assert(T::compare(s2.data(), str.data() + pos, rlen) == 0);
         assert(s2.get_allocator() == A());
@@ -71,7 +71,7 @@ test(S str, unsigned pos, unsigned n)
     {
         S s2(str, pos, n);
         LIBCPP_ASSERT(s2.__invariants());
-        unsigned rlen = std::min<unsigned>(str.size() - pos, n);
+        typename S::size_type rlen = std::min<typename S::size_type>(str.size() - pos, n);
         assert(s2.size() == rlen);
         assert(T::compare(s2.data(), str.data() + pos, rlen) == 0);
         assert(s2.get_allocator() == A());
@@ -104,7 +104,7 @@ test(S str, unsigned pos, unsigned n, co
     {
         S s2(str, pos, n, a);
         LIBCPP_ASSERT(s2.__invariants());
-        unsigned rlen = std::min<unsigned>(str.size() - pos, n);
+        typename S::size_type rlen = std::min<typename S::size_type>(str.size() - pos, n);
         assert(s2.size() == rlen);
         assert(T::compare(s2.data(), str.data() + pos, rlen) == 0);
         assert(s2.get_allocator() == a);

Modified: libcxx/trunk/test/std/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp?rev=288753&r1=288752&r2=288753&view=diff
==============================================================================
--- libcxx/trunk/test/std/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp (original)
+++ libcxx/trunk/test/std/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp Mon Dec  5 19:14:51 2016
@@ -22,7 +22,7 @@ void test_val_ctor()
     {
         TEST_CONSTEXPR std::bitset<N> v(0xAAAAAAAAAAAAAAAAULL);
         assert(v.size() == N);
-        unsigned M = std::min<std::size_t>(N, 64);
+        std::size_t M = std::min<std::size_t>(N, 64);
         for (std::size_t i = 0; i < M; ++i)
             assert(v[i] == ((i & 1) != 0));
         for (std::size_t i = M; i < N; ++i)




More information about the cfe-commits mailing list