Skip to content

Commit 18ae85b

Browse files
committed
revert 'Added structured error reporting to Reader.'
revert 68db655 issue #147
1 parent bd2aa77 commit 18ae85b

File tree

5 files changed

+3
-180
lines changed

5 files changed

+3
-180
lines changed

include/json/reader.h

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,6 @@ class JSON_API Reader {
3535
typedef char Char;
3636
typedef const Char* Location;
3737

38-
/** \brief An error tagged with where in the JSON text it was encountered.
39-
*
40-
* The offsets give the [start, limit) range of bytes within the text. Note
41-
* that this is bytes, not codepoints.
42-
*
43-
*/
44-
struct StructuredError {
45-
size_t offset_start;
46-
size_t offset_limit;
47-
std::string message;
48-
};
49-
5038
/** \brief Constructs a Reader allowing all features
5139
* for parsing.
5240
*/
@@ -123,15 +111,6 @@ class JSON_API Reader {
123111
*/
124112
std::string getFormattedErrorMessages() const;
125113

126-
/** \brief Returns a vector of structured erros encounted while parsing.
127-
* \return A (possibly empty) vector of StructuredError objects. Currently
128-
* only one error can be returned, but the caller should tolerate
129-
* multiple
130-
* errors. This can occur if the parser recovers from a non-fatal
131-
* parse error and then encounters additional errors.
132-
*/
133-
std::vector<StructuredError> getStructuredErrors() const;
134-
135114
private:
136115
enum TokenType {
137116
tokenEndOfStream = 0,

include/json/value.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -451,13 +451,6 @@ Json::Value obj_value(Json::objectValue); // {}
451451
iterator begin();
452452
iterator end();
453453

454-
// Accessors for the [start, limit) range of bytes within the JSON text from
455-
// which this value was parsed, if any.
456-
void setOffsetStart(size_t start);
457-
void setOffsetLimit(size_t limit);
458-
size_t getOffsetStart() const;
459-
size_t getOffsetLimit() const;
460-
461454
private:
462455
void initBasic(ValueType type, bool allocated = false);
463456

@@ -514,11 +507,6 @@ Json::Value obj_value(Json::objectValue); // {}
514507
unsigned int memberNameIsStatic_ : 1; // used by the ValueInternalMap container.
515508
#endif
516509
CommentInfo* comments_;
517-
518-
// [start, limit) byte offsets in the source JSON text from which this Value
519-
// was extracted.
520-
size_t start_;
521-
size_t limit_;
522510
};
523511

524512
/** \brief Experimental and untested: represents an element of the "path" to

src/lib_json/json_reader.cpp

Lines changed: 2 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -163,11 +163,9 @@ bool Reader::readValue() {
163163
switch (token.type_) {
164164
case tokenObjectBegin:
165165
successful = readObject(token);
166-
currentValue().setOffsetLimit(current_ - begin_);
167166
break;
168167
case tokenArrayBegin:
169168
successful = readArray(token);
170-
currentValue().setOffsetLimit(current_ - begin_);
171169
break;
172170
case tokenNumber:
173171
successful = decodeNumber(token);
@@ -179,24 +177,18 @@ bool Reader::readValue() {
179177
{
180178
Value v(true);
181179
currentValue().swapPayload(v);
182-
currentValue().setOffsetStart(token.start_ - begin_);
183-
currentValue().setOffsetLimit(token.end_ - begin_);
184180
}
185181
break;
186182
case tokenFalse:
187183
{
188184
Value v(false);
189185
currentValue().swapPayload(v);
190-
currentValue().setOffsetStart(token.start_ - begin_);
191-
currentValue().setOffsetLimit(token.end_ - begin_);
192186
}
193187
break;
194188
case tokenNull:
195189
{
196190
Value v;
197191
currentValue().swapPayload(v);
198-
currentValue().setOffsetStart(token.start_ - begin_);
199-
currentValue().setOffsetLimit(token.end_ - begin_);
200192
}
201193
break;
202194
case tokenArraySeparator:
@@ -206,14 +198,10 @@ bool Reader::readValue() {
206198
current_--;
207199
Value v;
208200
currentValue().swapPayload(v);
209-
currentValue().setOffsetStart(current_ - begin_ - 1);
210-
currentValue().setOffsetLimit(current_ - begin_);
211201
break;
212202
}
213203
// Else, fall through...
214204
default:
215-
currentValue().setOffsetStart(token.start_ - begin_);
216-
currentValue().setOffsetLimit(token.end_ - begin_);
217205
return addError("Syntax error: value, object or array expected.", token);
218206
}
219207

@@ -441,12 +429,11 @@ bool Reader::readString() {
441429
return c == '"';
442430
}
443431

444-
bool Reader::readObject(Token& tokenStart) {
432+
bool Reader::readObject(Token& /*tokenStart*/) {
445433
Token tokenName;
446434
std::string name;
447435
Value init(objectValue);
448436
currentValue().swapPayload(init);
449-
currentValue().setOffsetStart(tokenStart.start_ - begin_);
450437
while (readToken(tokenName)) {
451438
bool initialTokenOk = true;
452439
while (tokenName.type_ == tokenComment && initialTokenOk)
@@ -497,10 +484,9 @@ bool Reader::readObject(Token& tokenStart) {
497484
"Missing '}' or object member name", tokenName, tokenObjectEnd);
498485
}
499486

500-
bool Reader::readArray(Token& tokenStart) {
487+
bool Reader::readArray(Token& /*tokenStart*/) {
501488
Value init(arrayValue);
502489
currentValue().swapPayload(init);
503-
currentValue().setOffsetStart(tokenStart.start_ - begin_);
504490
skipSpaces();
505491
if (*current_ == ']') // empty array
506492
{
@@ -540,8 +526,6 @@ bool Reader::decodeNumber(Token& token) {
540526
if (!decodeNumber(token, decoded))
541527
return false;
542528
currentValue().swapPayload(decoded);
543-
currentValue().setOffsetStart(token.start_ - begin_);
544-
currentValue().setOffsetLimit(token.end_ - begin_);
545529
return true;
546530
}
547531

@@ -590,8 +574,6 @@ bool Reader::decodeDouble(Token& token) {
590574
if (!decodeDouble(token, decoded))
591575
return false;
592576
currentValue().swapPayload(decoded);
593-
currentValue().setOffsetStart(token.start_ - begin_);
594-
currentValue().setOffsetLimit(token.end_ - begin_);
595577
return true;
596578
}
597579

@@ -637,8 +619,6 @@ bool Reader::decodeString(Token& token) {
637619
return false;
638620
Value decoded(decoded_string);
639621
currentValue().swapPayload(decoded);
640-
currentValue().setOffsetStart(token.start_ - begin_);
641-
currentValue().setOffsetLimit(token.end_ - begin_);
642622
return true;
643623
}
644624

@@ -850,20 +830,6 @@ std::string Reader::getFormattedErrorMessages() const {
850830
return formattedMessage;
851831
}
852832

853-
std::vector<Reader::StructuredError> Reader::getStructuredErrors() const {
854-
std::vector<Reader::StructuredError> allErrors;
855-
for (Errors::const_iterator itError = errors_.begin();
856-
itError != errors_.end();
857-
++itError) {
858-
const ErrorInfo& error = *itError;
859-
Reader::StructuredError structured;
860-
structured.offset_start = error.token_.start_ - begin_;
861-
structured.offset_limit = error.token_.end_ - begin_;
862-
structured.message = error.message_;
863-
allErrors.push_back(structured);
864-
}
865-
return allErrors;
866-
}
867833
// Reader
868834
/////////////////////////
869835

@@ -918,7 +884,6 @@ class OurReader {
918884
Value& root,
919885
bool collectComments = true);
920886
std::string getFormattedErrorMessages() const;
921-
std::vector<StructuredError> getStructuredErrors() const;
922887

923888
private:
924889
OurReader(OurReader const&); // no impl
@@ -1076,11 +1041,9 @@ bool OurReader::readValue() {
10761041
switch (token.type_) {
10771042
case tokenObjectBegin:
10781043
successful = readObject(token);
1079-
currentValue().setOffsetLimit(current_ - begin_);
10801044
break;
10811045
case tokenArrayBegin:
10821046
successful = readArray(token);
1083-
currentValue().setOffsetLimit(current_ - begin_);
10841047
break;
10851048
case tokenNumber:
10861049
successful = decodeNumber(token);
@@ -1092,24 +1055,18 @@ bool OurReader::readValue() {
10921055
{
10931056
Value v(true);
10941057
currentValue().swapPayload(v);
1095-
currentValue().setOffsetStart(token.start_ - begin_);
1096-
currentValue().setOffsetLimit(token.end_ - begin_);
10971058
}
10981059
break;
10991060
case tokenFalse:
11001061
{
11011062
Value v(false);
11021063
currentValue().swapPayload(v);
1103-
currentValue().setOffsetStart(token.start_ - begin_);
1104-
currentValue().setOffsetLimit(token.end_ - begin_);
11051064
}
11061065
break;
11071066
case tokenNull:
11081067
{
11091068
Value v;
11101069
currentValue().swapPayload(v);
1111-
currentValue().setOffsetStart(token.start_ - begin_);
1112-
currentValue().setOffsetLimit(token.end_ - begin_);
11131070
}
11141071
break;
11151072
case tokenArraySeparator:
@@ -1119,14 +1076,10 @@ bool OurReader::readValue() {
11191076
current_--;
11201077
Value v;
11211078
currentValue().swapPayload(v);
1122-
currentValue().setOffsetStart(current_ - begin_ - 1);
1123-
currentValue().setOffsetLimit(current_ - begin_);
11241079
break;
11251080
}
11261081
// Else, fall through...
11271082
default:
1128-
currentValue().setOffsetStart(token.start_ - begin_);
1129-
currentValue().setOffsetLimit(token.end_ - begin_);
11301083
return addError("Syntax error: value, object or array expected.", token);
11311084
}
11321085

@@ -1340,7 +1293,6 @@ bool OurReader::readObject(Token& tokenStart) {
13401293
std::string name;
13411294
Value init(objectValue);
13421295
currentValue().swapPayload(init);
1343-
currentValue().setOffsetStart(tokenStart.start_ - begin_);
13441296
while (readToken(tokenName)) {
13451297
bool initialTokenOk = true;
13461298
while (tokenName.type_ == tokenComment && initialTokenOk)
@@ -1394,7 +1346,6 @@ bool OurReader::readObject(Token& tokenStart) {
13941346
bool OurReader::readArray(Token& tokenStart) {
13951347
Value init(arrayValue);
13961348
currentValue().swapPayload(init);
1397-
currentValue().setOffsetStart(tokenStart.start_ - begin_);
13981349
skipSpaces();
13991350
if (*current_ == ']') // empty array
14001351
{
@@ -1434,8 +1385,6 @@ bool OurReader::decodeNumber(Token& token) {
14341385
if (!decodeNumber(token, decoded))
14351386
return false;
14361387
currentValue().swapPayload(decoded);
1437-
currentValue().setOffsetStart(token.start_ - begin_);
1438-
currentValue().setOffsetLimit(token.end_ - begin_);
14391388
return true;
14401389
}
14411390

@@ -1484,8 +1433,6 @@ bool OurReader::decodeDouble(Token& token) {
14841433
if (!decodeDouble(token, decoded))
14851434
return false;
14861435
currentValue().swapPayload(decoded);
1487-
currentValue().setOffsetStart(token.start_ - begin_);
1488-
currentValue().setOffsetLimit(token.end_ - begin_);
14891436
return true;
14901437
}
14911438

@@ -1531,8 +1478,6 @@ bool OurReader::decodeString(Token& token) {
15311478
return false;
15321479
Value decoded(decoded_string);
15331480
currentValue().swapPayload(decoded);
1534-
currentValue().setOffsetStart(token.start_ - begin_);
1535-
currentValue().setOffsetLimit(token.end_ - begin_);
15361481
return true;
15371482
}
15381483

@@ -1739,21 +1684,6 @@ std::string OurReader::getFormattedErrorMessages() const {
17391684
return formattedMessage;
17401685
}
17411686

1742-
std::vector<OurReader::StructuredError> OurReader::getStructuredErrors() const {
1743-
std::vector<OurReader::StructuredError> allErrors;
1744-
for (Errors::const_iterator itError = errors_.begin();
1745-
itError != errors_.end();
1746-
++itError) {
1747-
const ErrorInfo& error = *itError;
1748-
OurReader::StructuredError structured;
1749-
structured.offset_start = error.token_.start_ - begin_;
1750-
structured.offset_limit = error.token_.end_ - begin_;
1751-
structured.message = error.message_;
1752-
allErrors.push_back(structured);
1753-
}
1754-
return allErrors;
1755-
}
1756-
17571687

17581688
class OurCharReader : public CharReader {
17591689
bool const collectComments_;

src/lib_json/json_value.cpp

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ Value::Value(const Value& other)
332332
itemIsUsed_(0)
333333
#endif
334334
,
335-
comments_(0), start_(other.start_), limit_(other.limit_) {
335+
comments_(0) {
336336
switch (type_) {
337337
case nullValue:
338338
case intValue:
@@ -429,8 +429,6 @@ void Value::swapPayload(Value& other) {
429429
void Value::swap(Value& other) {
430430
swapPayload(other);
431431
std::swap(comments_, other.comments_);
432-
std::swap(start_, other.start_);
433-
std::swap(limit_, other.limit_);
434432
}
435433

436434
ValueType Value::type() const { return type_; }
@@ -805,8 +803,6 @@ void Value::clear() {
805803
JSON_ASSERT_MESSAGE(type_ == nullValue || type_ == arrayValue ||
806804
type_ == objectValue,
807805
"in Json::Value::clear(): requires complex value");
808-
start_ = 0;
809-
limit_ = 0;
810806
switch (type_) {
811807
#ifndef JSON_VALUE_USE_INTERNAL_MAP
812808
case arrayValue:
@@ -911,8 +907,6 @@ void Value::initBasic(ValueType type, bool allocated) {
911907
itemIsUsed_ = 0;
912908
#endif
913909
comments_ = 0;
914-
start_ = 0;
915-
limit_ = 0;
916910
}
917911

918912
Value& Value::resolveReference(const char* key, bool isStatic) {
@@ -1259,14 +1253,6 @@ std::string Value::getComment(CommentPlacement placement) const {
12591253
return "";
12601254
}
12611255

1262-
void Value::setOffsetStart(size_t start) { start_ = start; }
1263-
1264-
void Value::setOffsetLimit(size_t limit) { limit_ = limit; }
1265-
1266-
size_t Value::getOffsetStart() const { return start_; }
1267-
1268-
size_t Value::getOffsetLimit() const { return limit_; }
1269-
12701256
std::string Value::toStyledString() const {
12711257
StyledWriter writer;
12721258
return writer.write(*this);

0 commit comments

Comments
 (0)