mirror of
https://github.com/golang/go
synced 2024-11-21 21:24:45 -07:00
gofix: do not convert url in field names
There's some ambiguity in the U{url: url} case as it could be both a map or a struct literal, but given context it's more likely a struct, so U{url: url_} rather than U{url_: url_}. At least that was the case for me. R=golang-dev, rsc, adg CC=golang-dev https://golang.org/cl/4972052
This commit is contained in:
parent
9b011500c0
commit
c5670f1548
@ -46,7 +46,12 @@ func url(f *ast.File) bool {
|
||||
fixed := false
|
||||
|
||||
// Update URL code.
|
||||
var skip interface{}
|
||||
urlWalk := func(n interface{}) {
|
||||
if n == skip {
|
||||
skip = nil
|
||||
return
|
||||
}
|
||||
// Is it an identifier?
|
||||
if ident, ok := n.(*ast.Ident); ok && ident.Name == "url" {
|
||||
ident.Name = "url_"
|
||||
@ -57,6 +62,12 @@ func url(f *ast.File) bool {
|
||||
fixed = urlDoFields(fn.Params) || fixed
|
||||
fixed = urlDoFields(fn.Results) || fixed
|
||||
}
|
||||
// U{url: ...} is likely a struct field.
|
||||
if kv, ok := n.(*ast.KeyValueExpr); ok {
|
||||
if ident, ok := kv.Key.(*ast.Ident); ok && ident.Name == "url" {
|
||||
skip = ident
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fix up URL code and add import, at most once.
|
||||
@ -64,7 +75,7 @@ func url(f *ast.File) bool {
|
||||
if fixed {
|
||||
return
|
||||
}
|
||||
walk(f, urlWalk)
|
||||
walkBeforeAfter(f, urlWalk, nop)
|
||||
addImport(f, "url")
|
||||
fixed = true
|
||||
}
|
||||
|
@ -80,10 +80,15 @@ import (
|
||||
"http"
|
||||
)
|
||||
|
||||
type U struct{ url int }
|
||||
type M map[int]int
|
||||
|
||||
func f() {
|
||||
http.ParseURL(a)
|
||||
var url = 23
|
||||
url, x := 45, y
|
||||
_ = U{url: url}
|
||||
_ = M{url + 1: url}
|
||||
}
|
||||
|
||||
func g(url string) string {
|
||||
@ -98,10 +103,15 @@ func h() (url string) {
|
||||
|
||||
import "url"
|
||||
|
||||
type U struct{ url int }
|
||||
type M map[int]int
|
||||
|
||||
func f() {
|
||||
url.Parse(a)
|
||||
var url_ = 23
|
||||
url_, x := 45, y
|
||||
_ = U{url: url_}
|
||||
_ = M{url_ + 1: url_}
|
||||
}
|
||||
|
||||
func g(url_ string) string {
|
||||
|
Loading…
Reference in New Issue
Block a user