mirror of
https://github.com/microsoft/GSL.git
synced 2024-11-03 17:56:43 -05:00
Enabled -Wall for gcc and clang.
This commit is contained in:
parent
a998a9b33b
commit
fa056f67e8
@ -26,6 +26,7 @@ else()
|
|||||||
else()
|
else()
|
||||||
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
|
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
|
||||||
endif()
|
endif()
|
||||||
|
add_compile_options(-Wall -Wno-missing-braces)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/unittest-cpp)
|
if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/unittest-cpp)
|
||||||
|
@ -32,7 +32,9 @@ SUITE(bounds_test)
|
|||||||
{
|
{
|
||||||
for (auto point : static_bounds<dynamic_range, 3, 4 > { 2 })
|
for (auto point : static_bounds<dynamic_range, 3, 4 > { 2 })
|
||||||
{
|
{
|
||||||
for (decltype(point)::size_type j = 0; j < decltype(point)::rank; j++)
|
for (decltype(point)::size_type j = 0;
|
||||||
|
j < static_cast<decltype(point)::size_type>(decltype(point)::rank);
|
||||||
|
j++)
|
||||||
{
|
{
|
||||||
use(j);
|
use(j);
|
||||||
use(point[j]);
|
use(point[j]);
|
||||||
@ -44,6 +46,7 @@ SUITE(bounds_test)
|
|||||||
{
|
{
|
||||||
static_bounds<3, 4, 5> b;
|
static_bounds<3, 4, 5> b;
|
||||||
auto a = b.slice();
|
auto a = b.slice();
|
||||||
|
(void)a;
|
||||||
static_bounds<4, dynamic_range, 2> x{ 4 };
|
static_bounds<4, dynamic_range, 2> x{ 4 };
|
||||||
x.slice().slice();
|
x.slice().slice();
|
||||||
}
|
}
|
||||||
@ -53,7 +56,7 @@ SUITE(bounds_test)
|
|||||||
static_bounds<4, dynamic_range, 2> bounds{ 3 };
|
static_bounds<4, dynamic_range, 2> bounds{ 3 };
|
||||||
|
|
||||||
auto itr = bounds.begin();
|
auto itr = bounds.begin();
|
||||||
|
(void)itr;
|
||||||
#ifdef CONFIRM_COMPILATION_ERRORS
|
#ifdef CONFIRM_COMPILATION_ERRORS
|
||||||
span<int, 4, dynamic_range, 2> av(nullptr, bounds);
|
span<int, 4, dynamic_range, 2> av(nullptr, bounds);
|
||||||
|
|
||||||
@ -70,13 +73,14 @@ SUITE(bounds_test)
|
|||||||
{
|
{
|
||||||
static_bounds<7, 4, 2> b1;
|
static_bounds<7, 4, 2> b1;
|
||||||
static_bounds<7, dynamic_range, 2> b2 = b1;
|
static_bounds<7, dynamic_range, 2> b2 = b1;
|
||||||
|
(void)b2;
|
||||||
#ifdef CONFIRM_COMPILATION_ERRORS
|
#ifdef CONFIRM_COMPILATION_ERRORS
|
||||||
static_bounds<7, dynamic_range, 1> b4 = b2;
|
static_bounds<7, dynamic_range, 1> b4 = b2;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static_bounds<dynamic_range, dynamic_range, dynamic_range> b3 = b1;
|
static_bounds<dynamic_range, dynamic_range, dynamic_range> b3 = b1;
|
||||||
static_bounds<7, 4, 2> b4 = b3;
|
static_bounds<7, 4, 2> b4 = b3;
|
||||||
|
(void)b4;
|
||||||
|
|
||||||
static_bounds<dynamic_range> b11;
|
static_bounds<dynamic_range> b11;
|
||||||
|
|
||||||
|
@ -69,7 +69,8 @@ SUITE(NotNullTests)
|
|||||||
MyDerived derived;
|
MyDerived derived;
|
||||||
Unrelated unrelated;
|
Unrelated unrelated;
|
||||||
not_null<Unrelated*> u = &unrelated;
|
not_null<Unrelated*> u = &unrelated;
|
||||||
not_null<MyDerived*> p = &derived;
|
(void)u;
|
||||||
|
not_null<MyDerived*> p = &derived;
|
||||||
not_null<MyBase*> q = &base;
|
not_null<MyBase*> q = &base;
|
||||||
q = p; // allowed with heterogeneous copy ctor
|
q = p; // allowed with heterogeneous copy ctor
|
||||||
CHECK(q == p);
|
CHECK(q == p);
|
||||||
|
@ -27,7 +27,6 @@ using namespace gsl;
|
|||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
void use(int&) {}
|
|
||||||
struct BaseClass {};
|
struct BaseClass {};
|
||||||
struct DerivedClass : BaseClass {};
|
struct DerivedClass : BaseClass {};
|
||||||
}
|
}
|
||||||
@ -82,6 +81,7 @@ SUITE(span_tests)
|
|||||||
span<BaseClass> avb = avd;
|
span<BaseClass> avb = avd;
|
||||||
#endif
|
#endif
|
||||||
span<const DerivedClass> avcd = avd;
|
span<const DerivedClass> avcd = avd;
|
||||||
|
(void)avcd;
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(boundary_checks)
|
TEST(boundary_checks)
|
||||||
@ -214,9 +214,11 @@ SUITE(span_tests)
|
|||||||
|
|
||||||
const std::array<double, 3> arr = {0.0, 0.0, 0.0};
|
const std::array<double, 3> arr = {0.0, 0.0, 0.0};
|
||||||
auto cv = as_span(arr);
|
auto cv = as_span(arr);
|
||||||
|
(void)cv;
|
||||||
|
|
||||||
vector<float> vec(3);
|
vector<float> vec(3);
|
||||||
auto dv = as_span(vec);
|
auto dv = as_span(vec);
|
||||||
|
(void)dv;
|
||||||
|
|
||||||
#ifdef CONFIRM_COMPILATION_ERRORS
|
#ifdef CONFIRM_COMPILATION_ERRORS
|
||||||
auto dv2 = as_span(std::move(vec));
|
auto dv2 = as_span(std::move(vec));
|
||||||
@ -262,6 +264,7 @@ SUITE(span_tests)
|
|||||||
auto av = as_span(a);
|
auto av = as_span(a);
|
||||||
auto sub = av.section({15, 0, 0}, gsl::index<3>{2, 2, 2});
|
auto sub = av.section({15, 0, 0}, gsl::index<3>{2, 2, 2});
|
||||||
auto subsub = sub.section({1, 0, 0}, gsl::index<3>{1, 1, 1});
|
auto subsub = sub.section({1, 0, 0}, gsl::index<3>{1, 1, 1});
|
||||||
|
(void)subsub;
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(span_section)
|
TEST(span_section)
|
||||||
@ -1417,7 +1420,7 @@ SUITE(span_tests)
|
|||||||
CHECK_THROW(av1[10][3][4], fail_fast);
|
CHECK_THROW(av1[10][3][4], fail_fast);
|
||||||
|
|
||||||
span<const double, dynamic_range, 6, 4> av2 = av1.as_span(dim<>(5), dim<6>(), dim<4>());
|
span<const double, dynamic_range, 6, 4> av2 = av1.as_span(dim<>(5), dim<6>(), dim<4>());
|
||||||
|
(void)av2;
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(span_sub)
|
TEST(span_sub)
|
||||||
@ -1429,7 +1432,7 @@ SUITE(span_tests)
|
|||||||
CHECK((av.sub<2,2>().bounds() == static_bounds<2>()));
|
CHECK((av.sub<2,2>().bounds() == static_bounds<2>()));
|
||||||
CHECK((av.sub<2,2>().length() == 2));
|
CHECK((av.sub<2,2>().length() == 2));
|
||||||
CHECK(av.sub(2,2).length() == 2);
|
CHECK(av.sub(2,2).length() == 2);
|
||||||
CHECK(av.sub(2,3).length() == 3);
|
CHECK(av.sub(2,3).length() == 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1445,16 +1448,16 @@ SUITE(span_tests)
|
|||||||
CHECK((av.sub<0,5>().bounds() == static_bounds<5>()));
|
CHECK((av.sub<0,5>().bounds() == static_bounds<5>()));
|
||||||
CHECK((av.sub<0,5>().length() == 5));
|
CHECK((av.sub<0,5>().length() == 5));
|
||||||
CHECK(av.sub(0,5).length() == 5);
|
CHECK(av.sub(0,5).length() == 5);
|
||||||
CHECK_THROW(av.sub(0,6).length(), fail_fast);
|
CHECK_THROW(av.sub(0,6).length(), fail_fast);
|
||||||
CHECK_THROW(av.sub(1,5).length(), fail_fast);
|
CHECK_THROW(av.sub(1,5).length(), fail_fast);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
span<int, 5> av = arr;
|
span<int, 5> av = arr;
|
||||||
CHECK((av.sub<5,0>().bounds() == static_bounds<0>()));
|
CHECK((av.sub<5,0>().bounds() == static_bounds<0>()));
|
||||||
CHECK((av.sub<5, 0>().length() == 0));
|
CHECK((av.sub<5, 0>().length() == 0));
|
||||||
CHECK(av.sub(5,0).length() == 0);
|
CHECK(av.sub(5,0).length() == 0);
|
||||||
CHECK_THROW(av.sub(6,0).length(), fail_fast);
|
CHECK_THROW(av.sub(6,0).length(), fail_fast);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1462,7 +1465,7 @@ SUITE(span_tests)
|
|||||||
CHECK((av.sub<0,0>().bounds() == static_bounds<0>()));
|
CHECK((av.sub<0,0>().bounds() == static_bounds<0>()));
|
||||||
CHECK((av.sub<0,0>().length() == 0));
|
CHECK((av.sub<0,0>().length() == 0));
|
||||||
CHECK(av.sub(0,0).length() == 0);
|
CHECK(av.sub(0,0).length() == 0);
|
||||||
CHECK_THROW((av.sub<1,0>().length()), fail_fast);
|
CHECK_THROW((av.sub<1,0>().length()), fail_fast);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1559,9 +1562,11 @@ SUITE(span_tests)
|
|||||||
// converting to dynamic_range a_v is always ok
|
// converting to dynamic_range a_v is always ok
|
||||||
{
|
{
|
||||||
span<int, dynamic_range> av = av4;
|
span<int, dynamic_range> av = av4;
|
||||||
|
(void)av;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
span<int, dynamic_range> av = arr;
|
span<int, dynamic_range> av = arr;
|
||||||
|
(void)av;
|
||||||
}
|
}
|
||||||
|
|
||||||
// initialization or assignment to static span that REDUCES size is NOT ok
|
// initialization or assignment to static span that REDUCES size is NOT ok
|
||||||
@ -1577,6 +1582,7 @@ SUITE(span_tests)
|
|||||||
{
|
{
|
||||||
span<int, dynamic_range> av = arr;
|
span<int, dynamic_range> av = arr;
|
||||||
span<int, 2> av2 = av;
|
span<int, 2> av2 = av;
|
||||||
|
(void)av2;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIRM_COMPILATION_ERRORS
|
#ifdef CONFIRM_COMPILATION_ERRORS
|
||||||
@ -1588,7 +1594,7 @@ SUITE(span_tests)
|
|||||||
|
|
||||||
{
|
{
|
||||||
span<int, dynamic_range> av = arr;
|
span<int, dynamic_range> av = arr;
|
||||||
auto f = [&]() {span<int, 2, 1> av2 = av.as_span(dim<>(2), dim<>(2));};
|
auto f = [&]() {span<int, 2, 1> av2 = av.as_span(dim<>(2), dim<>(2)); (void)av2; };
|
||||||
CHECK_THROW(f(), fail_fast);
|
CHECK_THROW(f(), fail_fast);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1597,15 +1603,18 @@ SUITE(span_tests)
|
|||||||
// you can convert statically
|
// you can convert statically
|
||||||
{
|
{
|
||||||
span<int, 2> av2 = {arr, 2};
|
span<int, 2> av2 = {arr, 2};
|
||||||
|
(void)av2;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
span<int, 1> av2 = av4.first<1>();
|
span<int, 1> av2 = av4.first<1>();
|
||||||
|
(void)av2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ...or dynamically
|
// ...or dynamically
|
||||||
{
|
{
|
||||||
// NB: implicit conversion to span<int,2> from span<int,dynamic_range>
|
// NB: implicit conversion to span<int,2> from span<int,dynamic_range>
|
||||||
span<int, 1> av2 = av4.first(1);
|
span<int, 1> av2 = av4.first(1);
|
||||||
|
(void)av2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// initialization or assignment to static span that requires size INCREASE is not ok.
|
// initialization or assignment to static span that requires size INCREASE is not ok.
|
||||||
@ -1621,13 +1630,13 @@ SUITE(span_tests)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
auto f = [&]() {span<int, 4> av4 = {arr2, 2};};
|
auto f = [&]() {span<int, 4> av4 = {arr2, 2}; (void)av4; };
|
||||||
CHECK_THROW(f(), fail_fast);
|
CHECK_THROW(f(), fail_fast);
|
||||||
}
|
}
|
||||||
|
|
||||||
// this should fail - we are trying to assign a small dynamic a_v to a fixed_size larger one
|
// this should fail - we are trying to assign a small dynamic a_v to a fixed_size larger one
|
||||||
span<int, dynamic_range> av = arr2;
|
span<int, dynamic_range> av = arr2;
|
||||||
auto f = [&](){ span<int, 4> av2 = av; };
|
auto f = [&](){ span<int, 4> av2 = av; (void)av2; };
|
||||||
CHECK_THROW(f(), fail_fast);
|
CHECK_THROW(f(), fail_fast);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,6 +100,7 @@ SUITE(string_span_tests)
|
|||||||
{
|
{
|
||||||
char stack_string[] = "Hello";
|
char stack_string[] = "Hello";
|
||||||
cstring_span<> v = ensure_z(stack_string);
|
cstring_span<> v = ensure_z(stack_string);
|
||||||
|
(void)v;
|
||||||
#ifdef CONFIRM_COMPILATION_ERRORS
|
#ifdef CONFIRM_COMPILATION_ERRORS
|
||||||
string_span<> v2 = v;
|
string_span<> v2 = v;
|
||||||
string_span<> v3 = "Hello";
|
string_span<> v3 = "Hello";
|
||||||
|
Loading…
Reference in New Issue
Block a user