github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/ast/filter.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 ast
     6  
     7  // FileExportsは、GoのソースファイルのASTを現在の場所でトリムします。
     8  // エクスポートされたノードのみが残り、エクスポートされていないトップレベルの識別子とそれに関連する情報
     9  // (型、初期値、または関数本体など)は削除されます。エクスポートされた型の非エクスポートフィールドとメソッドも剥ぎ取られます。
    10  // [File.Comments] リストは変更されません。
    11  //
    12  // FileExportsは、エクスポートされた宣言があるかどうかを報告します。
    13  func FileExports(src *File) bool
    14  
    15  // PackageExportsは、GoパッケージのASTを変更して、エクスポートされたノードのみが残るようにします。pkg.Filesリストは変更されず、ファイル名とトップレベルのパッケージコメントは失われません。
    16  //
    17  // PackageExportsは、エクスポートされた宣言があるかどうかを報告します。エクスポートされた宣言がない場合、falseを返します。
    18  func PackageExports(pkg *Package) bool
    19  
    20  type Filter func(string) bool
    21  
    22  // FilterDeclはGoの宣言のASTを変更して、フィルターfを通過しない名前(構造体フィールドやインタフェースメソッドの名前を含むが、パラメーターリストからは除外)を削除します。
    23  //
    24  // FilterDeclは、フィルタリング後に残された宣言された名前があるかどうかを報告します。
    25  func FilterDecl(decl Decl, f Filter) bool
    26  
    27  // FilterFileは、フィルタfを通過しない(構造体のフィールドやインターフェースのメソッド名を含むが、パラメータリストからは含まれない)トップレベルの宣言からすべての名前を削除することで、GoファイルのASTを修正します。もし宣言が空になった場合、宣言はASTから削除されます。Import宣言は必ず削除されます。[File.Comments] のリストは変更されません。
    28  // FilterFileは、フィルタリング後にトップレベルの宣言が残っているかどうかを報告します。
    29  func FilterFile(src *File, f Filter) bool
    30  
    31  // FilterPackageは、フィルターfを通過しない(構造体フィールドやインターフェースメソッド名を含むが、パラメータリストからは除かれない)トップレベル宣言のすべての名前を削除することにより、GoパッケージのASTを修正します。 宣言がその後空になった場合、宣言はASTから削除されます。 pkg.Filesリストは変更されないため、ファイル名やトップレベルのパッケージコメントが失われることはありません。
    32  //
    33  // FilterPackageは、フィルタリング後にトップレベルの宣言が残っているかどうかを報告します。
    34  func FilterPackage(pkg *Package, f Filter) bool
    35  
    36  // [MergePackageFiles] の動作を制御するMergeModeフラグ。
    37  type MergeMode uint
    38  
    39  const (
    40  	// セットされている場合、重複する関数宣言は除外されます。
    41  	FilterFuncDuplicates MergeMode = 1 << iota
    42  
    43  	// セットされている場合、特定のASTノード(DocやCommentなど)に関連付けられていないコメントは除外されます。
    44  	FilterUnassociatedComments
    45  	// もし設定されていた場合、重複したインポート宣言は除外されます。
    46  	FilterImportDuplicates
    47  )
    48  
    49  // MergePackageFilesはパッケージに所属するファイルのASTをマージしてファイルASTを作成します。モードフラグはマージの動作を制御します。
    50  func MergePackageFiles(pkg *Package, mode MergeMode) *File