Skip to content

Commit 0ff3fec

Browse files
Make OnDuplicate::Error the default
1 parent ae4cf84 commit 0ff3fec

23 files changed

Lines changed: 5 additions & 131 deletions

compiler/rustc_attr_parsing/src/attributes/autodiff.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ use rustc_hir::{MethodKind, Target};
88
use rustc_span::{Symbol, sym};
99
use thin_vec::ThinVec;
1010

11+
use crate::attributes::SingleAttributeParser;
1112
use crate::attributes::prelude::Allow;
12-
use crate::attributes::{OnDuplicate, SingleAttributeParser};
1313
use crate::context::{AcceptContext, Stage};
1414
use crate::parser::{ArgParser, MetaItemOrLitParser};
1515
use crate::target_checking::AllowedTargets;
@@ -18,7 +18,6 @@ pub(crate) struct RustcAutodiffParser;
1818

1919
impl<S: Stage> SingleAttributeParser<S> for RustcAutodiffParser {
2020
const PATH: &[Symbol] = &[sym::rustc_autodiff];
21-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
2221
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[
2322
Allow(Target::Fn),
2423
Allow(Target::Method(MethodKind::Inherent)),

compiler/rustc_attr_parsing/src/attributes/body.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ pub(crate) struct CoroutineParser;
66

77
impl<S: Stage> NoArgsAttributeParser<S> for CoroutineParser {
88
const PATH: &[Symbol] = &[sym::coroutine];
9-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
109
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Closure)]);
1110
const CREATE: fn(rustc_span::Span) -> AttributeKind = |span| AttributeKind::Coroutine(span);
1211
}

compiler/rustc_attr_parsing/src/attributes/cfi_encoding.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ impl<S: Stage> SingleAttributeParser<S> for CfiEncodingParser {
88
Allow(Target::Enum),
99
Allow(Target::Union),
1010
]);
11-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
1211
const TEMPLATE: AttributeTemplate = template!(NameValueStr: "encoding");
1312

