// 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" ) func init() { register(imagecolorFix) } var imagecolorFix = fix{ "imagecolor", "2011-10-04", imagecolor, `Adapt code to types moved from image to color. http://codereview.appspot.com/5132048 `, } var colorRenames = []struct{ in, out string }{ {"Color", "Color"}, {"ColorModel", "Model"}, {"ColorModelFunc", "ModelFunc"}, {"PalettedColorModel", "Palette"}, {"RGBAColor", "RGBA"}, {"RGBA64Color", "RGBA64"}, {"NRGBAColor", "NRGBA"}, {"NRGBA64Color", "NRGBA64"}, {"AlphaColor", "Alpha"}, {"Alpha16Color", "Alpha16"}, {"GrayColor", "Gray"}, {"Gray16Color", "Gray16"}, {"RGBAColorModel", "RGBAModel"}, {"RGBA64ColorModel", "RGBA64Model"}, {"NRGBAColorModel", "NRGBAModel"}, {"NRGBA64ColorModel", "NRGBA64Model"}, {"AlphaColorModel", "AlphaModel"}, {"Alpha16ColorModel", "Alpha16Model"}, {"GrayColorModel", "GrayModel"}, {"Gray16ColorModel", "Gray16Model"}, } func imagecolor(f *ast.File) (fixed bool) { if !imports(f, "image") { return } walk(f, func(n interface{}) { s, ok := n.(*ast.SelectorExpr) if !ok || !isTopName(s.X, "image") { return } switch sel := s.Sel.String(); { case sel == "ColorImage": s.Sel = &ast.Ident{Name: "Uniform"} fixed = true case sel == "NewColorImage": s.Sel = &ast.Ident{Name: "NewUniform"} fixed = true default: for _, rename := range colorRenames { if sel == rename.in { addImport(f, "image/color") s.X.(*ast.Ident).Name = "color" s.Sel.Name = rename.out fixed = true } } } }) if fixed && !usesImport(f, "image") { deleteImport(f, "image") } return }