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