Skip to content

Commit 5f7c1de

Browse files
fix: skip only spaces at line start in Verso docstrings (#14191)
This PR fixes an issue where escaped content at the start of a line in a valid block-opening positon in Verso content was skipped as if it were whitespace.
1 parent 9d518d9 commit 5f7c1de

12 files changed

Lines changed: 75 additions & 3 deletions

src/Lean/DocString/Parser.lean

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,6 @@ partial def takeUntilEscFn (p : Char → Bool) : ParserFn := fun c s =>
100100
else if p (c.get' i h) then s
101101
else takeUntilEscFn p c (s.next' c i h)
102102

103-
partial def takeWhileEscFn (p : Char → Bool) : ParserFn := takeUntilEscFn (not ∘ p)
104-
105103
/--
106104
Parses as `p`, but discards the result.
107105
-/
@@ -382,7 +380,7 @@ Parses block opener prefixes. At the beginning of the line, if this parser succe
382380
block is beginning.
383381
-/
384382
public def blockOpener := atomicFn <|
385-
takeWhileEscFn (· == ' ') >>
383+
eatSpaces >>
386384
(atomicFn ((bullet >> chFn ' ')) <|> -- Unordered list
387385
atomicFn ((numbering >> chFn ' ')) <|> -- Ordered list
388386
atomicFn (strFn ": ") <|> -- Description list item
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
\[> x
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Failure @0 (⟨1, 0⟩): '>'; expected '%%%' or ': '
2+
Final stack:
3+
empty
4+
Remaining: "\\[> x"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
\*> x
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Failure @0 (⟨1, 0⟩): '>'; expected '%%%' or ': '
2+
Final stack:
3+
empty
4+
Remaining: "\\*> x"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
\[> x
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Failure @0 (⟨1, 0⟩): '>'; expected '%%%' or ': '
2+
Final stack:
3+
empty
4+
Remaining: " \\[> x"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
> x
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Success! Final stack:
2+
empty
3+
Remaining:
4+
" x"

tests/docparse/blocks_0055.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
\[> x

0 commit comments

Comments
 (0)