cmd/eg: don't do rewrites within the template file itself
Change-Id: I5b408ce894553ea2ffb099f459797edae617ac8a
Reviewed-on: https://go-review.googlesource.com/c/tools/+/258305
Trust: Josh Bleecher Snyder <josharian@gmail.com>
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
diff --git a/cmd/eg/eg.go b/cmd/eg/eg.go
index c178a48..6463ac4 100644
--- a/cmd/eg/eg.go
+++ b/cmd/eg/eg.go
@@ -17,6 +17,7 @@
"go/types"
"io/ioutil"
"os"
+ "path/filepath"
"strings"
exec "golang.org/x/sys/execabs"
@@ -71,7 +72,11 @@
return fmt.Errorf("no -t template.go file specified")
}
- template, err := ioutil.ReadFile(*templateFlag)
+ tAbs, err := filepath.Abs(*templateFlag)
+ if err != nil {
+ return err
+ }
+ template, err := ioutil.ReadFile(tAbs)
if err != nil {
return err
}
@@ -87,7 +92,7 @@
return err
}
- tFile, err := parser.ParseFile(cfg.Fset, *templateFlag, template, parser.ParseComments)
+ tFile, err := parser.ParseFile(cfg.Fset, tAbs, template, parser.ParseComments)
if err != nil {
return err
}
@@ -125,6 +130,10 @@
var hadErrors bool
for _, pkg := range pkgs {
for i, filename := range pkg.CompiledGoFiles {
+ if filename == tAbs {
+ // Don't rewrite the template file.
+ continue
+ }
file := pkg.Syntax[i]
n := xform.Transform(pkg.TypesInfo, pkg.Types, file)
if n == 0 {