@@ -71,29 +71,31 @@ const HOEDOWN_EXTENSIONS: libc::c_uint =
7171enum hoedown_document { }
7272
7373type 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 ) ;
7576
7677type blockquotefn = extern "C" fn ( * mut hoedown_buffer , * const hoedown_buffer ,
77- * const hoedown_renderer_data ) ;
78+ * const hoedown_renderer_data , libc :: size_t ) ;
7879
7980type 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 ) ;
8183
8284type blockhtmlfn = extern "C" fn ( * mut hoedown_buffer , * const hoedown_buffer ,
83- * const hoedown_renderer_data ) ;
85+ * const hoedown_renderer_data , libc :: size_t ) ;
8486
8587type 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 ;
8789
8890type linkfn = extern "C" fn ( * mut hoedown_buffer , * const hoedown_buffer ,
8991 * 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 ;
9193
9294type entityfn = extern "C" fn ( * mut hoedown_buffer , * const hoedown_buffer ,
93- * const hoedown_renderer_data ) ;
95+ * const hoedown_renderer_data , libc :: size_t ) ;
9496
9597type normaltextfn = extern "C" fn ( * mut hoedown_buffer , * const hoedown_buffer ,
96- * const hoedown_renderer_data ) ;
98+ * const hoedown_renderer_data , libc :: size_t ) ;
9799
98100#[ repr( C ) ]
99101struct hoedown_renderer_data {
@@ -147,7 +149,8 @@ struct html_toc_data {
147149
148150struct MyOpaque {
149151 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 ) ,
151154 toc_builder : Option < TocBuilder > ,
152155}
153156
@@ -229,7 +232,8 @@ pub fn render(w: &mut fmt::Formatter,
229232 print_toc : bool ,
230233 html_flags : libc:: c_uint ) -> fmt:: Result {
231234 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 ) {
233237 unsafe {
234238 if orig_text. is_null ( ) { return }
235239
@@ -246,7 +250,8 @@ pub fn render(w: &mut fmt::Formatter,
246250 let rlang = str:: from_utf8 ( rlang) . unwrap ( ) ;
247251 if !LangString :: parse ( rlang) . rust {
248252 ( my_opaque. dfltblk ) ( ob, orig_text, lang,
249- opaque as * const hoedown_renderer_data ) ;
253+ opaque as * const hoedown_renderer_data ,
254+ line) ;
250255 true
251256 } else {
252257 false
@@ -312,7 +317,8 @@ pub fn render(w: &mut fmt::Formatter,
312317 }
313318
314319 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 ) {
316322 // hoedown does this, we may as well too
317323 unsafe { hoedown_buffer_puts ( ob, "\n \0 " . as_ptr ( ) as * const _ ) ; }
318324
@@ -373,6 +379,7 @@ pub fn render(w: &mut fmt::Formatter,
373379 ob : * mut hoedown_buffer ,
374380 text : * const hoedown_buffer ,
375381 _: * const hoedown_renderer_data ,
382+ _: libc:: size_t
376383 ) -> libc:: c_int {
377384 let content = if text. is_null ( ) {
378385 "" . to_owned ( )
@@ -422,11 +429,12 @@ pub fn render(w: &mut fmt::Formatter,
422429 }
423430}
424431
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 ) {
426433 extern fn block ( _ob : * mut hoedown_buffer ,
427434 text : * const hoedown_buffer ,
428435 lang : * const hoedown_buffer ,
429- data : * const hoedown_renderer_data ) {
436+ data : * const hoedown_renderer_data ,
437+ line : libc:: size_t ) {
430438 unsafe {
431439 if text. is_null ( ) { return }
432440 let block_info = if lang. is_null ( ) {
@@ -445,16 +453,19 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) {
445453 stripped_filtered_line ( l) . unwrap_or ( l)
446454 } ) ;
447455 let text = lines. collect :: < Vec < & str > > ( ) . join ( "\n " ) ;
456+ let line = tests. get_line ( ) + line;
448457 tests. add_test ( text. to_owned ( ) ,
449458 block_info. should_panic , block_info. no_run ,
450459 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) ;
452462 }
453463 }
454464
455465 extern fn header ( _ob : * mut hoedown_buffer ,
456466 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 ) {
458469 unsafe {
459470 let opaque = ( * data) . opaque as * mut hoedown_html_renderer_state ;
460471 let tests = & mut * ( ( * opaque) . opaque as * mut :: test:: Collector ) ;
@@ -468,6 +479,7 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) {
468479 }
469480 }
470481
482+ tests. set_line ( start_line) ;
471483 unsafe {
472484 let ob = hoedown_buffer_new ( DEF_OUNIT ) ;
473485 let renderer = hoedown_html_renderer_new ( 0 , 0 ) ;
@@ -488,6 +500,7 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) {
488500
489501#[ derive( Eq , PartialEq , Clone , Debug ) ]
490502struct LangString {
503+ original : String ,
491504 should_panic : bool ,
492505 no_run : bool ,
493506 ignore : bool ,
@@ -500,6 +513,7 @@ struct LangString {
500513impl LangString {
501514 fn all_false ( ) -> LangString {
502515 LangString {
516+ original : String :: new ( ) ,
503517 should_panic : false ,
504518 no_run : false ,
505519 ignore : false ,
@@ -521,6 +535,7 @@ impl LangString {
521535 allow_error_code_check = true ;
522536 }
523537
538+ data. original = string. to_owned ( ) ;
524539 let tokens = string. split ( |c : char |
525540 !( c == '_' || c == '-' || c. is_alphanumeric ( ) )
526541 ) ;
@@ -586,7 +601,8 @@ pub fn plain_summary_line(md: &str) -> String {
586601 _link : * const hoedown_buffer ,
587602 _title : * const hoedown_buffer ,
588603 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
590606 {
591607 unsafe {
592608 if !content. is_null ( ) && ( * content) . size > 0 {
@@ -599,8 +615,9 @@ pub fn plain_summary_line(md: &str) -> String {
599615 }
600616
601617 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 )
604621 {
605622 unsafe {
606623 let ob = ( * data) . opaque as * mut hoedown_buffer ;
@@ -647,6 +664,7 @@ mod tests {
647664 test_harness: test_harness,
648665 compile_fail: compile_fail,
649666 error_codes: error_codes,
667+ original: s. to_owned( ) ,
650668 } )
651669 }
652670
0 commit comments