Merge pull request #2333 from nlohmann/fallthrough
Fix fallthrough warning
diff --git a/include/nlohmann/detail/input/lexer.hpp b/include/nlohmann/detail/input/lexer.hpp
index f53ebfe..0a96013 100644
--- a/include/nlohmann/detail/input/lexer.hpp
+++ b/include/nlohmann/detail/input/lexer.hpp
@@ -1511,7 +1511,7 @@
skip_whitespace();
// ignore comments
- if (ignore_comments && current == '/')
+ while (ignore_comments && current == '/')
{
if (!scan_comment())
{
diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp
index 4462da8..41c1711 100644
--- a/single_include/nlohmann/json.hpp
+++ b/single_include/nlohmann/json.hpp
@@ -7390,7 +7390,7 @@
skip_whitespace();
// ignore comments
- if (ignore_comments && current == '/')
+ while (ignore_comments && current == '/')
{
if (!scan_comment())
{
diff --git a/test/src/unit-class_lexer.cpp b/test/src/unit-class_lexer.cpp
index 0f544d5..6d4ede8 100644
--- a/test/src/unit-class_lexer.cpp
+++ b/test/src/unit-class_lexer.cpp
@@ -241,5 +241,8 @@
CHECK((scan_string("/* true */", true) == json::lexer::token_type::end_of_input));
CHECK((scan_string("/*/**/", true) == json::lexer::token_type::end_of_input));
CHECK((scan_string("/*/* */", true) == json::lexer::token_type::end_of_input));
+
+ CHECK((scan_string("//\n//\n", true) == json::lexer::token_type::end_of_input));
+ CHECK((scan_string("/**//**//**/", true) == json::lexer::token_type::end_of_input));
}
}
diff --git a/test/src/unit-regression2.cpp b/test/src/unit-regression2.cpp
index d445f06..1f8c527 100644
--- a/test/src/unit-regression2.cpp
+++ b/test/src/unit-regression2.cpp
@@ -478,4 +478,11 @@
CHECK(jsonObj["aaaa"] == 11);
CHECK(jsonObj["bbb"] == 222);
}
+
+ SECTION("issue #2330 - ignore_comment=true fails on multiple consecutive lines starting with comments")
+ {
+ std::string ss = "//\n//\n{\n}\n";
+ json j = json::parse(ss, nullptr, true, true);
+ CHECK(j.dump() == "{}");
+ }
}