@@ -280,7 +280,11 @@ impl<'sink, Handle: Clone, Sink: TreeSink<Handle>>
280
280
self . unexpected( & tag) ;
281
281
if !self . frameset_ok { return Done ; }
282
282
283
- let body = unwrap_or_return!( self . body_elem( ) , Done ) ;
283
+ // Can't use unwrap_or_return!() due to rust-lang/rust#16617.
284
+ let body = match self . body_elem( ) {
285
+ None => return Done ,
286
+ Some ( x) => x,
287
+ } ;
284
288
self . sink. remove_from_parent( body) ;
285
289
286
290
// FIXME: can we get here in the fragment case?
@@ -428,10 +432,14 @@ impl<'sink, Handle: Clone, Sink: TreeSink<Handle>>
428
432
429
433
</form> => {
430
434
// FIXME: <template>
431
- let node = unwrap_or_return!( self . form_elem. take( ) , {
432
- self . sink. parse_error( Slice ( "Null form element pointer on </form>" ) ) ;
433
- Done
434
- } ) ;
435
+ // Can't use unwrap_or_return!() due to rust-lang/rust#16617.
436
+ let node = match self . form_elem. take( ) {
437
+ None => {
438
+ self . sink. parse_error( Slice ( "Null form element pointer on </form>" ) ) ;
439
+ return Done ;
440
+ }
441
+ Some ( x) => x,
442
+ } ;
435
443
if !self . in_scope( default_scope,
436
444
|n| self . sink. same_node( node. clone( ) , n) ) {
437
445
self . sink. parse_error( Slice ( "Form element not in scope on </form>" ) ) ;
@@ -464,10 +472,7 @@ impl<'sink, Handle: Clone, Sink: TreeSink<Handle>>
464
472
self . generate_implied_end_except( tag. name. clone( ) ) ;
465
473
self . expect_to_close( tag. name) ;
466
474
} else {
467
- self . sink. parse_error( format_if!(
468
- self . opts. exact_errors,
469
- "No tag to close" ,
470
- "No {} tag to close" , tag. name) ) ;
475
+ self . sink. parse_error( Slice ( "No matching tag to close" ) ) ;
471
476
}
472
477
Done
473
478
}
@@ -703,12 +708,16 @@ impl<'sink, Handle: Clone, Sink: TreeSink<Handle>>
703
708
}
704
709
}
705
710
706
- let match_idx = unwrap_or_return!( match_idx, {
707
- // I believe this is impossible, because the root
708
- // <html> element is in special_tag.
709
- self . unexpected( & tag) ;
710
- Done
711
- } ) ;
711
+ // Can't use unwrap_or_return!() due to rust-lang/rust#16617.
712
+ let match_idx = match match_idx {
713
+ None => {
714
+ // I believe this is impossible, because the root
715
+ // <html> element is in special_tag.
716
+ self . unexpected( & tag) ;
717
+ return Done ;
718
+ }
719
+ Some ( x) => x,
720
+ } ;
712
721
713
722
self . generate_implied_end_except( tag. name. clone( ) ) ;
714
723
@@ -1012,7 +1021,7 @@ impl<'sink, Handle: Clone, Sink: TreeSink<Handle>>
1012
1021
if self . in_scope_named( table_scope, atom!( tr) ) {
1013
1022
self . pop_until_current( table_row_context) ;
1014
1023
let node = self . pop( ) ;
1015
- assert! ( self . html_elem_named ( node, atom!( tr) ) ) ;
1024
+ self . assert_named ( node, atom!( tr) ) ;
1016
1025
self . mode = InTableBody ;
1017
1026
} else {
1018
1027
self . unexpected( & token) ;
@@ -1024,7 +1033,7 @@ impl<'sink, Handle: Clone, Sink: TreeSink<Handle>>
1024
1033
if self . in_scope_named( table_scope, atom!( tr) ) {
1025
1034
self . pop_until_current( table_row_context) ;
1026
1035
let node = self . pop( ) ;
1027
- assert! ( self . html_elem_named ( node, atom!( tr) ) ) ;
1036
+ self . assert_named ( node, atom!( tr) ) ;
1028
1037
Reprocess ( InTableBody , token)
1029
1038
} else {
1030
1039
self . unexpected( & token)
@@ -1036,7 +1045,7 @@ impl<'sink, Handle: Clone, Sink: TreeSink<Handle>>
1036
1045
if self . in_scope_named( table_scope, atom!( tr) ) {
1037
1046
self . pop_until_current( table_row_context) ;
1038
1047
let node = self . pop( ) ;
1039
- assert! ( self . html_elem_named ( node, atom!( tr) ) ) ;
1048
+ self . assert_named ( node, atom!( tr) ) ;
1040
1049
Reprocess ( InTableBody , TagToken ( tag) )
1041
1050
} else {
1042
1051
Done
0 commit comments