type fixer … type singleFileFixer … // singleFile adapts a single-file fixer to a Fixer. func singleFile(fixer1 singleFileFixer) fixer { … } const fixExtractVariable … const fixExtractFunction … const fixExtractMethod … const fixInlineCall … const fixInvertIfCondition … const fixSplitLines … const fixJoinLines … const fixMissingInterfaceMethods … const fixMissingCalledFunction … // ApplyFix applies the specified kind of suggested fix to the given // file and range, returning the resulting changes. // // A fix kind is either the Category of an analysis.Diagnostic that // had a SuggestedFix with no edits; or the name of a fix agreed upon // by [CodeActions] and this function. // Fix kinds identify fixes in the command protocol. // // TODO(adonovan): come up with a better mechanism for registering the // connection between analyzers, code actions, and fixers. A flaw of // the current approach is that the same Category could in theory // apply to a Diagnostic with several lazy fixes, making them // impossible to distinguish. It would more precise if there was a // SuggestedFix.Category field, or some other way to squirrel metadata // in the fix. func ApplyFix(ctx context.Context, fix string, snapshot *cache.Snapshot, fh file.Handle, rng protocol.Range) ([]protocol.DocumentChange, error) { … } // suggestedFixToDocumentChange converts the suggestion's edits from analysis form into protocol form. func suggestedFixToDocumentChange(ctx context.Context, snapshot *cache.Snapshot, fset *token.FileSet, suggestion *analysis.SuggestedFix) ([]protocol.DocumentChange, error) { … } // addEmbedImport adds a missing embed "embed" import with blank name. func addEmbedImport(ctx context.Context, snapshot *cache.Snapshot, pkg *cache.Package, pgf *parsego.File, _, _ token.Pos) (*token.FileSet, *analysis.SuggestedFix, error) { … }