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)