mirror of
https://github.com/golang/go
synced 2024-11-20 07:04:40 -07:00
gofmt: rewriter matches apply to expressions only
Fixes #1384. R=rsc CC=golang-dev https://golang.org/cl/3912041
This commit is contained in:
parent
ee58cc799e
commit
9d634e50c7
@ -111,15 +111,18 @@ func match(m map[string]reflect.Value, pattern, val reflect.Value) bool {
|
|||||||
if m != nil && pattern.Type() == identType {
|
if m != nil && pattern.Type() == identType {
|
||||||
name := pattern.Interface().(*ast.Ident).Name
|
name := pattern.Interface().(*ast.Ident).Name
|
||||||
if isWildcard(name) {
|
if isWildcard(name) {
|
||||||
if old, ok := m[name]; ok {
|
// wildcards only match expressions
|
||||||
return match(nil, old, val)
|
if _, ok := val.Interface().(ast.Expr); ok {
|
||||||
|
if old, ok := m[name]; ok {
|
||||||
|
return match(nil, old, val)
|
||||||
|
}
|
||||||
|
m[name] = val
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
m[name] = val
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise, the expressions must match recursively.
|
// Otherwise, pattern and val must match recursively.
|
||||||
if pattern == nil || val == nil {
|
if pattern == nil || val == nil {
|
||||||
return pattern == nil && val == nil
|
return pattern == nil && val == nil
|
||||||
}
|
}
|
||||||
@ -204,7 +207,7 @@ func subst(m map[string]reflect.Value, pattern reflect.Value, pos reflect.Value)
|
|||||||
|
|
||||||
if pos != nil && pattern.Type() == positionType {
|
if pos != nil && pattern.Type() == positionType {
|
||||||
// use new position only if old position was valid in the first place
|
// use new position only if old position was valid in the first place
|
||||||
if old := pattern.Interface().(token.Position); !old.IsValid() {
|
if old := pattern.Interface().(token.Pos); !old.IsValid() {
|
||||||
return pattern
|
return pattern
|
||||||
}
|
}
|
||||||
return pos
|
return pos
|
||||||
|
Loading…
Reference in New Issue
Block a user