Merge pull request #785 from jseward/develop

Fix warning C4706 on Visual Studio 2017 - fixes #784
This commit is contained in:
Niels Lohmann 2017-10-16 19:48:17 +02:00 committed by GitHub
commit 7c8f0a4186
3 changed files with 38 additions and 9 deletions

View file

@ -3034,12 +3034,20 @@ class parser
{ {
case token_type::begin_object: case token_type::begin_object:
{ {
if (keep and (not callback or ((keep = callback(depth++, parse_event_t::object_start, result))))) if (keep)
{
if (callback)
{
keep = callback(depth++, parse_event_t::object_start, result);
}
if (not callback or keep)
{ {
// explicitly set result to object to cope with {} // explicitly set result to object to cope with {}
result.m_type = value_t::object; result.m_type = value_t::object;
result.m_value = value_t::object; result.m_value = value_t::object;
} }
}
// read next token // read next token
get_token(); get_token();
@ -3130,12 +3138,20 @@ class parser
case token_type::begin_array: case token_type::begin_array:
{ {
if (keep and (not callback or ((keep = callback(depth++, parse_event_t::array_start, result))))) if (keep)
{ {
// explicitly set result to object to cope with [] if (callback)
{
keep = callback(depth++, parse_event_t::array_start, result);
}
if (not callback or keep)
{
// explicitly set result to array to cope with []
result.m_type = value_t::array; result.m_type = value_t::array;
result.m_value = value_t::array; result.m_value = value_t::array;
} }
}
// read next token // read next token
get_token(); get_token();

View file

@ -66,6 +66,19 @@ set_target_properties(catch_main PROPERTIES
) )
target_include_directories(catch_main PRIVATE "thirdparty/catch") target_include_directories(catch_main PRIVATE "thirdparty/catch")
# https://stackoverflow.com/questions/2368811/how-to-set-warning-level-in-cmake
if(MSVC)
# Force to always compile with W4
if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
endif()
# Disable warning C4389: '==': signed/unsigned mismatch
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4389")
endif()
############################################################################# #############################################################################
# one executable for each unit test file # one executable for each unit test file
############################################################################# #############################################################################

View file

@ -201,7 +201,7 @@ void from_json(const BasicJsonType& j, country& c)
{ {
{u8"中华人民共和国", country::china}, {u8"中华人民共和国", country::china},
{"France", country::france}, {"France", country::france},
{"Российская Федерация", country::russia} {u8"Российская Федерация", country::russia}
}; };
const auto it = m.find(str); const auto it = m.find(str);