Skip to content

Commit 901bab7

Browse files
authored
Rollup merge of rust-lang#110913 - compiler-errors:missing-lints, r=Nilstrieb
Add some missing built-in lints (and also sort them, so this is best reviewed one commit at a time) Fixes rust-lang#110911 I wonder if there's a good way to detect when a lint is built-in (i.e. not associated to a lint pass). If so, it needs to be added to this list, or else we're unable to `allow` or `deny` it. Leaving that for future work, I guess...
2 parents 8ce92da + 0279922 commit 901bab7

File tree

4 files changed

+123
-107
lines changed

4 files changed

+123
-107
lines changed

compiler/rustc_lint_defs/src/builtin.rs

+93-88
Original file line numberDiff line numberDiff line change
@@ -3273,110 +3273,115 @@ declare_lint_pass! {
32733273
/// Does nothing as a lint pass, but registers some `Lint`s
32743274
/// that are used by other parts of the compiler.
32753275
HardwiredLints => [
3276-
FORBIDDEN_LINT_GROUPS,
3277-
ILLEGAL_FLOATING_POINT_LITERAL_PATTERN,
3276+
// tidy-alphabetical-start
3277+
ABSOLUTE_PATHS_NOT_STARTING_WITH_CRATE,
3278+
AMBIGUOUS_ASSOCIATED_ITEMS,
3279+
AMBIGUOUS_GLOB_REEXPORTS,
32783280
ARITHMETIC_OVERFLOW,
3279-
UNCONDITIONAL_PANIC,
3280-
UNUSED_IMPORTS,
3281-
UNUSED_EXTERN_CRATES,
3282-
UNUSED_CRATE_DEPENDENCIES,
3283-
UNUSED_QUALIFICATIONS,
3284-
UNKNOWN_LINTS,
3285-
UNFULFILLED_LINT_EXPECTATIONS,
3286-
UNUSED_VARIABLES,
3287-
UNUSED_ASSIGNMENTS,
3288-
DEAD_CODE,
3289-
UNREACHABLE_CODE,
3290-
UNREACHABLE_PATTERNS,
3291-
OVERLAPPING_RANGE_ENDPOINTS,
3281+
ASM_SUB_REGISTER,
3282+
BAD_ASM_STYLE,
3283+
BARE_TRAIT_OBJECTS,
32923284
BINDINGS_WITH_VARIANT_NAME,
3293-
UNUSED_MACROS,
3294-
UNUSED_MACRO_RULES,
3295-
WARNINGS,
3296-
UNUSED_FEATURES,
3297-
STABLE_FEATURES,
3298-
UNKNOWN_CRATE_TYPES,
3299-
TRIVIAL_CASTS,
3300-
TRIVIAL_NUMERIC_CASTS,
3301-
PRIVATE_IN_PUBLIC,
3302-
EXPORTED_PRIVATE_DEPENDENCIES,
3303-
PUB_USE_OF_PRIVATE_EXTERN_CRATE,
3304-
INVALID_TYPE_PARAM_DEFAULT,
3305-
RENAMED_AND_REMOVED_LINTS,
3306-
CONST_ITEM_MUTATION,
3307-
PATTERNS_IN_FNS_WITHOUT_BODY,
3308-
MISSING_FRAGMENT_SPECIFIER,
3309-
LATE_BOUND_LIFETIME_ARGUMENTS,
3310-
ORDER_DEPENDENT_TRAIT_OBJECTS,
3285+
BREAK_WITH_LABEL_AND_LOOP,
3286+
BYTE_SLICE_IN_PACKED_STRUCT_WITH_DERIVE,
3287+
CENUM_IMPL_DROP_CAST,
33113288
COHERENCE_LEAK_CHECK,
3289+
CONFLICTING_REPR_HINTS,
3290+
CONST_EVALUATABLE_UNCHECKED,
3291+
CONST_ITEM_MUTATION,
3292+
DEAD_CODE,
33123293
DEPRECATED,
3313-
UNUSED_UNSAFE,
3314-
UNUSED_MUT,
3315-
UNCONDITIONAL_RECURSION,
3316-
SINGLE_USE_LIFETIMES,
3317-
UNUSED_LIFETIMES,
3318-
UNUSED_LABELS,
3319-
TYVAR_BEHIND_RAW_POINTER,
3294+
DEPRECATED_CFG_ATTR_CRATE_TYPE_NAME,
3295+
DEPRECATED_IN_FUTURE,
3296+
DEPRECATED_WHERE_CLAUSE_LOCATION,
3297+
DUPLICATE_MACRO_ATTRIBUTES,
33203298
ELIDED_LIFETIMES_IN_PATHS,
3321-
BARE_TRAIT_OBJECTS,
3322-
ABSOLUTE_PATHS_NOT_STARTING_WITH_CRATE,
3323-
UNSTABLE_NAME_COLLISIONS,
3324-
IRREFUTABLE_LET_PATTERNS,
3325-
WHERE_CLAUSES_OBJECT_SAFETY,
3326-
PROC_MACRO_DERIVE_RESOLUTION_FALLBACK,
3327-
MACRO_USE_EXTERN_CRATE,
3328-
MACRO_EXPANDED_MACRO_EXPORTS_ACCESSED_BY_ABSOLUTE_PATHS,
3299+
EXPORTED_PRIVATE_DEPENDENCIES,
3300+
FFI_UNWIND_CALLS,
3301+
FORBIDDEN_LINT_GROUPS,
3302+
FUNCTION_ITEM_REFERENCES,
3303+
FUZZY_PROVENANCE_CASTS,
33293304
ILL_FORMED_ATTRIBUTE_INPUT,
3330-
CONFLICTING_REPR_HINTS,
3331-
META_VARIABLE_MISUSE,
3332-
DEPRECATED_IN_FUTURE,
3333-
AMBIGUOUS_ASSOCIATED_ITEMS,
3334-
INDIRECT_STRUCTURAL_MATCH,
3335-
POINTER_STRUCTURAL_MATCH,
3336-
NONTRIVIAL_STRUCTURAL_MATCH,
3337-
SOFT_UNSTABLE,
3338-
UNSTABLE_SYNTAX_PRE_EXPANSION,
3339-
INLINE_NO_SANITIZE,
3340-
BAD_ASM_STYLE,
3341-
ASM_SUB_REGISTER,
3342-
UNSAFE_OP_IN_UNSAFE_FN,
3305+
ILLEGAL_FLOATING_POINT_LITERAL_PATTERN,
3306+
IMPLIED_BOUNDS_ENTAILMENT,
33433307
INCOMPLETE_INCLUDE,
3344-
CENUM_IMPL_DROP_CAST,
3345-
FUZZY_PROVENANCE_CASTS,
3346-
LOSSY_PROVENANCE_CASTS,
3347-
CONST_EVALUATABLE_UNCHECKED,
3308+
INDIRECT_STRUCTURAL_MATCH,
33483309
INEFFECTIVE_UNSTABLE_TRAIT_IMPL,
3349-
MUST_NOT_SUSPEND,
3350-
UNINHABITED_STATIC,
3351-
FUNCTION_ITEM_REFERENCES,
3352-
USELESS_DEPRECATED,
3353-
MISSING_ABI,
3310+
INLINE_NO_SANITIZE,
3311+
INVALID_ALIGNMENT,
33543312
INVALID_DOC_ATTRIBUTES,
3355-
SEMICOLON_IN_EXPRESSIONS_FROM_MACROS,
3356-
RUST_2021_INCOMPATIBLE_CLOSURE_CAPTURES,
3313+
INVALID_MACRO_EXPORT_ARGUMENTS,
3314+
INVALID_TYPE_PARAM_DEFAULT,
3315+
IRREFUTABLE_LET_PATTERNS,
3316+
LARGE_ASSIGNMENTS,
3317+
LATE_BOUND_LIFETIME_ARGUMENTS,
33573318
LEGACY_DERIVE_HELPERS,
3319+
LOSSY_PROVENANCE_CASTS,
3320+
MACRO_EXPANDED_MACRO_EXPORTS_ACCESSED_BY_ABSOLUTE_PATHS,
3321+
MACRO_USE_EXTERN_CRATE,
3322+
META_VARIABLE_MISUSE,
3323+
MISSING_ABI,
3324+
MISSING_FRAGMENT_SPECIFIER,
3325+
MUST_NOT_SUSPEND,
3326+
NAMED_ARGUMENTS_USED_POSITIONALLY,
3327+
NON_EXHAUSTIVE_OMITTED_PATTERNS,
3328+
NONTRIVIAL_STRUCTURAL_MATCH,
3329+
ORDER_DEPENDENT_TRAIT_OBJECTS,
3330+
OVERLAPPING_RANGE_ENDPOINTS,
3331+
PATTERNS_IN_FNS_WITHOUT_BODY,
3332+
POINTER_STRUCTURAL_MATCH,
3333+
PRIVATE_IN_PUBLIC,
33583334
PROC_MACRO_BACK_COMPAT,
3335+
PROC_MACRO_DERIVE_RESOLUTION_FALLBACK,
3336+
PUB_USE_OF_PRIVATE_EXTERN_CRATE,
3337+
RENAMED_AND_REMOVED_LINTS,
3338+
REPR_TRANSPARENT_EXTERNAL_PRIVATE_FIELDS,
3339+
RUST_2021_INCOMPATIBLE_CLOSURE_CAPTURES,
33593340
RUST_2021_INCOMPATIBLE_OR_PATTERNS,
3360-
LARGE_ASSIGNMENTS,
3361-
RUST_2021_PRELUDE_COLLISIONS,
33623341
RUST_2021_PREFIXES_INCOMPATIBLE_SYNTAX,
3342+
RUST_2021_PRELUDE_COLLISIONS,
3343+
SEMICOLON_IN_EXPRESSIONS_FROM_MACROS,
3344+
SINGLE_USE_LIFETIMES,
3345+
SOFT_UNSTABLE,
3346+
STABLE_FEATURES,
3347+
SUSPICIOUS_AUTO_TRAIT_IMPLS,
3348+
TEST_UNSTABLE_LINT,
3349+
TEXT_DIRECTION_CODEPOINT_IN_COMMENT,
3350+
TRIVIAL_CASTS,
3351+
TRIVIAL_NUMERIC_CASTS,
3352+
TYVAR_BEHIND_RAW_POINTER,
3353+
UNCONDITIONAL_PANIC,
3354+
UNCONDITIONAL_RECURSION,
3355+
UNDEFINED_NAKED_FUNCTION_ABI,
3356+
UNFULFILLED_LINT_EXPECTATIONS,
3357+
UNINHABITED_STATIC,
3358+
UNKNOWN_CRATE_TYPES,
3359+
UNKNOWN_LINTS,
3360+
UNREACHABLE_CODE,
3361+
UNREACHABLE_PATTERNS,
3362+
UNSAFE_OP_IN_UNSAFE_FN,
3363+
UNSTABLE_NAME_COLLISIONS,
3364+
UNSTABLE_SYNTAX_PRE_EXPANSION,
33633365
UNSUPPORTED_CALLING_CONVENTIONS,
3364-
BREAK_WITH_LABEL_AND_LOOP,
3366+
UNUSED_ASSIGNMENTS,
33653367
UNUSED_ATTRIBUTES,
3368+
UNUSED_CRATE_DEPENDENCIES,
3369+
UNUSED_EXTERN_CRATES,
3370+
UNUSED_FEATURES,
3371+
UNUSED_IMPORTS,
3372+
UNUSED_LABELS,
3373+
UNUSED_LIFETIMES,
3374+
UNUSED_MACRO_RULES,
3375+
UNUSED_MACROS,
3376+
UNUSED_MUT,
3377+
UNUSED_QUALIFICATIONS,
33663378
UNUSED_TUPLE_STRUCT_FIELDS,
3367-
NON_EXHAUSTIVE_OMITTED_PATTERNS,
3368-
TEXT_DIRECTION_CODEPOINT_IN_COMMENT,
3369-
DEPRECATED_CFG_ATTR_CRATE_TYPE_NAME,
3370-
DUPLICATE_MACRO_ATTRIBUTES,
3371-
SUSPICIOUS_AUTO_TRAIT_IMPLS,
3372-
DEPRECATED_WHERE_CLAUSE_LOCATION,
3373-
TEST_UNSTABLE_LINT,
3374-
FFI_UNWIND_CALLS,
3375-
REPR_TRANSPARENT_EXTERNAL_PRIVATE_FIELDS,
3376-
NAMED_ARGUMENTS_USED_POSITIONALLY,
3377-
IMPLIED_BOUNDS_ENTAILMENT,
3378-
BYTE_SLICE_IN_PACKED_STRUCT_WITH_DERIVE,
3379-
AMBIGUOUS_GLOB_REEXPORTS,
3379+
UNUSED_UNSAFE,
3380+
UNUSED_VARIABLES,
3381+
USELESS_DEPRECATED,
3382+
WARNINGS,
3383+
WHERE_CLAUSES_OBJECT_SAFETY,
3384+
// tidy-alphabetical-end
33803385
]
33813386
}
33823387

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
error: `#[macro_export]` can only take 1 or 0 arguments
2+
--> $DIR/invalid_macro_export_argument.rs:7:1
3+
|
4+
LL | #[macro_export(hello, world)]
5+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6+
|
7+
note: the lint level is defined here
8+
--> $DIR/invalid_macro_export_argument.rs:4:24
9+
|
10+
LL | #![cfg_attr(deny, deny(invalid_macro_export_arguments))]
11+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
12+
13+
error: `not_local_inner_macros` isn't a valid `#[macro_export]` argument
14+
--> $DIR/invalid_macro_export_argument.rs:13:16
15+
|
16+
LL | #[macro_export(not_local_inner_macros)]
17+
| ^^^^^^^^^^^^^^^^^^^^^^
18+
19+
error: aborting due to 2 previous errors
20+

tests/ui/attributes/invalid_macro_export_argument.rs

+10-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
1-
// check-pass
2-
#[macro_export(hello, world)] //~ WARN `#[macro_export]` can only take 1 or 0 arguments
1+
// revisions: deny allow
2+
//[allow] check-pass
3+
4+
#![cfg_attr(deny, deny(invalid_macro_export_arguments))]
5+
#![cfg_attr(allow, allow(invalid_macro_export_arguments))]
6+
7+
#[macro_export(hello, world)]
8+
//[deny]~^ ERROR `#[macro_export]` can only take 1 or 0 arguments
39
macro_rules! a {
410
() => ()
511
}
612

7-
#[macro_export(not_local_inner_macros)] //~ WARN `not_local_inner_macros` isn't a valid `#[macro_export]` argument
13+
#[macro_export(not_local_inner_macros)]
14+
//[deny]~^ ERROR `not_local_inner_macros` isn't a valid `#[macro_export]` argument
815
macro_rules! b {
916
() => ()
1017
}

tests/ui/attributes/invalid_macro_export_argument.stderr

-16
This file was deleted.

0 commit comments

Comments
 (0)