[PATCH] D45016: [libcxx] [test] Avoid MSVC truncation warnings.
Stephan T. Lavavej via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 28 20:16:45 PDT 2018
STL_MSFT created this revision.
STL_MSFT added reviewers: EricWF, mclow.lists.
[libcxx] [test] Avoid MSVC truncation warnings.
MSVC emits "warning C4244: 'initializing': conversion from 'int'
to 'short', possible loss of data" when it sees pair<Whatever, short>
constructed from (whatever, 4), because int is being truncated to
short within pair's constructor. (The compiler doesn't take into
account the fact that 4 is a literal at the callsite; it generates
this warning when the constructor is instantiated, because it might
be called with a runtime-valued int that would actually truncate.)
Instead of static_cast<short>, we can simply change short to int
in these tests, without affecting the pair operations that they're
trying to test: move assignment, convert copy construction, and
convert move construction.
https://reviews.llvm.org/D45016
Files:
test/std/utilities/utility/pairs/pairs.pair/assign_rv_pair.pass.cpp
test/std/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp
test/std/utilities/utility/pairs/pairs.pair/rv_pair_U_V.pass.cpp
Index: test/std/utilities/utility/pairs/pairs.pair/rv_pair_U_V.pass.cpp
===================================================================
--- test/std/utilities/utility/pairs/pairs.pair/rv_pair_U_V.pass.cpp
+++ test/std/utilities/utility/pairs/pairs.pair/rv_pair_U_V.pass.cpp
@@ -67,7 +67,7 @@
int main()
{
{
- typedef std::pair<std::unique_ptr<Derived>, short> P1;
+ typedef std::pair<std::unique_ptr<Derived>, int> P1;
typedef std::pair<std::unique_ptr<Base>, long> P2;
P1 p1(std::unique_ptr<Derived>(), 4);
P2 p2 = std::move(p1);
Index: test/std/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp
===================================================================
--- test/std/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp
+++ test/std/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp
@@ -57,7 +57,7 @@
int main()
{
{
- typedef std::pair<int, short> P1;
+ typedef std::pair<int, int> P1;
typedef std::pair<double, long> P2;
const P1 p1(3, 4);
const P2 p2 = p1;
@@ -154,7 +154,7 @@
}
#if TEST_STD_VER > 11
{
- typedef std::pair<int, short> P1;
+ typedef std::pair<int, int> P1;
typedef std::pair<double, long> P2;
constexpr P1 p1(3, 4);
constexpr P2 p2 = p1;
Index: test/std/utilities/utility/pairs/pairs.pair/assign_rv_pair.pass.cpp
===================================================================
--- test/std/utilities/utility/pairs/pairs.pair/assign_rv_pair.pass.cpp
+++ test/std/utilities/utility/pairs/pairs.pair/assign_rv_pair.pass.cpp
@@ -49,7 +49,7 @@
int main()
{
{
- typedef std::pair<std::unique_ptr<int>, short> P;
+ typedef std::pair<std::unique_ptr<int>, int> P;
P p1(std::unique_ptr<int>(new int(3)), 4);
P p2;
p2 = std::move(p1);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D45016.140183.patch
Type: text/x-patch
Size: 1882 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180329/6f5f347a/attachment.bin>
More information about the cfe-commits
mailing list