diff --git a/source/source.go b/source/source.go index 3ee5159f..41c858c5 100644 --- a/source/source.go +++ b/source/source.go @@ -191,8 +191,17 @@ func (s *Searcher) parseDefaultBlock(ifRoot ast.Node, parsedFile *ast.File, line } if stmt, ok := n.(*ast.ForStmt); ok { - parents = append(parents, stmt.Body) pos := s.fileset.Position(stmt.Pos()) + if stmt.Cond == nil { + nextLine := s.fileset.Position(stmt.Body.List[0].Pos()).Line + if line < nextLine { + lines = []int{nextLine} + found = true + parents = nil + return false + } + } + parents = append(parents, stmt.Body) parentBlockBeginLine = pos.Line } diff --git a/source/source_test.go b/source/source_test.go index 68e79f9d..d2059510 100644 --- a/source/source_test.go +++ b/source/source_test.go @@ -30,6 +30,7 @@ func TestNextLines(t *testing.T) { line int nextlines []int }{ + {5, []int{7}}, {8, []int{9, 10, 13}}, {15, []int{17, 19}}, {25, []int{27}}, @@ -50,7 +51,7 @@ func TestNextLines(t *testing.T) { } if len(lines) != len(c.nextlines) { fmt.Println(lines) - t.Fatalf("did not get correct number of lines back expected %d got %d for test case %d", len(c.nextlines), len(lines), i+1) + t.Fatalf("did not get correct number of lines back expected %d got %d for test case %d got %#v", len(c.nextlines), len(lines), i+1, lines) } for j, l := range lines { if l != c.nextlines[j] {