aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZheng Xu <zheng.xu@arm.com>2021-09-01 13:48:48 +0800
committerCherry Mui <cherryyz@google.com>2021-09-10 14:03:35 +0000
commit96ab854ab03f6a21c676c2a7aa9c4ad933892a42 (patch)
tree7a347434ac936a64c36c5223f54f29eb5c70abca
parent90c5660616d7f006ca62adfec49310bf40e3b354 (diff)
downloadgo-96ab854ab03f6a21c676c2a7aa9c4ad933892a42.tar.gz
go-96ab854ab03f6a21c676c2a7aa9c4ad933892a42.zip
cmd/compile/internal: better AST line highlight in ssa.html
We tend to set div class with the line number in HTML AST nodes. So that the AST nodes can be highlighted with corresponding source and ssa ir. The pure AST text dump is created first. And then it is parsed and written to the HTML file. CL 275785 changed the format of the line information in AST node dump, which makes the HTMLWriter fail to parse the line information. This CL updates the code in HTMLWriter to align with the format of AST node dump. Fix #48133 Change-Id: I2b56fc5e3e9771456d91f22caf23a427c235eb12 Reviewed-on: https://go-review.googlesource.com/c/go/+/347269 Reviewed-by: Cherry Mui <cherryyz@google.com> Trust: Than McIntosh <thanm@google.com>
-rw-r--r--src/cmd/compile/internal/ir/fmt.go1
-rw-r--r--src/cmd/compile/internal/ssa/html.go15
2 files changed, 7 insertions, 9 deletions
diff --git a/src/cmd/compile/internal/ir/fmt.go b/src/cmd/compile/internal/ir/fmt.go
index 22fbf39975..a99cb5ed98 100644
--- a/src/cmd/compile/internal/ir/fmt.go
+++ b/src/cmd/compile/internal/ir/fmt.go
@@ -1147,6 +1147,7 @@ func dumpNodeHeader(w io.Writer, n Node) {
}
// TODO(mdempsky): Print line pragma details too.
file := filepath.Base(pos.Filename())
+ // Note: this output will be parsed by ssa/html.go:(*HTMLWriter).WriteAST. Keep in sync.
fmt.Fprintf(w, "%s:%d:%d", file, pos.Line(), pos.Col())
}
}
diff --git a/src/cmd/compile/internal/ssa/html.go b/src/cmd/compile/internal/ssa/html.go
index 6fd898636c..d9a78b3962 100644
--- a/src/cmd/compile/internal/ssa/html.go
+++ b/src/cmd/compile/internal/ssa/html.go
@@ -903,15 +903,12 @@ func (w *HTMLWriter) WriteAST(phase string, buf *bytes.Buffer) {
if strings.HasPrefix(l, "buildssa") {
escaped = fmt.Sprintf("<b>%v</b>", l)
} else {
- // Parse the line number from the format l(123).
- idx := strings.Index(l, " l(")
- if idx != -1 {
- subl := l[idx+3:]
- idxEnd := strings.Index(subl, ")")
- if idxEnd != -1 {
- if _, err := strconv.Atoi(subl[:idxEnd]); err == nil {
- lineNo = subl[:idxEnd]
- }
+ // Parse the line number from the format file:line:col.
+ // See the implementation in ir/fmt.go:dumpNodeHeader.
+ sl := strings.Split(l, ":")
+ if len(sl) >= 3 {
+ if _, err := strconv.Atoi(sl[len(sl)-2]); err == nil {
+ lineNo = sl[len(sl)-2]
}
}
escaped = html.EscapeString(l)