@@ -341,16 +341,8 @@ pub fn find_stability(
341
341
for attr in attrs {
342
342
match attr. name_or_empty ( ) {
343
343
sym:: rustc_allowed_through_unstable_modules => allowed_through_unstable_modules = true ,
344
- sym:: unstable => {
345
- if try_add_unstability ( sess, attr, & mut level, & mut stab_spans) . is_err ( ) {
346
- break ;
347
- }
348
- }
349
- sym:: stable => {
350
- if try_add_stability ( sess, attr, & mut level, & mut stab_spans) . is_err ( ) {
351
- break ;
352
- }
353
- }
344
+ sym:: unstable => try_add_unstability ( sess, attr, & mut level, & mut stab_spans) ,
345
+ sym:: stable => try_add_stability ( sess, attr, & mut level, & mut stab_spans) ,
354
346
_ => { }
355
347
}
356
348
}
@@ -391,15 +383,9 @@ pub fn find_const_stability(
391
383
sym:: rustc_promotable => promotable = true ,
392
384
sym:: rustc_const_stable_indirect => const_stable_indirect = Some ( attr. span ) ,
393
385
sym:: rustc_const_unstable => {
394
- if try_add_unstability ( sess, attr, & mut level, & mut stab_spans) . is_err ( ) {
395
- break ;
396
- }
397
- }
398
- sym:: rustc_const_stable => {
399
- if try_add_stability ( sess, attr, & mut level, & mut stab_spans) . is_err ( ) {
400
- break ;
401
- }
386
+ try_add_unstability ( sess, attr, & mut level, & mut stab_spans)
402
387
}
388
+ sym:: rustc_const_stable => try_add_stability ( sess, attr, & mut level, & mut stab_spans) ,
403
389
_ => { }
404
390
}
405
391
}
@@ -458,9 +444,7 @@ pub fn find_body_stability(
458
444
459
445
for attr in attrs {
460
446
if attr. has_name ( sym:: rustc_default_body_unstable) {
461
- if try_add_unstability ( sess, attr, & mut level, & mut stab_spans) . is_err ( ) {
462
- break ;
463
- }
447
+ try_add_unstability ( sess, attr, & mut level, & mut stab_spans) ;
464
448
}
465
449
}
466
450
@@ -474,15 +458,13 @@ fn try_add_unstability(
474
458
attr : & Attribute ,
475
459
level : & mut Option < StabilityLevel > ,
476
460
stab_spans : & mut StabilitySpans ,
477
- ) -> Result < ( ) , ErrorGuaranteed > {
461
+ ) {
478
462
use StabilityLevel :: * ;
479
463
480
464
match level {
481
465
// adding #[unstable] to an item with #[stable] is not permitted
482
466
Some ( Stable { .. } ) => {
483
- return Err ( sess
484
- . dcx ( )
485
- . emit_err ( session_diagnostics:: MultipleStabilityLevels { span : attr. span } ) ) ;
467
+ sess. dcx ( ) . emit_err ( session_diagnostics:: MultipleStabilityLevels { span : attr. span } ) ;
486
468
}
487
469
// if other unstable attributes have been found, attempt to merge them
488
470
Some ( Unstable { unstables, is_soft } )
@@ -494,9 +476,9 @@ fn try_add_unstability(
494
476
// stability levels" clear enough, given an update to E0544.md?
495
477
// should MultipleStabilityLevels have more fields for diagnostics?
496
478
if unstables. iter ( ) . any ( |u| new_unstable. iter ( ) . any ( |v| u. feature == v. feature ) ) {
497
- return Err ( sess
498
- . dcx ( )
499
- . emit_err ( session_diagnostics :: MultipleStabilityLevels { span : attr . span } ) ) ;
479
+ sess. dcx ( )
480
+ . emit_err ( session_diagnostics :: MultipleStabilityLevels { span : attr . span } ) ;
481
+ return ;
500
482
}
501
483
unstables. extend ( new_unstable. clone ( ) ) ;
502
484
// Make the unstability soft if any unstable attributes are marked 'soft'; if an
@@ -513,7 +495,6 @@ fn try_add_unstability(
513
495
// if there was an error in `parse_unstability`, it's already been emitted; do nothing
514
496
_ => { }
515
497
}
516
- Ok ( ( ) )
517
498
}
518
499
519
500
/// Collects stability info from a single `stable`/`rustc_const_stable` attribute, `attr`.
@@ -523,18 +504,14 @@ fn try_add_stability(
523
504
attr : & Attribute ,
524
505
level : & mut Option < StabilityLevel > ,
525
506
stab_spans : & mut StabilitySpans ,
526
- ) -> Result < ( ) , ErrorGuaranteed > {
507
+ ) {
527
508
// at most one #[stable] attribute is permitted, and not when #[unstable] is present
528
509
if level. is_some ( ) {
529
- return Err ( sess
530
- . dcx ( )
531
- . emit_err ( session_diagnostics:: MultipleStabilityLevels { span : attr. span } ) ) ;
532
- }
533
- if let Some ( new_level) = parse_stability ( sess, attr) {
510
+ sess. dcx ( ) . emit_err ( session_diagnostics:: MultipleStabilityLevels { span : attr. span } ) ;
511
+ } else if let Some ( new_level) = parse_stability ( sess, attr) {
534
512
* level = Some ( new_level. clone ( ) ) ;
535
513
stab_spans. 0 . push ( ( new_level, attr. span ) ) ;
536
514
}
537
- Ok ( ( ) )
538
515
}
539
516
540
517
fn insert_or_error ( sess : & Session , meta : & MetaItem , item : & mut Option < Symbol > ) -> Option < ( ) > {
0 commit comments