| // Copyright 2011 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" |
| ) |
| |
| var filepathFix = fix{ |
| "filepath", |
| filepathFunc, |
| `Adapt code from filepath.[List]SeparatorString to string(filepath.[List]Separator). |
| |
| http://codereview.appspot.com/4527090 |
| `, |
| } |
| |
| func filepathFunc(f *ast.File) (fixed bool) { |
| if !imports(f, "path/filepath") { |
| return |
| } |
| |
| walk(f, func(n interface{}) { |
| e, ok := n.(*ast.Expr) |
| if !ok { |
| return |
| } |
| |
| var ident string |
| switch { |
| case isPkgDot(*e, "filepath", "SeparatorString"): |
| ident = "filepath.Separator" |
| case isPkgDot(*e, "filepath", "ListSeparatorString"): |
| ident = "filepath.ListSeparator" |
| default: |
| return |
| } |
| |
| // string(filepath.[List]Separator) |
| *e = &ast.CallExpr{ |
| Fun: ast.NewIdent("string"), |
| Args: []ast.Expr{ast.NewIdent(ident)}, |
| } |
| |
| fixed = true |
| }) |
| |
| return |
| } |