From 1dee40a9697dd4bc22ed6dd13ad5c928d44ff0f6 Mon Sep 17 00:00:00 2001
From: Niels <niels.lohmann@gmail.com>
Date: Sun, 17 Apr 2016 22:34:39 +0200
Subject: [PATCH] fixed test case

---
 src/json.hpp      | 24 ++++++------------------
 src/json.hpp.re2c | 24 ++++++------------------
 test/unit.cpp     |  2 +-
 3 files changed, 13 insertions(+), 37 deletions(-)

diff --git a/src/json.hpp b/src/json.hpp
index 030c8f2c..5fdba140 100644
--- a/src/json.hpp
+++ b/src/json.hpp
@@ -8986,25 +8986,15 @@ basic_json_parser_63:
                     }
 
                     /*
-                    This function is only to be called from the unflatten()
-                    function. There, j is initially of type null.
-
-                    - In case the reference tokens are empty, a reference to
-                      j is returned and overwritten by the desired value by
-                      the unflatten() function.
-                    - If there are reference tokens, the null value of j will
-                      be changed to an object or array after reading the first
-                      reference token.
-                    - All subsequent tokens work on arrays or objects and will
-                      not change the type of j.
-
-                    Consequently, the type of @a j will always be null,
-                    object, or array. Hence, the following line is
-                    unreachable.
+                    The following code is only reached if there exists a
+                    reference token _and_ the current value is primitive. In
+                    this case, we have an error situation, because primitive
+                    values may only occur as single value; that is, with an
+                    empty list of reference tokens.
                     */
                     default:
                     {
-                        break; // LCOV_EXCL_LINE
+                        throw std::domain_error("invalid value to unflatten");
                     }
                 }
             }
@@ -9462,8 +9452,6 @@ basic_json_parser_63:
 
     @complexity Linear in the size the JSON value.
 
-    @throws std::domain_error
-
     @liveexample{The following code shows how a flattened JSON object is
     unflattened into the original nested JSON object.,unflatten}
 
diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c
index f5fbe65b..95a484f8 100644
--- a/src/json.hpp.re2c
+++ b/src/json.hpp.re2c
@@ -8296,25 +8296,15 @@ class basic_json
                     }
 
                     /*
-                    This function is only to be called from the unflatten()
-                    function. There, j is initially of type null.
-
-                    - In case the reference tokens are empty, a reference to
-                      j is returned and overwritten by the desired value by
-                      the unflatten() function.
-                    - If there are reference tokens, the null value of j will
-                      be changed to an object or array after reading the first
-                      reference token.
-                    - All subsequent tokens work on arrays or objects and will
-                      not change the type of j.
-
-                    Consequently, the type of @a j will always be null,
-                    object, or array. Hence, the following line is
-                    unreachable.
+                    The following code is only reached if there exists a
+                    reference token _and_ the current value is primitive. In
+                    this case, we have an error situation, because primitive
+                    values may only occur as single value; that is, with an
+                    empty list of reference tokens.
                     */
                     default:
                     {
-                        break; // LCOV_EXCL_LINE
+                        throw std::domain_error("invalid value to unflatten");
                     }
                 }
             }
@@ -8772,8 +8762,6 @@ class basic_json
 
     @complexity Linear in the size the JSON value.
 
-    @throws std::domain_error
-
     @liveexample{The following code shows how a flattened JSON object is
     unflattened into the original nested JSON object.,unflatten}
 
diff --git a/test/unit.cpp b/test/unit.cpp
index f5a6fc09..2666e111 100644
--- a/test/unit.cpp
+++ b/test/unit.cpp
@@ -12368,7 +12368,7 @@ TEST_CASE("JSON pointers")
         // error for conflicting values
         json j_error = {{"", 42}, {"/foo", 17}};
         CHECK_THROWS_AS(j_error.unflatten(), std::domain_error);
-        CHECK_THROWS_WITH(j_error.unflatten(), "unresolved reference token 'foo'");
+        CHECK_THROWS_WITH(j_error.unflatten(), "invalid value to unflatten");
 
         // explicit roundtrip check
         CHECK(j.flatten().unflatten() == j);