12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package multierr
- import (
- "fmt"
- "github.com/kyleconroy/sqlc/internal/source"
- "github.com/kyleconroy/sqlc/internal/sql/sqlerr"
- )
- type FileError struct {
- Filename string
- Line int
- Column int
- Err error
- }
- func (e *FileError) Unwrap() error {
- return e.Err
- }
- type Error struct {
- errs []*FileError
- }
- func (e *Error) Add(filename, in string, loc int, err error) {
- line := 1
- column := 1
- if lerr, ok := err.(*sqlerr.Error); ok {
- if lerr.Location != 0 {
- loc = lerr.Location
- } else if lerr.Line != 0 && lerr.Column != 0 {
- line = lerr.Line
- column = lerr.Column
- }
- }
- if in != "" && loc != 0 {
- line, column = source.LineNumber(in, loc)
- }
- e.errs = append(e.errs, &FileError{filename, line, column, err})
- }
- func (e *Error) Errs() []*FileError {
- return e.errs
- }
- func (e *Error) Error() string {
- return fmt.Sprintf("multiple errors: %d errors", len(e.errs))
- }
- func New() *Error {
- return &Error{}
- }
|