diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2026-01-27 08:57:52 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2026-01-27 10:21:28 +0000 |
| commit | 71ad32b1e95a1c1dfca8e6ca4a530b77afcc4974 (patch) | |
| tree | 20e883dba3741a1a9016c74e2547abf2ecc849bf /pkg/aflow/tool/codeeditor/codeeditor.go | |
| parent | 65e102377f285f4cdf3f95214e06843a2052e9ae (diff) | |
pkg/aflow/flow/patching: harden against empty generated patches
Make codeeditor error on nop changes that don't actually change the code.
Make patch testing error on empty patch.
Perhaps we need a notion of "mandatory" tools that must be called
successfully at least once... not sure yet.
Diffstat (limited to 'pkg/aflow/tool/codeeditor/codeeditor.go')
| -rw-r--r-- | pkg/aflow/tool/codeeditor/codeeditor.go | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/pkg/aflow/tool/codeeditor/codeeditor.go b/pkg/aflow/tool/codeeditor/codeeditor.go index 750dba5d8..4ee3fe0d2 100644 --- a/pkg/aflow/tool/codeeditor/codeeditor.go +++ b/pkg/aflow/tool/codeeditor/codeeditor.go @@ -79,7 +79,11 @@ func codeeditor(ctx *aflow.Context, state state, args args) (struct{}, error) { return struct{}{}, aflow.BadCallError("CurrentCode snippet matched %v places,"+ " increase context in CurrentCode to avoid ambiguity", matches) } - err = osutil.WriteFile(file, slices.Concat(newLines...)) + newFileData := slices.Concat(newLines...) + if bytes.Equal(fileData, newFileData) { + return struct{}{}, aflow.BadCallError("The edit does not change the code.") + } + err = osutil.WriteFile(file, newFileData) return struct{}{}, err } @@ -97,7 +101,7 @@ func replace(lines, src, dst [][]byte, fuzzy bool) (newLines [][]byte, matches i si++ continue } - if len(l) == 0 { + if len(l) == 0 && li != i { li++ continue } |
