29 lines
459 B
Go
29 lines
459 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"go/ast"
|
||
|
"go/token"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
_packageCache = make(map[string]*pkgC)
|
||
|
)
|
||
|
|
||
|
type pkgC struct {
|
||
|
files []*ast.File
|
||
|
fset *token.FileSet
|
||
|
}
|
||
|
|
||
|
func packageCache(dir string) (files []*ast.File, fset *token.FileSet, ok bool) {
|
||
|
c, ok := _packageCache[dir]
|
||
|
if ok {
|
||
|
files = c.files
|
||
|
fset = c.fset
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func setPackageCache(dir string, fset *token.FileSet, files []*ast.File) {
|
||
|
_packageCache[dir] = &pkgC{fset: fset, files: files}
|
||
|
}
|