@@ -71,29 +71,31 @@ const HOEDOWN_EXTENSIONS: libc::c_uint =
71
71
enum hoedown_document { }
72
72
73
73
type blockcodefn = extern "C" fn ( * mut hoedown_buffer , * const hoedown_buffer ,
74
- * const hoedown_buffer , * const hoedown_renderer_data ) ;
74
+ * const hoedown_buffer , * const hoedown_renderer_data ,
75
+ libc:: size_t ) ;
75
76
76
77
type blockquotefn = extern "C" fn ( * mut hoedown_buffer , * const hoedown_buffer ,
77
- * const hoedown_renderer_data ) ;
78
+ * const hoedown_renderer_data , libc :: size_t ) ;
78
79
79
80
type headerfn = extern "C" fn ( * mut hoedown_buffer , * const hoedown_buffer ,
80
- libc:: c_int , * const hoedown_renderer_data ) ;
81
+ libc:: c_int , * const hoedown_renderer_data ,
82
+ libc:: size_t ) ;
81
83
82
84
type blockhtmlfn = extern "C" fn ( * mut hoedown_buffer , * const hoedown_buffer ,
83
- * const hoedown_renderer_data ) ;
85
+ * const hoedown_renderer_data , libc :: size_t ) ;
84
86
85
87
type codespanfn = extern "C" fn ( * mut hoedown_buffer , * const hoedown_buffer ,
86
- * const hoedown_renderer_data ) -> libc:: c_int ;
88
+ * const hoedown_renderer_data , libc :: size_t ) -> libc:: c_int ;
87
89
88
90
type linkfn = extern "C" fn ( * mut hoedown_buffer , * const hoedown_buffer ,
89
91
* const hoedown_buffer , * const hoedown_buffer ,
90
- * const hoedown_renderer_data ) -> libc:: c_int ;
92
+ * const hoedown_renderer_data , libc :: size_t ) -> libc:: c_int ;
91
93
92
94
type entityfn = extern "C" fn ( * mut hoedown_buffer , * const hoedown_buffer ,
93
- * const hoedown_renderer_data ) ;
95
+ * const hoedown_renderer_data , libc :: size_t ) ;
94
96
95
97
type normaltextfn = extern "C" fn ( * mut hoedown_buffer , * const hoedown_buffer ,
96
- * const hoedown_renderer_data ) ;
98
+ * const hoedown_renderer_data , libc :: size_t ) ;
97
99
98
100
#[ repr( C ) ]
99
101
struct hoedown_renderer_data {
@@ -147,7 +149,8 @@ struct html_toc_data {
147
149
148
150
struct MyOpaque {
149
151
dfltblk : extern "C" fn ( * mut hoedown_buffer , * const hoedown_buffer ,
150
- * const hoedown_buffer , * const hoedown_renderer_data ) ,
152
+ * const hoedown_buffer , * const hoedown_renderer_data ,
153
+ libc:: size_t ) ,
151
154
toc_builder : Option < TocBuilder > ,
152
155
}
153
156
@@ -229,7 +232,8 @@ pub fn render(w: &mut fmt::Formatter,
229
232
print_toc : bool ,
230
233
html_flags : libc:: c_uint ) -> fmt:: Result {
231
234
extern fn block ( ob : * mut hoedown_buffer , orig_text : * const hoedown_buffer ,
232
- lang : * const hoedown_buffer , data : * const hoedown_renderer_data ) {
235
+ lang : * const hoedown_buffer , data : * const hoedown_renderer_data ,
236
+ line : libc:: size_t ) {
233
237
unsafe {
234
238
if orig_text. is_null ( ) { return }
235
239
@@ -246,7 +250,8 @@ pub fn render(w: &mut fmt::Formatter,
246
250
let rlang = str:: from_utf8 ( rlang) . unwrap ( ) ;
247
251
if !LangString :: parse ( rlang) . rust {
248
252
( my_opaque. dfltblk ) ( ob, orig_text, lang,
249
- opaque as * const hoedown_renderer_data ) ;
253
+ opaque as * const hoedown_renderer_data ,
254
+ line) ;
250
255
true
251
256
} else {
252
257
false
@@ -312,7 +317,8 @@ pub fn render(w: &mut fmt::Formatter,
312
317
}
313
318
314
319
extern fn header ( ob : * mut hoedown_buffer , text : * const hoedown_buffer ,
315
- level : libc:: c_int , data : * const hoedown_renderer_data ) {
320
+ level : libc:: c_int , data : * const hoedown_renderer_data ,
321
+ _: libc:: size_t ) {
316
322
// hoedown does this, we may as well too
317
323
unsafe { hoedown_buffer_puts ( ob, "\n \0 " . as_ptr ( ) as * const _ ) ; }
318
324
@@ -373,6 +379,7 @@ pub fn render(w: &mut fmt::Formatter,
373
379
ob : * mut hoedown_buffer ,
374
380
text : * const hoedown_buffer ,
375
381
_: * const hoedown_renderer_data ,
382
+ _: libc:: size_t
376
383
) -> libc:: c_int {
377
384
let content = if text. is_null ( ) {
378
385
"" . to_owned ( )
@@ -422,11 +429,12 @@ pub fn render(w: &mut fmt::Formatter,
422
429
}
423
430
}
424
431
425
- pub fn find_testable_code ( doc : & str , tests : & mut :: test:: Collector ) {
432
+ pub fn find_testable_code ( doc : & str , tests : & mut :: test:: Collector , start_line : usize ) {
426
433
extern fn block ( _ob : * mut hoedown_buffer ,
427
434
text : * const hoedown_buffer ,
428
435
lang : * const hoedown_buffer ,
429
- data : * const hoedown_renderer_data ) {
436
+ data : * const hoedown_renderer_data ,
437
+ line : libc:: size_t ) {
430
438
unsafe {
431
439
if text. is_null ( ) { return }
432
440
let block_info = if lang. is_null ( ) {
@@ -445,16 +453,19 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) {
445
453
stripped_filtered_line ( l) . unwrap_or ( l)
446
454
} ) ;
447
455
let text = lines. collect :: < Vec < & str > > ( ) . join ( "\n " ) ;
456
+ let line = tests. get_line ( ) + line;
448
457
tests. add_test ( text. to_owned ( ) ,
449
458
block_info. should_panic , block_info. no_run ,
450
459
block_info. ignore , block_info. test_harness ,
451
- block_info. compile_fail , block_info. error_codes ) ;
460
+ block_info. compile_fail , block_info. error_codes ,
461
+ line) ;
452
462
}
453
463
}
454
464
455
465
extern fn header ( _ob : * mut hoedown_buffer ,
456
466
text : * const hoedown_buffer ,
457
- level : libc:: c_int , data : * const hoedown_renderer_data ) {
467
+ level : libc:: c_int , data : * const hoedown_renderer_data ,
468
+ _: libc:: size_t ) {
458
469
unsafe {
459
470
let opaque = ( * data) . opaque as * mut hoedown_html_renderer_state ;
460
471
let tests = & mut * ( ( * opaque) . opaque as * mut :: test:: Collector ) ;
@@ -468,6 +479,7 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) {
468
479
}
469
480
}
470
481
482
+ tests. set_line ( start_line) ;
471
483
unsafe {
472
484
let ob = hoedown_buffer_new ( DEF_OUNIT ) ;
473
485
let renderer = hoedown_html_renderer_new ( 0 , 0 ) ;
@@ -488,6 +500,7 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) {
488
500
489
501
#[ derive( Eq , PartialEq , Clone , Debug ) ]
490
502
struct LangString {
503
+ original : String ,
491
504
should_panic : bool ,
492
505
no_run : bool ,
493
506
ignore : bool ,
@@ -500,6 +513,7 @@ struct LangString {
500
513
impl LangString {
501
514
fn all_false ( ) -> LangString {
502
515
LangString {
516
+ original : String :: new ( ) ,
503
517
should_panic : false ,
504
518
no_run : false ,
505
519
ignore : false ,
@@ -521,6 +535,7 @@ impl LangString {
521
535
allow_error_code_check = true ;
522
536
}
523
537
538
+ data. original = string. to_owned ( ) ;
524
539
let tokens = string. split ( |c : char |
525
540
!( c == '_' || c == '-' || c. is_alphanumeric ( ) )
526
541
) ;
@@ -586,7 +601,8 @@ pub fn plain_summary_line(md: &str) -> String {
586
601
_link : * const hoedown_buffer ,
587
602
_title : * const hoedown_buffer ,
588
603
content : * const hoedown_buffer ,
589
- data : * const hoedown_renderer_data ) -> libc:: c_int
604
+ data : * const hoedown_renderer_data ,
605
+ _: libc:: size_t ) -> libc:: c_int
590
606
{
591
607
unsafe {
592
608
if !content. is_null ( ) && ( * content) . size > 0 {
@@ -599,8 +615,9 @@ pub fn plain_summary_line(md: &str) -> String {
599
615
}
600
616
601
617
extern fn normal_text ( _ob : * mut hoedown_buffer ,
602
- text : * const hoedown_buffer ,
603
- data : * const hoedown_renderer_data )
618
+ text : * const hoedown_buffer ,
619
+ data : * const hoedown_renderer_data ,
620
+ _: libc:: size_t )
604
621
{
605
622
unsafe {
606
623
let ob = ( * data) . opaque as * mut hoedown_buffer ;
@@ -647,6 +664,7 @@ mod tests {
647
664
test_harness: test_harness,
648
665
compile_fail: compile_fail,
649
666
error_codes: error_codes,
667
+ original: s. to_owned( ) ,
650
668
} )
651
669
}
652
670
0 commit comments