aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/json
diff options
context:
space:
mode:
authorFrancesco Renzi <rentziass@gmail.com>2019-10-11 13:59:15 +0100
committerIan Lance Taylor <iant@golang.org>2019-10-11 16:34:01 +0000
commitba108c93b864aaa10814e010b4e2efead21516ec (patch)
tree05f34c1122291c53f4cab5575c2e5558d0723131 /src/encoding/json
parentac8966aa581a4b5178d40bca36854461f234f85e (diff)
downloadgo-ba108c93b864aaa10814e010b4e2efead21516ec.tar.gz
go-ba108c93b864aaa10814e010b4e2efead21516ec.zip
encoding/json: add Decoder.InputOffset for offset access
This makes Decoder.offset public while renaming it to Decoder.InputOffset to match encoding/xml Decoder API Code changes made by Adam Stankiewicz [sheerun@sher.pl] Fixes #29688 Change-Id: I86dbfd2b2da80160846e92bfa580c53d8d45e2db Reviewed-on: https://go-review.googlesource.com/c/go/+/200677 Run-TryBot: Johan Brandhorst <johan.brandhorst@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/encoding/json')
-rw-r--r--src/encoding/json/stream.go13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/encoding/json/stream.go b/src/encoding/json/stream.go
index 3d30322ce2..81f404f426 100644
--- a/src/encoding/json/stream.go
+++ b/src/encoding/json/stream.go
@@ -56,7 +56,7 @@ func (dec *Decoder) Decode(v interface{}) error {
}
if !dec.tokenValueAllowed() {
- return &SyntaxError{msg: "not at beginning of value", Offset: dec.offset()}
+ return &SyntaxError{msg: "not at beginning of value", Offset: dec.InputOffset()}
}
// Read whole value into buffer.
@@ -314,7 +314,7 @@ func (dec *Decoder) tokenPrepareForDecode() error {
return err
}
if c != ',' {
- return &SyntaxError{"expected comma after array element", dec.offset()}
+ return &SyntaxError{"expected comma after array element", dec.InputOffset()}
}
dec.scanp++
dec.tokenState = tokenArrayValue
@@ -324,7 +324,7 @@ func (dec *Decoder) tokenPrepareForDecode() error {
return err
}
if c != ':' {
- return &SyntaxError{"expected colon after object key", dec.offset()}
+ return &SyntaxError{"expected colon after object key", dec.InputOffset()}
}
dec.scanp++
dec.tokenState = tokenObjectValue
@@ -477,7 +477,7 @@ func (dec *Decoder) tokenError(c byte) (Token, error) {
case tokenObjectComma:
context = " after object key:value pair"
}
- return nil, &SyntaxError{"invalid character " + quoteChar(c) + context, dec.offset()}
+ return nil, &SyntaxError{"invalid character " + quoteChar(c) + context, dec.InputOffset()}
}
// More reports whether there is another element in the
@@ -506,6 +506,9 @@ func (dec *Decoder) peek() (byte, error) {
}
}
-func (dec *Decoder) offset() int64 {
+// InputOffset returns the input stream byte offset of the current decoder position.
+// The offset gives the location of the end of the most recently returned token
+// and the beginning of the next token.
+func (dec *Decoder) InputOffset() int64 {
return dec.scanned + int64(dec.scanp)
}