| // 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" |
| "strings" |
| ) |
| |
| var signalFix = fix{ |
| "signal", |
| signal, |
| `Adapt code to types moved from os/signal to signal. |
| |
| http://codereview.appspot.com/4437091 |
| `, |
| } |
| |
| func signal(f *ast.File) (fixed bool) { |
| if !imports(f, "os/signal") { |
| return |
| } |
| |
| walk(f, func(n interface{}) { |
| s, ok := n.(*ast.SelectorExpr) |
| |
| if !ok || !isTopName(s.X, "signal") { |
| return |
| } |
| |
| sel := s.Sel.String() |
| if sel == "Signal" || sel == "UnixSignal" || strings.HasPrefix(sel, "SIG") { |
| s.X = &ast.Ident{Name: "os"} |
| fixed = true |
| } |
| }) |
| |
| if fixed { |
| addImport(f, "os") |
| if !usesImport(f, "os/signal") { |
| deleteImport(f, "os/signal") |
| } |
| } |
| return |
| } |