1413
fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser) -> Option<AttributeKind> {

compiler/rustc_attr_parsing/src/attributes/codegen_attrs.rs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ pub(crate) struct OptimizeParser;
1414

1515
impl<S: Stage> SingleAttributeParser<S> for OptimizeParser {
1616
const PATH: &[Symbol] = &[sym::optimize];
17-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
1817
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[
1918
Allow(Target::Fn),
2019
Allow(Target::Closure),
@@ -62,7 +61,6 @@ pub(crate) struct CoverageParser;
6261

6362
impl<S: Stage> SingleAttributeParser<S> for CoverageParser {
6463
const PATH: &[Symbol] = &[sym::coverage];
65-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
6664
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[
6765
Allow(Target::Fn),
6866
Allow(Target::Closure),
@@ -143,7 +141,6 @@ pub(crate) struct RustcObjcClassParser;
143141

144142
impl<S: Stage> SingleAttributeParser<S> for RustcObjcClassParser {
145143
const PATH: &[rustc_span::Symbol] = &[sym::rustc_objc_class];
146-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
147144
const ALLOWED_TARGETS: AllowedTargets =
148145
AllowedTargets::AllowList(&[Allow(Target::ForeignStatic)]);
149146
const TEMPLATE: AttributeTemplate = template!(NameValueStr: "ClassName");
@@ -175,7 +172,6 @@ pub(crate) struct RustcObjcSelectorParser;
175172

176173
impl<S: Stage> SingleAttributeParser<S> for RustcObjcSelectorParser {
177174
const PATH: &[rustc_span::Symbol] = &[sym::rustc_objc_selector];
178-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
179175
const ALLOWED_TARGETS: AllowedTargets =
180176
AllowedTargets::AllowList(&[Allow(Target::ForeignStatic)]);
181177
const TEMPLATE: AttributeTemplate = template!(NameValueStr: "methodName");
@@ -591,8 +587,6 @@ impl<S: Stage> SingleAttributeParser<S> for SanitizeParser {
591587
r#"realtime = "nonblocking|blocking|caller""#,
592588
]);
593589

594-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
595-
596590
fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser) -> Option<AttributeKind> {
597591
let Some(list) = args.list() else {
598592
let attr_span = cx.attr_span;
@@ -695,7 +689,6 @@ pub(crate) struct ThreadLocalParser;
695689

696690
impl<S: Stage> NoArgsAttributeParser<S> for ThreadLocalParser {
697691
const PATH: &[Symbol] = &[sym::thread_local];
698-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
699692
const ALLOWED_TARGETS: AllowedTargets =
700693
AllowedTargets::AllowList(&[Allow(Target::Static), Allow(Target::ForeignStatic)]);
701694
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::ThreadLocal;
@@ -705,7 +698,6 @@ pub(crate) struct RustcPassIndirectlyInNonRusticAbisParser;
705698

706699
impl<S: Stage> NoArgsAttributeParser<S> for RustcPassIndirectlyInNonRusticAbisParser {
707700
const PATH: &[Symbol] = &[sym::rustc_pass_indirectly_in_non_rustic_abis];
708-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
709701
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Struct)]);
710702
const CREATE: fn(Span) -> AttributeKind = AttributeKind::RustcPassIndirectlyInNonRusticAbis;
711703
}
@@ -714,7 +706,6 @@ pub(crate) struct RustcEiiForeignItemParser;
714706

715707
impl<S: Stage> NoArgsAttributeParser<S> for RustcEiiForeignItemParser {
716708
const PATH: &[Symbol] = &[sym::rustc_eii_foreign_item];
717-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
718709
const ALLOWED_TARGETS: AllowedTargets =
719710
AllowedTargets::AllowList(&[Allow(Target::ForeignFn), Allow(Target::ForeignStatic)]);
720711
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::RustcEiiForeignItem;
@@ -724,7 +715,6 @@ pub(crate) struct PatchableFunctionEntryParser;
724715

725716
impl<S: Stage> SingleAttributeParser<S> for PatchableFunctionEntryParser {
726717
const PATH: &[Symbol] = &[sym::patchable_function_entry];
727-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
728718
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Fn)]);
729719
const TEMPLATE: AttributeTemplate = template!(List: &["prefix_nops = m, entry_nops = n"]);
730720

compiler/rustc_attr_parsing/src/attributes/crate_level.rs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@ pub(crate) struct MoveSizeLimitParser;
108108

109109
impl<S: Stage> SingleAttributeParser<S> for MoveSizeLimitParser {
110110
const PATH: &[Symbol] = &[sym::move_size_limit];
111-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
112111
const TEMPLATE: AttributeTemplate = template!(NameValueStr: "N");
113112
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]);
114113

@@ -154,7 +153,6 @@ pub(crate) struct PatternComplexityLimitParser;
154153

155154
impl<S: Stage> SingleAttributeParser<S> for PatternComplexityLimitParser {
156155
const PATH: &[Symbol] = &[sym::pattern_complexity_limit];
157-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
158156
const TEMPLATE: AttributeTemplate = template!(NameValueStr: "N");
159157
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]);
160158

@@ -177,7 +175,6 @@ pub(crate) struct NoCoreParser;
177175

178176
impl<S: Stage> NoArgsAttributeParser<S> for NoCoreParser {
179177
const PATH: &[Symbol] = &[sym::no_core];
180-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
181178
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]);
182179
const CREATE: fn(Span) -> AttributeKind = AttributeKind::NoCore;
183180
}
@@ -204,7 +201,6 @@ pub(crate) struct RustcCoherenceIsCoreParser;
204201

205202
impl<S: Stage> NoArgsAttributeParser<S> for RustcCoherenceIsCoreParser {
206203
const PATH: &[Symbol] = &[sym::rustc_coherence_is_core];
207-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
208204
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]);
209205
const CREATE: fn(Span) -> AttributeKind = AttributeKind::RustcCoherenceIsCore;
210206
}
@@ -247,7 +243,6 @@ pub(crate) struct PanicRuntimeParser;
247243

248244
impl<S: Stage> NoArgsAttributeParser<S> for PanicRuntimeParser {
249245
const PATH: &[Symbol] = &[sym::panic_runtime];
250-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
251246
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]);
252247
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::PanicRuntime;
253248
}
@@ -256,7 +251,6 @@ pub(crate) struct NeedsPanicRuntimeParser;
256251

257252
impl<S: Stage> NoArgsAttributeParser<S> for NeedsPanicRuntimeParser {
258253
const PATH: &[Symbol] = &[sym::needs_panic_runtime];
259-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
260254
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]);
261255
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::NeedsPanicRuntime;
262256
}
@@ -265,7 +259,6 @@ pub(crate) struct ProfilerRuntimeParser;
265259

