Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmd/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ func fix(fixer *keepsorted.Fixer, filenames []string, modifiedLines []keepsorted
if warn.Lines.Start == warn.Lines.End {
log = log.Int("line", warn.Lines.Start)
} else {
log = log.Int("start", warn.Lines.Start).Int("end", warn.Lines.End)
log = log.Ints("[start,end]", []int{warn.Lines.Start, warn.Lines.End})
}
log.Msg(warn.Message)
}
Expand Down
4 changes: 4 additions & 0 deletions goldens/skip_lines.err
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
WRN block start is at or after end, possibly due to skip_lines [6+1,7-0] [start,end]=[6,7]
WRN block start is at or after end, possibly due to skip_lines [10+0,11-1] [start,end]=[10,11]
WRN block start is at or after end, possibly due to skip_lines [23+10,27-0] [start,end]=[23,27]
exit status 1
12 changes: 10 additions & 2 deletions goldens/skip_lines.in
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
Skip lines with an empty block:
Skip no lines with an empty block is ok:
keep-sorted-test start skip_lines=0
keep-sorted-test end

Skip lines at start with an empty block:
keep-sorted-test start skip_lines=1
keep-sorted-test end

Skip lines at end with an empty block:
keep-sorted-test start skip_lines=-1
keep-sorted-test end

Skip two lines:
// keep-sorted-test start skip_lines=2
foo
Expand All @@ -11,7 +19,7 @@ b
a
// keep-sorted-test end

Number of skipped lines is greater than block size, so block is ignored:
Number of skipped lines is greater than block size, so skip_lines causes warning:
// keep-sorted-test start skip_lines=10
z
y
Expand Down
12 changes: 10 additions & 2 deletions goldens/skip_lines.out
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
Skip lines with an empty block:
Skip no lines with an empty block is ok:
keep-sorted-test start skip_lines=0
keep-sorted-test end

Skip lines at start with an empty block:
keep-sorted-test start skip_lines=1
keep-sorted-test end

Skip lines at end with an empty block:
keep-sorted-test start skip_lines=-1
keep-sorted-test end

Skip two lines:
// keep-sorted-test start skip_lines=2
foo
Expand All @@ -11,7 +19,7 @@ b
c
// keep-sorted-test end

Number of skipped lines is greater than block size, so block is ignored:
Number of skipped lines is greater than block size, so skip_lines causes warning:
// keep-sorted-test start skip_lines=10
z
y
Expand Down
5 changes: 5 additions & 0 deletions keepsorted/block.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
package keepsorted

import (
"fmt"
"slices"
"strings"

Expand Down Expand Up @@ -116,6 +117,10 @@ func (f *Fixer) newBlocks(filename string, lines []string, offset int, include f
start.index += opts.startOffset()
endIndex += opts.endOffset()
if start.index >= endIndex {
warnings = append(warnings, finding(filename, start.index-opts.startOffset()+offset, endIndex-opts.endOffset()+offset,
fmt.Sprintf("block start is at or after end, possibly due to skip_lines [%d+%d,%d-%d]",
start.index-opts.startOffset()+offset, opts.startOffset(), endIndex-opts.endOffset()+offset, -opts.endOffset())),
)
continue
}

Expand Down
Loading