[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.

Fixes D45016.

llvm-svn: 329973
This commit is contained in:
Stephan T. Lavavej 2018-04-12 23:56:07 +00:00
parent 0c8ee891a7
commit 0f66190aef
3 changed files with 4 additions and 4 deletions

View File

@ -49,7 +49,7 @@ int CountAssign::moved = 0;
int main() 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 p1(std::unique_ptr<int>(new int(3)), 4);
P p2; P p2;
p2 = std::move(p1); p2 = std::move(p1);

View File

@ -57,7 +57,7 @@ struct ImplicitT {
int main() int main()
{ {
{ {
typedef std::pair<int, short> P1; typedef std::pair<int, int> P1;
typedef std::pair<double, long> P2; typedef std::pair<double, long> P2;
const P1 p1(3, 4); const P1 p1(3, 4);
const P2 p2 = p1; const P2 p2 = p1;
@ -154,7 +154,7 @@ int main()
} }
#if TEST_STD_VER > 11 #if TEST_STD_VER > 11
{ {
typedef std::pair<int, short> P1; typedef std::pair<int, int> P1;
typedef std::pair<double, long> P2; typedef std::pair<double, long> P2;
constexpr P1 p1(3, 4); constexpr P1 p1(3, 4);
constexpr P2 p2 = p1; constexpr P2 p2 = p1;

View File

@ -67,7 +67,7 @@ struct ImplicitT {
int main() 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; typedef std::pair<std::unique_ptr<Base>, long> P2;
P1 p1(std::unique_ptr<Derived>(), 4); P1 p1(std::unique_ptr<Derived>(), 4);
P2 p2 = std::move(p1); P2 p2 = std::move(p1);