@@ -271,16 +271,8 @@ pub fn find_stability(
271
271
for attr in attrs {
272
272
match attr. name_or_empty ( ) {
273
273
sym:: rustc_allowed_through_unstable_modules => allowed_through_unstable_modules = true ,
274
- sym:: unstable => {
275
- if try_add_unstability ( sess, attr, & mut level, & mut stab_spans) . is_err ( ) {
276
- break ;
277
- }
278
- }
279
- sym:: stable => {
280
- if try_add_stability ( sess, attr, & mut level, & mut stab_spans) . is_err ( ) {
281
- break ;
282
- }
283
- }
274
+ sym:: unstable => try_add_unstability ( sess, attr, & mut level, & mut stab_spans) ,
275
+ sym:: stable => try_add_stability ( sess, attr, & mut level, & mut stab_spans) ,
284
276
_ => { }
285
277
}
286
278
}
@@ -315,15 +307,9 @@ pub fn find_const_stability(
315
307
match attr. name_or_empty ( ) {
316
308
sym:: rustc_promotable => promotable = true ,
317
309
sym:: rustc_const_unstable => {
318
- if try_add_unstability ( sess, attr, & mut level, & mut stab_spans) . is_err ( ) {
319
- break ;
320
- }
321
- }
322
- sym:: rustc_const_stable => {
323
- if try_add_stability ( sess, attr, & mut level, & mut stab_spans) . is_err ( ) {
324
- break ;
325
- }
310
+ try_add_unstability ( sess, attr, & mut level, & mut stab_spans)
326
311
}
312
+ sym:: rustc_const_stable => try_add_stability ( sess, attr, & mut level, & mut stab_spans) ,
327
313
_ => { }
328
314
}
329
315
}
@@ -350,9 +336,7 @@ pub fn find_body_stability(
350
336
351
337
for attr in attrs {
352
338
if attr. has_name ( sym:: rustc_default_body_unstable) {
353
- if try_add_unstability ( sess, attr, & mut level, & mut stab_spans) . is_err ( ) {
354
- break ;
355
- }
339
+ try_add_unstability ( sess, attr, & mut level, & mut stab_spans) ;
356
340
}
357
341
}
358
342
@@ -366,15 +350,13 @@ fn try_add_unstability(
366
350
attr : & Attribute ,
367
351
level : & mut Option < StabilityLevel > ,
368
352
stab_spans : & mut StabilitySpans ,
369
- ) -> Result < ( ) , ErrorGuaranteed > {
353
+ ) {
370
354
use StabilityLevel :: * ;
371
355
372
356
match level {
373
357
// adding #[unstable] to an item with #[stable] is not permitted
374
358
Some ( Stable { .. } ) => {
375
- return Err ( sess
376
- . dcx ( )
377
- . emit_err ( session_diagnostics:: MultipleStabilityLevels { span : attr. span } ) ) ;
359
+ sess. dcx ( ) . emit_err ( session_diagnostics:: MultipleStabilityLevels { span : attr. span } ) ;
378
360
}
379
361
// if other unstable attributes have been found, attempt to merge them
380
362
Some ( Unstable { unstables, is_soft } )
@@ -386,9 +368,9 @@ fn try_add_unstability(
386
368
// stability levels" clear enough, given an update to E0544.md?
387
369
// should MultipleStabilityLevels have more fields for diagnostics?
388
370
if unstables. iter ( ) . any ( |u| new_unstable. iter ( ) . any ( |v| u. feature == v. feature ) ) {
389
- return Err ( sess
390
- . dcx ( )
391
- . emit_err ( session_diagnostics :: MultipleStabilityLevels { span : attr . span } ) ) ;
371
+ sess. dcx ( )
372
+ . emit_err ( session_diagnostics :: MultipleStabilityLevels { span : attr . span } ) ;
373
+ return ;
392
374
}
393
375
unstables. extend ( new_unstable. clone ( ) ) ;
394
376
// Make the unstability soft if any unstable attributes are marked 'soft'; if an
@@ -405,7 +387,6 @@ fn try_add_unstability(
405
387
// if there was an error in `parse_unstability`, it's already been emitted; do nothing
406
388
_ => { }
407
389
}
408
- Ok ( ( ) )
409
390
}
410
391
411
392
/// Collects stability info from a single `stable`/`rustc_const_stable` attribute, `attr`.
@@ -415,18 +396,14 @@ fn try_add_stability(
415
396
attr : & Attribute ,
416
397
level : & mut Option < StabilityLevel > ,
417
398
stab_spans : & mut StabilitySpans ,
418
- ) -> Result < ( ) , ErrorGuaranteed > {
399
+ ) {
419
400
// at most one #[stable] attribute is permitted, and not when #[unstable] is present
420
401
if level. is_some ( ) {
421
- return Err ( sess
422
- . dcx ( )
423
- . emit_err ( session_diagnostics:: MultipleStabilityLevels { span : attr. span } ) ) ;
424
- }
425
- if let Some ( new_level) = parse_stability ( sess, attr) {
402
+ sess. dcx ( ) . emit_err ( session_diagnostics:: MultipleStabilityLevels { span : attr. span } ) ;
403
+ } else if let Some ( new_level) = parse_stability ( sess, attr) {
426
404
* level = Some ( new_level. clone ( ) ) ;
427
405
stab_spans. 0 . push ( ( new_level, attr. span ) ) ;
428
406
}
429
- Ok ( ( ) )
430
407
}
431
408
432
409
fn insert_or_error ( sess : & Session , meta : & MetaItem , item : & mut Option < Symbol > ) -> Option < ( ) > {
0 commit comments