summaryrefslogtreecommitdiff
path: root/vendor/github.com/bytedance/sonic/ast/error.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/bytedance/sonic/ast/error.go')
-rw-r--r--vendor/github.com/bytedance/sonic/ast/error.go134
1 files changed, 0 insertions, 134 deletions
diff --git a/vendor/github.com/bytedance/sonic/ast/error.go b/vendor/github.com/bytedance/sonic/ast/error.go
deleted file mode 100644
index 3716e7a91..000000000
--- a/vendor/github.com/bytedance/sonic/ast/error.go
+++ /dev/null
@@ -1,134 +0,0 @@
-package ast
-
-import (
- `fmt`
- `strings`
- `unsafe`
-
- `github.com/bytedance/sonic/internal/native/types`
-)
-
-
-func newError(err types.ParsingError, msg string) *Node {
- return &Node{
- t: V_ERROR,
- l: uint(err),
- p: unsafe.Pointer(&msg),
- }
-}
-
-func newErrorPair(err SyntaxError) *Pair {
- return &Pair{0, "", *newSyntaxError(err)}
-}
-
-// Error returns error message if the node is invalid
-func (self Node) Error() string {
- if self.t != V_ERROR {
- return ""
- } else {
- return *(*string)(self.p)
- }
-}
-
-func newSyntaxError(err SyntaxError) *Node {
- msg := err.Description()
- return &Node{
- t: V_ERROR,
- l: uint(err.Code),
- p: unsafe.Pointer(&msg),
- }
-}
-
-func (self *Parser) syntaxError(err types.ParsingError) SyntaxError {
- return SyntaxError{
- Pos : self.p,
- Src : self.s,
- Code: err,
- }
-}
-
-func unwrapError(err error) *Node {
- if se, ok := err.(*Node); ok {
- return se
- }else if sse, ok := err.(Node); ok {
- return &sse
- } else {
- msg := err.Error()
- return &Node{
- t: V_ERROR,
- p: unsafe.Pointer(&msg),
- }
- }
-}
-
-type SyntaxError struct {
- Pos int
- Src string
- Code types.ParsingError
- Msg string
-}
-
-func (self SyntaxError) Error() string {
- return fmt.Sprintf("%q", self.Description())
-}
-
-func (self SyntaxError) Description() string {
- return "Syntax error " + self.description()
-}
-
-func (self SyntaxError) description() string {
- i := 16
- p := self.Pos - i
- q := self.Pos + i
-
- /* check for empty source */
- if self.Src == "" {
- return fmt.Sprintf("no sources available, the input json is empty: %#v", self)
- }
-
- /* prevent slicing before the beginning */
- if p < 0 {
- p, q, i = 0, q - p, i + p
- }
-
- /* prevent slicing beyond the end */
- if n := len(self.Src); q > n {
- n = q - n
- q = len(self.Src)
-
- /* move the left bound if possible */
- if p > n {
- i += n
- p -= n
- }
- }
-
- /* left and right length */
- x := clamp_zero(i)
- y := clamp_zero(q - p - i - 1)
-
- /* compose the error description */
- return fmt.Sprintf(
- "at index %d: %s\n\n\t%s\n\t%s^%s\n",
- self.Pos,
- self.Message(),
- self.Src[p:q],
- strings.Repeat(".", x),
- strings.Repeat(".", y),
- )
-}
-
-func (self SyntaxError) Message() string {
- if self.Msg == "" {
- return self.Code.Message()
- }
- return self.Msg
-}
-
-func clamp_zero(v int) int {
- if v < 0 {
- return 0
- } else {
- return v
- }
-}