Skip to content

Commit

Permalink
Merge pull request #785 from jseward/develop
Browse files Browse the repository at this point in the history
Fix warning C4706 on Visual Studio 2017 - fixes #784
  • Loading branch information
nlohmann authored Oct 16, 2017
2 parents b27a142 + af99090 commit 7c8f0a4
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 9 deletions.
32 changes: 24 additions & 8 deletions src/json.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3034,11 +3034,19 @@ class parser
{
case token_type::begin_object:
{
if (keep and (not callback or ((keep = callback(depth++, parse_event_t::object_start, result)))))
if (keep)
{
// explicitly set result to object to cope with {}
result.m_type = value_t::object;
result.m_value = value_t::object;
if (callback)
{
keep = callback(depth++, parse_event_t::object_start, result);
}

if (not callback or keep)
{
// explicitly set result to object to cope with {}
result.m_type = value_t::object;
result.m_value = value_t::object;
}
}

// read next token
Expand Down Expand Up @@ -3130,11 +3138,19 @@ class parser

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 []
result.m_type = value_t::array;
result.m_value = value_t::array;
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_value = value_t::array;
}
}

// read next token
Expand Down
13 changes: 13 additions & 0 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,19 @@ set_target_properties(catch_main PROPERTIES
)
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
#############################################################################
Expand Down
2 changes: 1 addition & 1 deletion test/src/unit-udt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ void from_json(const BasicJsonType& j, country& c)
{
{u8"中华人民共和国", country::china},
{"France", country::france},
{"Российская Федерация", country::russia}
{u8"Российская Федерация", country::russia}
};

const auto it = m.find(str);
Expand Down

0 comments on commit 7c8f0a4

Please sign in to comment.