266260
impl<S: Stage> NoArgsAttributeParser<S> for ProfilerRuntimeParser {
267261
const PATH: &[Symbol] = &[sym::profiler_runtime];
268-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
269262
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]);
270263
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::ProfilerRuntime;
271264
}
@@ -283,7 +276,6 @@ pub(crate) struct RustcPreserveUbChecksParser;
283276

284277
impl<S: Stage> NoArgsAttributeParser<S> for RustcPreserveUbChecksParser {
285278
const PATH: &[Symbol] = &[sym::rustc_preserve_ub_checks];
286-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
287279
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]);
288280
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::RustcPreserveUbChecks;
289281
}
@@ -292,7 +284,6 @@ pub(crate) struct RustcNoImplicitBoundsParser;
292284

293285
impl<S: Stage> NoArgsAttributeParser<S> for RustcNoImplicitBoundsParser {
294286
const PATH: &[Symbol] = &[sym::rustc_no_implicit_bounds];
295-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
296287
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]);
297288
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::RustcNoImplicitBounds;
298289
}
@@ -301,7 +292,6 @@ pub(crate) struct DefaultLibAllocatorParser;
301292

302293
impl<S: Stage> NoArgsAttributeParser<S> for DefaultLibAllocatorParser {
303294
const PATH: &[Symbol] = &[sym::default_lib_allocator];
304-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
305295
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]);
306296
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::DefaultLibAllocator;
307297
}

