// Copyright 2012 The Go Authors. All rights reserved.
|
// Use of this source code is governed by a BSD-style
|
// license that can be found in the LICENSE file.
|
|
package main
|
|
import "go/ast"
|
|
func init() {
|
register(printerconfigFix)
|
}
|
|
var printerconfigFix = fix{
|
name: "printerconfig",
|
date: "2012-12-11",
|
f: printerconfig,
|
desc: `Add element keys to Config composite literals.`,
|
}
|
|
func printerconfig(f *ast.File) bool {
|
if !imports(f, "go/printer") {
|
return false
|
}
|
|
fixed := false
|
walk(f, func(n interface{}) {
|
cl, ok := n.(*ast.CompositeLit)
|
if !ok {
|
return
|
}
|
se, ok := cl.Type.(*ast.SelectorExpr)
|
if !ok {
|
return
|
}
|
if !isTopName(se.X, "printer") || se.Sel == nil {
|
return
|
}
|
|
if ss := se.Sel.String(); ss == "Config" {
|
for i, e := range cl.Elts {
|
if _, ok := e.(*ast.KeyValueExpr); ok {
|
break
|
}
|
switch i {
|
case 0:
|
cl.Elts[i] = &ast.KeyValueExpr{
|
Key: ast.NewIdent("Mode"),
|
Value: e,
|
}
|
case 1:
|
cl.Elts[i] = &ast.KeyValueExpr{
|
Key: ast.NewIdent("Tabwidth"),
|
Value: e,
|
}
|
}
|
fixed = true
|
}
|
}
|
})
|
return fixed
|
}
|