Skip to content

Commit 27712c0

Browse files
EmileTrotignonjonludlam
authored andcommitted
Remove double warnings
1 parent 9681e65 commit 27712c0

File tree

2 files changed

+23
-18
lines changed

2 files changed

+23
-18
lines changed

src/lexer.mll

+11-13
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ rule reference_paren_content input start depth_paren depth_curly buffer = parse
283283
| '('
284284
{
285285
buffer_add_lexeme buffer lexbuf ;
286-
reference_paren_content input start (depth_paren + 1) depth_curly buffer
286+
reference_paren_content input start (depth_paren + 1) depth_curly buffer
287287
lexbuf }
288288
| '{'
289289
{
@@ -293,33 +293,28 @@ rule reference_paren_content input start depth_paren depth_curly buffer = parse
293293
| ')'
294294
{
295295
buffer_add_lexeme buffer lexbuf ;
296-
if depth_paren = 0 then ()
296+
if depth_paren = 0 then false
297297
else
298298
( reference_paren_content input start (depth_paren - 1) depth_curly
299299
buffer lexbuf ) }
300300
| '}'
301301
{
302302
buffer_add_lexeme buffer lexbuf ;
303-
if depth_curly = 0 then
303+
if depth_curly = 0 then (
304304
warning
305305
input
306306
~start_offset:(Lexing.lexeme_end lexbuf)
307307
(Parse_error.not_allowed
308308
~what:"'}' (end of reference)"
309309
~in_what:(
310310
Printf.sprintf "'%s' (custom operator)"
311-
(Buffer.sub buffer 0 ((Buffer.length buffer) - 1))))
311+
(Buffer.sub buffer 0 ((Buffer.length buffer) - 1)))) ;
312+
true )
312313
else
313314
( reference_paren_content input start depth_paren (depth_curly - 1)
314315
buffer lexbuf ) }
315316
| eof
316-
{ warning
317-
input
318-
~start_offset:(Lexing.lexeme_end lexbuf)
319-
(Parse_error.not_allowed
320-
~what:(Token.describe `End)
321-
~in_what:(Token.describe (reference_token start "")))
322-
}
317+
{ false }
323318
| _
324319
{
325320
buffer_add_lexeme buffer lexbuf ;
@@ -333,8 +328,11 @@ and reference_content input start buffer = parse
333328
| '('
334329
{
335330
buffer_add_lexeme buffer lexbuf ;
336-
((reference_paren_content input start 0 0 buffer lexbuf)) ;
337-
reference_content input start buffer lexbuf
331+
let ref_closed = reference_paren_content input start 0 0 buffer lexbuf in
332+
if ref_closed then
333+
Buffer.contents buffer
334+
else
335+
reference_content input start buffer lexbuf
338336
}
339337
| '"' [^ '"']* '"'
340338
{

test/test.ml

+12-5
Original file line numberDiff line numberDiff line change
@@ -1699,7 +1699,6 @@ let%expect_test _ =
16991699
(paragraph
17001700
(((f.ml (1 0) (1 9)) (simple ((f.ml (1 2) (1 9)) "(.*{})") ())))))))
17011701
(warnings ())) |}]
1702-
17031702
let quotes_with_dash =
17041703
test "{!\"my-name\"}";
17051704
[%expect
@@ -1720,7 +1719,7 @@ let%expect_test _ =
17201719
(((f.ml (1 0) (1 6)) (simple ((f.ml (1 2) (1 6)) "\"}\"") ())))))))
17211720
(warnings ())) |}]
17221721

1723-
let quotes_with_curly_braces =
1722+
let operator_unbalanced =
17241723
test "{!(.*()}";
17251724
[%expect
17261725
{|
@@ -1730,9 +1729,17 @@ let%expect_test _ =
17301729
(((f.ml (1 0) (1 8)) (simple ((f.ml (1 2) (1 8)) "(.*()}") ())))))))
17311730
(warnings
17321731
( "File \"f.ml\", line 1, characters 8-8:\
1733-
\n'}' (end of reference) is not allowed in '(.*()' (custom operator)."
1734-
"File \"f.ml\", line 1, characters 8-8:\
1735-
\nEnd of text is not allowed in '{!...}' (cross-reference)."))) |}]
1732+
\n'}' (end of reference) is not allowed in '(.*()' (custom operator)."))) |}]
1733+
let operator_eof =
1734+
test "{!(.*()" ;
1735+
[%expect {|
1736+
((output
1737+
(((f.ml (1 0) (1 7))
1738+
(paragraph
1739+
(((f.ml (1 0) (1 7)) (simple ((f.ml (1 2) (1 7)) "(.*()") ())))))))
1740+
(warnings
1741+
( "File \"f.ml\", line 1, characters 7-7:\
1742+
\nEnd of text is not allowed in '{!...}' (cross-reference)."))) |}]
17361743
end in
17371744
()
17381745

0 commit comments

Comments
 (0)