compiler/rustc_attr_parsing/src/attributes/deprecation.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ fn get<S: Stage>(
3434
pub(crate) struct DeprecatedParser;
3535
impl<S: Stage> SingleAttributeParser<S> for DeprecatedParser {
3636
const PATH: &[Symbol] = &[sym::deprecated];
37-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
3837
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowListWarnRest(&[
3938
Allow(Target::Fn),
4039
Allow(Target::Mod),

compiler/rustc_attr_parsing/src/attributes/inline.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ pub(crate) struct RustcForceInlineParser;
6767

6868
impl<S: Stage> SingleAttributeParser<S> for RustcForceInlineParser {
6969
const PATH: &[Symbol] = &[sym::rustc_force_inline];
70-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
7170
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[
7271
Allow(Target::Fn),
7372
Allow(Target::Method(MethodKind::Inherent)),

compiler/rustc_attr_parsing/src/attributes/instruction_set.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ impl<S: Stage> SingleAttributeParser<S> for InstructionSetParser {
1515
Allow(Target::Method(MethodKind::Trait { body: true })),
1616
]);
1717
const TEMPLATE: AttributeTemplate = template!(List: &["set"], "https://doc.rust-lang.org/reference/attributes/codegen.html#the-instruction_set-attribute");
18-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
1918

2019
fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser) -> Option<AttributeKind> {
2120
const POSSIBLE_SYMBOLS: &[Symbol] = &[sym::arm_a32, sym::arm_t32];

compiler/rustc_attr_parsing/src/attributes/link_attrs.rs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -502,15 +502,13 @@ impl<S: Stage> SingleAttributeParser<S> for LinkSectionParser {
502502
pub(crate) struct ExportStableParser;
503503
impl<S: Stage> NoArgsAttributeParser<S> for ExportStableParser {
504504
const PATH: &[Symbol] = &[sym::export_stable];
505-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
506505
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(ALL_TARGETS); //FIXME Still checked fully in `check_attr.rs`
507506
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::ExportStable;
508507
}
509508

510509
pub(crate) struct FfiConstParser;
511510
impl<S: Stage> NoArgsAttributeParser<S> for FfiConstParser {
512511
const PATH: &[Symbol] = &[sym::ffi_const];
513-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
514512
const SAFETY: AttributeSafety = AttributeSafety::Unsafe { unsafe_since: None };
515513
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::ForeignFn)]);
516514
const CREATE: fn(Span) -> AttributeKind = AttributeKind::FfiConst;
@@ -519,7 +517,6 @@ impl<S: Stage> NoArgsAttributeParser<S> for FfiConstParser {
519517
pub(crate) struct FfiPureParser;
520518
impl<S: Stage> NoArgsAttributeParser<S> for FfiPureParser {
521519
const PATH: &[Symbol] = &[sym::ffi_pure];
522-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
523520
const SAFETY: AttributeSafety = AttributeSafety::Unsafe { unsafe_since: None };
524521
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::ForeignFn)]);
525522
const CREATE: fn(Span) -> AttributeKind = AttributeKind::FfiPure;
@@ -528,7 +525,6 @@ impl<S: Stage> NoArgsAttributeParser<S> for FfiPureParser {
528525
pub(crate) struct RustcStdInternalSymbolParser;
529526
impl<S: Stage> NoArgsAttributeParser<S> for RustcStdInternalSymbolParser {
530527
const PATH: &[Symbol] = &[sym::rustc_std_internal_symbol];
531-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
532528
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[
533529
Allow(Target::Fn),
534530
Allow(Target::ForeignFn),
@@ -542,7 +538,6 @@ pub(crate) struct LinkOrdinalParser;
542538

543539
impl<S: Stage> SingleAttributeParser<S> for LinkOrdinalParser {
544540
const PATH: &[Symbol] = &[sym::link_ordinal];
545-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
546541
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[
547542
Allow(Target::ForeignFn),
548543
Allow(Target::ForeignStatic),
@@ -583,7 +578,6 @@ pub(crate) struct LinkageParser;
583578
impl<S: Stage> SingleAttributeParser<S> for LinkageParser {
584579
const PATH: &[Symbol] = &[sym::linkage];
585580

586-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
587581
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[
588582
Allow(Target::Fn),
589583
Allow(Target::Method(MethodKind::Inherent)),
@@ -666,7 +660,6 @@ pub(crate) struct NeedsAllocatorParser;
666660

667661
impl<S: Stage> NoArgsAttributeParser<S> for NeedsAllocatorParser {
668662
const PATH: &[Symbol] = &[sym::needs_allocator];
669-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
670663
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]);
671664
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::NeedsAllocator;
672665
}
@@ -675,7 +668,6 @@ pub(crate) struct CompilerBuiltinsParser;
675668

676669
impl<S: Stage> NoArgsAttributeParser<S> for CompilerBuiltinsParser {
677670
const PATH: &[Symbol] = &[sym::compiler_builtins];
678-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
679671
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]);
680672
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::CompilerBuiltins;
681673
}

compiler/rustc_attr_parsing/src/attributes/lint_helpers.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use super::prelude::*;
33
pub(crate) struct RustcAsPtrParser;
44
impl<S: Stage> NoArgsAttributeParser<S> for RustcAsPtrParser {
55
const PATH: &[Symbol] = &[sym::rustc_as_ptr];
6-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
76
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[
87
Allow(Target::Fn),
98
Allow(Target::Method(MethodKind::Inherent)),
@@ -17,7 +16,6 @@ impl<S: Stage> NoArgsAttributeParser<S> for RustcAsPtrParser {
1716
pub(crate) struct RustcPubTransparentParser;
1817
impl<S: Stage> NoArgsAttributeParser<S> for RustcPubTransparentParser {
1918
const PATH: &[Symbol] = &[sym::rustc_pub_transparent];
20-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
2119
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[
2220
Allow(Target::Struct),
2321
Allow(Target::Enum),
@@ -29,7 +27,6 @@ impl<S: Stage> NoArgsAttributeParser<S> for RustcPubTransparentParser {
2927
pub(crate) struct RustcPassByValueParser;
3028
impl<S: Stage> NoArgsAttributeParser<S> for RustcPassByValueParser {
3129
const PATH: &[Symbol] = &[sym::rustc_pass_by_value];
32-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
3330
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[
3431
Allow(Target::Struct),
3532
Allow(Target::Enum),
@@ -41,7 +38,6 @@ impl<S: Stage> NoArgsAttributeParser<S> for RustcPassByValueParser {
4138
pub(crate) struct RustcShouldNotBeCalledOnConstItemsParser;
4239
impl<S: Stage> NoArgsAttributeParser<S> for RustcShouldNotBeCalledOnConstItemsParser {
4340
const PATH: &[Symbol] = &[sym::rustc_should_not_be_called_on_const_items];
44-
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
4541
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[
4642
Allow(Target::Method(MethodKind::Inherent)),
4743
Allow(Target::Method(MethodKind::TraitImpl)),

0 commit comments

Comments
 (0)