errors.go raw

   1  //
   2  // Copyright 2024 CloudWeGo Authors
   3  //
   4  // Licensed under the Apache License, Version 2.0 (the "License");
   5  // you may not use this file except in compliance with the License.
   6  // You may obtain a copy of the License at
   7  //
   8  //     http://www.apache.org/licenses/LICENSE-2.0
   9  //
  10  // Unless required by applicable law or agreed to in writing, software
  11  // distributed under the License is distributed on an "AS IS" BASIS,
  12  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13  // See the License for the specific language governing permissions and
  14  // limitations under the License.
  15  //
  16  
  17  package expr
  18  
  19  import (
  20  	"fmt"
  21  )
  22  
  23  // SyntaxError represents a syntax error in the expression.
  24  type SyntaxError struct {
  25  	Pos    int
  26  	Reason string
  27  }
  28  
  29  func newSyntaxError(pos int, reason string) *SyntaxError {
  30  	return &SyntaxError{
  31  		Pos:    pos,
  32  		Reason: reason,
  33  	}
  34  }
  35  
  36  func (self *SyntaxError) Error() string {
  37  	return fmt.Sprintf("Syntax error at position %d: %s", self.Pos, self.Reason)
  38  }
  39  
  40  // RuntimeError is an error which would occure at run time.
  41  type RuntimeError struct {
  42  	Reason string
  43  }
  44  
  45  func newRuntimeError(reason string) *RuntimeError {
  46  	return &RuntimeError{
  47  		Reason: reason,
  48  	}
  49  }
  50  
  51  func (self *RuntimeError) Error() string {
  52  	return "Runtime error: " + self.Reason
  53  }
  54