Slide 19
Slide 19 text
© 2025 ANDPAD All Rights Reserved.
Go 1.25以前の go/token#FileSet の課題
func main() {
// 1. pkgA のコードを解析
fsetA := token.NewFileSet()
filePathA := "pkgA/a.go"
astA, _ := parser.ParseFile(fsetA, filePathA, readFile(filePathA), …)
// 2. pkgB のコードが変更され、再解析
fsetB := token.NewFileSet()
filePathB := "pkgB/b.go"
astB, _ := parser.ParseFile(fsetB, filePathB, readFile(filePathB), …)
// 3. 結果のマージを試みる
//fsetA をマスターとし、astBのfsetBをそこに追加したい
}
コード生成ツールなど動的にソースコー
ドが変更されるツールで変更差分だけ
解析してFileSetをマージしたいパターン
pkgAを解析後にpkgBのコードが変更さ
れたので再解析する例