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をそこに追加したい // しかし、直接マージするmethodはない // fsetA.Merge(fsetB) // <--- こういうのが欲しい } しかし、(簡単に)マージする事はできな い。 必然的に複数のFileSetを同時に扱うか 毎回新規にFileSetを構築する必要があ り多数ファイルを扱う場合はメモリ消費 量が尋常ではなくなる。 独立して解析されたソースコードの情報 を後から結合し、単一のコンテキストで 扱いたい場合にはFileSet同士のマージ が要件的に必須。