github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/scanner/errors.go (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package scanner 6 7 import ( 8 "github.com/shogo82148/std/go/token" 9 "github.com/shogo82148/std/io" 10 ) 11 12 // [ErrorList] では、エラーは*Errorで表されます。 13 // Posは、有効な場合は問題のあるトークンの先頭を指し、エラーの状況はMsgで説明されます。 14 type Error struct { 15 Pos token.Position 16 Msg string 17 } 18 19 // Errorはerrorインターフェースを実装します。 20 func (e Error) Error() string 21 22 // ErrorListは*Errorsのリストです。 23 // ErrorListのゼロ値は使用する準備ができた空のErrorListです。 24 type ErrorList []*Error 25 26 // Addは、指定された位置とエラーメッセージを持つ [Error] を [ErrorList] に追加します。 27 func (p *ErrorList) Add(pos token.Position, msg string) 28 29 // Resetは [ErrorList] のエラーをリセットします。 30 func (p *ErrorList) Reset() 31 32 // [ErrorList] はsort Interfaceを実装します。 33 func (p ErrorList) Len() int 34 func (p ErrorList) Swap(i, j int) 35 36 func (p ErrorList) Less(i, j int) bool 37 38 // Sort関数は、[ErrorList] をソートします。*[Error] のエントリは位置で、他のエラーはエラーメッセージでソートされ、*[Error] のエントリの前に配置されます。 39 func (p ErrorList) Sort() 40 41 // RemoveMultiplesは [ErrorList] をソートし、1行ごとに最初のエラー以外を削除します。 42 func (p *ErrorList) RemoveMultiples() 43 44 // [ErrorList] はerrorインターフェースを実装しています。 45 func (p ErrorList) Error() string 46 47 // Errはこのエラーリストに相当するエラーを返します。 48 // リストが空の場合、Errはnilを返します。 49 func (p ErrorList) Err() error 50 51 // PrintErrorは、errパラメータが [ErrorList] の場合、エラーリストを1行ごとにwに出力します。それ以外の場合は、err文字列を出力します。 52 func PrintError(w io.Writer, err error)