diff --git a/src/jsontestrunner/main.cpp b/src/jsontestrunner/main.cpp index 338167e9c..ba985877d 100644 --- a/src/jsontestrunner/main.cpp +++ b/src/jsontestrunner/main.cpp @@ -61,6 +61,9 @@ static std::string readInputTestFile(const char* path) { static void printValueTree(FILE* fout, Json::Value& value, const std::string& path = ".") { + if (value.hasComment(Json::commentBefore)) { + fprintf(fout, "%s\n", value.getComment(Json::commentBefore).c_str()); + } switch (value.type()) { case Json::nullValue: fprintf(fout, "%s=null\n", path.c_str()); @@ -117,6 +120,10 @@ printValueTree(FILE* fout, Json::Value& value, const std::string& path = ".") { default: break; } + + if (value.hasComment(Json::commentAfter)) { + fprintf(fout, "%s\n", value.getComment(Json::commentAfter).c_str()); + } } static int parseAndSaveValueTree(const std::string& input, diff --git a/src/lib_json/json_reader.cpp b/src/lib_json/json_reader.cpp index 36e4c4c48..c6a35bff1 100644 --- a/src/lib_json/json_reader.cpp +++ b/src/lib_json/json_reader.cpp @@ -358,8 +358,6 @@ Reader::addComment(Location begin, Location end, CommentPlacement placement) { assert(lastValue_ != 0); lastValue_->setComment(std::string(begin, end), placement); } else { - if (!commentsBefore_.empty()) - commentsBefore_ += "\n"; commentsBefore_ += std::string(begin, end); } } diff --git a/test/data/test_basic_08.expected b/test/data/test_basic_08.expected index c8db822e5..caf5352a1 100644 --- a/test/data/test_basic_08.expected +++ b/test/data/test_basic_08.expected @@ -1,2 +1,3 @@ +// C++ style comment .=null diff --git a/test/data/test_basic_09.expected b/test/data/test_basic_09.expected index c8db822e5..8b129da42 100644 --- a/test/data/test_basic_09.expected +++ b/test/data/test_basic_09.expected @@ -1,2 +1,4 @@ +/* C style comment + */ .=null diff --git a/test/data/test_comment_02.expected b/test/data/test_comment_02.expected index 09c745da3..88d2bd0dc 100644 --- a/test/data/test_comment_02.expected +++ b/test/data/test_comment_02.expected @@ -1,7 +1,14 @@ .={} +/* C-style comment + + C-style-2 comment */ .c-test={} .c-test.a=1 +/* Internal comment c-style */ .c-test.b=2 +// C++-style comment .cpp-test={} +// Multiline comment cpp-style +// Second line .cpp-test.c=3 .cpp-test.d=4 diff --git a/test/data/test_comment_02.json b/test/data/test_comment_02.json index ccf631f7b..297d88903 100644 --- a/test/data/test_comment_02.json +++ b/test/data/test_comment_02.json @@ -9,7 +9,8 @@ }, // C++-style comment "cpp-test" : { - // Internal comment cpp-style + // Multiline comment cpp-style + // Second line "c" : 3, "d" : 4 } diff --git a/test/data/test_integer_01.expected b/test/data/test_integer_01.expected index 593f1db32..463e149de 100644 --- a/test/data/test_integer_01.expected +++ b/test/data/test_integer_01.expected @@ -1 +1,2 @@ +// Max signed integer .=2147483647 diff --git a/test/data/test_integer_02.expected b/test/data/test_integer_02.expected index 4b83bd7ca..0773e0851 100644 --- a/test/data/test_integer_02.expected +++ b/test/data/test_integer_02.expected @@ -1 +1,2 @@ +// Min signed integer .=-2147483648 diff --git a/test/data/test_integer_03.expected b/test/data/test_integer_03.expected index 37c1cb146..c7efff799 100644 --- a/test/data/test_integer_03.expected +++ b/test/data/test_integer_03.expected @@ -1 +1,2 @@ +// Max unsigned integer .=4294967295 diff --git a/test/data/test_integer_04.expected b/test/data/test_integer_04.expected index b7b548e3d..39f856704 100644 --- a/test/data/test_integer_04.expected +++ b/test/data/test_integer_04.expected @@ -1,2 +1,3 @@ +// Min unsigned integer .=0 diff --git a/test/data/test_preserve_comment_01.expected b/test/data/test_preserve_comment_01.expected index 8d8804108..2797aa7d6 100644 --- a/test/data/test_preserve_comment_01.expected +++ b/test/data/test_preserve_comment_01.expected @@ -1,3 +1,11 @@ +/* A comment + at the beginning of the file. + */ .={} .first=1 +/* Comment before 'second' + */ .second=2 +/* A comment at + the end of the file. + */ diff --git a/test/data/test_real_01.expected b/test/data/test_real_01.expected index ae2357231..951482708 100644 --- a/test/data/test_real_01.expected +++ b/test/data/test_real_01.expected @@ -1,2 +1,3 @@ +// 2^33 => out of integer range, switch to double .=8589934592 diff --git a/test/data/test_real_02.expected b/test/data/test_real_02.expected index df8de4210..b80c00481 100644 --- a/test/data/test_real_02.expected +++ b/test/data/test_real_02.expected @@ -1,2 +1,3 @@ +// -2^32 => out of signed integer range, switch to double .=-4294967295 diff --git a/test/data/test_real_03.expected b/test/data/test_real_03.expected index df8de4210..b80c00481 100644 --- a/test/data/test_real_03.expected +++ b/test/data/test_real_03.expected @@ -1,2 +1,3 @@ +// -2^32 => out of signed integer range, switch to double .=-4294967295 diff --git a/test/data/test_real_04.expected b/test/data/test_real_04.expected index d726abe40..ff71a23e1 100644 --- a/test/data/test_real_04.expected +++ b/test/data/test_real_04.expected @@ -1,2 +1,3 @@ +// 1.2345678 .=1.2345678 diff --git a/test/data/test_real_05.expected b/test/data/test_real_05.expected index 949fd8f55..7a460932d 100644 --- a/test/data/test_real_05.expected +++ b/test/data/test_real_05.expected @@ -1,3 +1,4 @@ +// 1234567.8 .=1234567.8 diff --git a/test/data/test_real_06.expected b/test/data/test_real_06.expected index 03b7d7f98..a4a004deb 100644 --- a/test/data/test_real_06.expected +++ b/test/data/test_real_06.expected @@ -1,3 +1,4 @@ +// -1.2345678 .=-1.2345678 diff --git a/test/data/test_real_07.expected b/test/data/test_real_07.expected index 12025a404..dc02a8958 100644 --- a/test/data/test_real_07.expected +++ b/test/data/test_real_07.expected @@ -1,3 +1,4 @@ +// -1234567.8 .=-1234567.8 diff --git a/test/data/test_real_08.expected b/test/data/test_real_08.expected index 9a5f06284..b1deef919 100644 --- a/test/data/test_real_08.expected +++ b/test/data/test_real_08.expected @@ -1 +1,4 @@ +// Out of 32-bit integer range, switch to double in 32-bit mode. Length the +// same as UINT_MAX in base 10 and digit less than UINT_MAX's last digit in +// order to catch a bug in the parsing code. .=4300000001 diff --git a/test/data/test_real_09.expected b/test/data/test_real_09.expected index 6da815e66..aa2dbb284 100644 --- a/test/data/test_real_09.expected +++ b/test/data/test_real_09.expected @@ -1 +1,4 @@ +// Out of 64-bit integer range, switch to double in all modes. Length the same +// as ULONG_MAX in base 10 and digit less than ULONG_MAX's last digit in order +// to catch a bug in the parsing code. .=1.9e+19 diff --git a/test/data/test_real_10.expected b/test/data/test_real_10.expected index 01126bfbe..d28a430ea 100644 --- a/test/data/test_real_10.expected +++ b/test/data/test_real_10.expected @@ -1 +1,4 @@ +// Out of 32-bit signed integer range, switch to double in all modes. Length +// the same as INT_MIN in base 10 and digit less than INT_MIN's last digit in +// order to catch a bug in the parsing code. .=-2200000001 diff --git a/test/data/test_real_11.expected b/test/data/test_real_11.expected index 17f4187b9..2551946f5 100644 --- a/test/data/test_real_11.expected +++ b/test/data/test_real_11.expected @@ -1 +1,4 @@ +// Out of 64-bit signed integer range, switch to double in all modes. Length +// the same as LONG_MIN in base 10 and digit less than LONG_MIN's last digit in +// order to catch a bug in the parsing code. .=-9.3e+18 diff --git a/test/data/test_real_12.expected b/test/data/test_real_12.expected index a0003192d..93e2417d3 100644 --- a/test/data/test_real_12.expected +++ b/test/data/test_real_12.expected @@ -1 +1,2 @@ +// 2^64 -> switch to double. .=1.844674407370955e+19