mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
Rollup merge of #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 #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...
This commit is contained in:
commit
901bab70d3
@ -3273,110 +3273,115 @@ declare_lint_pass! {
|
|||||||
/// Does nothing as a lint pass, but registers some `Lint`s
|
/// Does nothing as a lint pass, but registers some `Lint`s
|
||||||
/// that are used by other parts of the compiler.
|
/// that are used by other parts of the compiler.
|
||||||
HardwiredLints => [
|
HardwiredLints => [
|
||||||
FORBIDDEN_LINT_GROUPS,
|
// tidy-alphabetical-start
|
||||||
ILLEGAL_FLOATING_POINT_LITERAL_PATTERN,
|
ABSOLUTE_PATHS_NOT_STARTING_WITH_CRATE,
|
||||||
|
AMBIGUOUS_ASSOCIATED_ITEMS,
|
||||||
|
AMBIGUOUS_GLOB_REEXPORTS,
|
||||||
ARITHMETIC_OVERFLOW,
|
ARITHMETIC_OVERFLOW,
|
||||||
UNCONDITIONAL_PANIC,
|
ASM_SUB_REGISTER,
|
||||||
UNUSED_IMPORTS,
|
BAD_ASM_STYLE,
|
||||||
UNUSED_EXTERN_CRATES,
|
BARE_TRAIT_OBJECTS,
|
||||||
UNUSED_CRATE_DEPENDENCIES,
|
|
||||||
UNUSED_QUALIFICATIONS,
|
|
||||||
UNKNOWN_LINTS,
|
|
||||||
UNFULFILLED_LINT_EXPECTATIONS,
|
|
||||||
UNUSED_VARIABLES,
|
|
||||||
UNUSED_ASSIGNMENTS,
|
|
||||||
DEAD_CODE,
|
|
||||||
UNREACHABLE_CODE,
|
|
||||||
UNREACHABLE_PATTERNS,
|
|
||||||
OVERLAPPING_RANGE_ENDPOINTS,
|
|
||||||
BINDINGS_WITH_VARIANT_NAME,
|
BINDINGS_WITH_VARIANT_NAME,
|
||||||
UNUSED_MACROS,
|
BREAK_WITH_LABEL_AND_LOOP,
|
||||||
UNUSED_MACRO_RULES,
|
BYTE_SLICE_IN_PACKED_STRUCT_WITH_DERIVE,
|
||||||
WARNINGS,
|
CENUM_IMPL_DROP_CAST,
|
||||||
UNUSED_FEATURES,
|
COHERENCE_LEAK_CHECK,
|
||||||
|
CONFLICTING_REPR_HINTS,
|
||||||
|
CONST_EVALUATABLE_UNCHECKED,
|
||||||
|
CONST_ITEM_MUTATION,
|
||||||
|
DEAD_CODE,
|
||||||
|
DEPRECATED,
|
||||||
|
DEPRECATED_CFG_ATTR_CRATE_TYPE_NAME,
|
||||||
|
DEPRECATED_IN_FUTURE,
|
||||||
|
DEPRECATED_WHERE_CLAUSE_LOCATION,
|
||||||
|
DUPLICATE_MACRO_ATTRIBUTES,
|
||||||
|
ELIDED_LIFETIMES_IN_PATHS,
|
||||||
|
EXPORTED_PRIVATE_DEPENDENCIES,
|
||||||
|
FFI_UNWIND_CALLS,
|
||||||
|
FORBIDDEN_LINT_GROUPS,
|
||||||
|
FUNCTION_ITEM_REFERENCES,
|
||||||
|
FUZZY_PROVENANCE_CASTS,
|
||||||
|
ILL_FORMED_ATTRIBUTE_INPUT,
|
||||||
|
ILLEGAL_FLOATING_POINT_LITERAL_PATTERN,
|
||||||
|
IMPLIED_BOUNDS_ENTAILMENT,
|
||||||
|
INCOMPLETE_INCLUDE,
|
||||||
|
INDIRECT_STRUCTURAL_MATCH,
|
||||||
|
INEFFECTIVE_UNSTABLE_TRAIT_IMPL,
|
||||||
|
INLINE_NO_SANITIZE,
|
||||||
|
INVALID_ALIGNMENT,
|
||||||
|
INVALID_DOC_ATTRIBUTES,
|
||||||
|
INVALID_MACRO_EXPORT_ARGUMENTS,
|
||||||
|
INVALID_TYPE_PARAM_DEFAULT,
|
||||||
|
IRREFUTABLE_LET_PATTERNS,
|
||||||
|
LARGE_ASSIGNMENTS,
|
||||||
|
LATE_BOUND_LIFETIME_ARGUMENTS,
|
||||||
|
LEGACY_DERIVE_HELPERS,
|
||||||
|
LOSSY_PROVENANCE_CASTS,
|
||||||
|
MACRO_EXPANDED_MACRO_EXPORTS_ACCESSED_BY_ABSOLUTE_PATHS,
|
||||||
|
MACRO_USE_EXTERN_CRATE,
|
||||||
|
META_VARIABLE_MISUSE,
|
||||||
|
MISSING_ABI,
|
||||||
|
MISSING_FRAGMENT_SPECIFIER,
|
||||||
|
MUST_NOT_SUSPEND,
|
||||||
|
NAMED_ARGUMENTS_USED_POSITIONALLY,
|
||||||
|
NON_EXHAUSTIVE_OMITTED_PATTERNS,
|
||||||
|
NONTRIVIAL_STRUCTURAL_MATCH,
|
||||||
|
ORDER_DEPENDENT_TRAIT_OBJECTS,
|
||||||
|
OVERLAPPING_RANGE_ENDPOINTS,
|
||||||
|
PATTERNS_IN_FNS_WITHOUT_BODY,
|
||||||
|
POINTER_STRUCTURAL_MATCH,
|
||||||
|
PRIVATE_IN_PUBLIC,
|
||||||
|
PROC_MACRO_BACK_COMPAT,
|
||||||
|
PROC_MACRO_DERIVE_RESOLUTION_FALLBACK,
|
||||||
|
PUB_USE_OF_PRIVATE_EXTERN_CRATE,
|
||||||
|
RENAMED_AND_REMOVED_LINTS,
|
||||||
|
REPR_TRANSPARENT_EXTERNAL_PRIVATE_FIELDS,
|
||||||
|
RUST_2021_INCOMPATIBLE_CLOSURE_CAPTURES,
|
||||||
|
RUST_2021_INCOMPATIBLE_OR_PATTERNS,
|
||||||
|
RUST_2021_PREFIXES_INCOMPATIBLE_SYNTAX,
|
||||||
|
RUST_2021_PRELUDE_COLLISIONS,
|
||||||
|
SEMICOLON_IN_EXPRESSIONS_FROM_MACROS,
|
||||||
|
SINGLE_USE_LIFETIMES,
|
||||||
|
SOFT_UNSTABLE,
|
||||||
STABLE_FEATURES,
|
STABLE_FEATURES,
|
||||||
UNKNOWN_CRATE_TYPES,
|
SUSPICIOUS_AUTO_TRAIT_IMPLS,
|
||||||
|
TEST_UNSTABLE_LINT,
|
||||||
|
TEXT_DIRECTION_CODEPOINT_IN_COMMENT,
|
||||||
TRIVIAL_CASTS,
|
TRIVIAL_CASTS,
|
||||||
TRIVIAL_NUMERIC_CASTS,
|
TRIVIAL_NUMERIC_CASTS,
|
||||||
PRIVATE_IN_PUBLIC,
|
|
||||||
EXPORTED_PRIVATE_DEPENDENCIES,
|
|
||||||
PUB_USE_OF_PRIVATE_EXTERN_CRATE,
|
|
||||||
INVALID_TYPE_PARAM_DEFAULT,
|
|
||||||
RENAMED_AND_REMOVED_LINTS,
|
|
||||||
CONST_ITEM_MUTATION,
|
|
||||||
PATTERNS_IN_FNS_WITHOUT_BODY,
|
|
||||||
MISSING_FRAGMENT_SPECIFIER,
|
|
||||||
LATE_BOUND_LIFETIME_ARGUMENTS,
|
|
||||||
ORDER_DEPENDENT_TRAIT_OBJECTS,
|
|
||||||
COHERENCE_LEAK_CHECK,
|
|
||||||
DEPRECATED,
|
|
||||||
UNUSED_UNSAFE,
|
|
||||||
UNUSED_MUT,
|
|
||||||
UNCONDITIONAL_RECURSION,
|
|
||||||
SINGLE_USE_LIFETIMES,
|
|
||||||
UNUSED_LIFETIMES,
|
|
||||||
UNUSED_LABELS,
|
|
||||||
TYVAR_BEHIND_RAW_POINTER,
|
TYVAR_BEHIND_RAW_POINTER,
|
||||||
ELIDED_LIFETIMES_IN_PATHS,
|
UNCONDITIONAL_PANIC,
|
||||||
BARE_TRAIT_OBJECTS,
|
UNCONDITIONAL_RECURSION,
|
||||||
ABSOLUTE_PATHS_NOT_STARTING_WITH_CRATE,
|
UNDEFINED_NAKED_FUNCTION_ABI,
|
||||||
UNSTABLE_NAME_COLLISIONS,
|
UNFULFILLED_LINT_EXPECTATIONS,
|
||||||
IRREFUTABLE_LET_PATTERNS,
|
|
||||||
WHERE_CLAUSES_OBJECT_SAFETY,
|
|
||||||
PROC_MACRO_DERIVE_RESOLUTION_FALLBACK,
|
|
||||||
MACRO_USE_EXTERN_CRATE,
|
|
||||||
MACRO_EXPANDED_MACRO_EXPORTS_ACCESSED_BY_ABSOLUTE_PATHS,
|
|
||||||
ILL_FORMED_ATTRIBUTE_INPUT,
|
|
||||||
CONFLICTING_REPR_HINTS,
|
|
||||||
META_VARIABLE_MISUSE,
|
|
||||||
DEPRECATED_IN_FUTURE,
|
|
||||||
AMBIGUOUS_ASSOCIATED_ITEMS,
|
|
||||||
INDIRECT_STRUCTURAL_MATCH,
|
|
||||||
POINTER_STRUCTURAL_MATCH,
|
|
||||||
NONTRIVIAL_STRUCTURAL_MATCH,
|
|
||||||
SOFT_UNSTABLE,
|
|
||||||
UNSTABLE_SYNTAX_PRE_EXPANSION,
|
|
||||||
INLINE_NO_SANITIZE,
|
|
||||||
BAD_ASM_STYLE,
|
|
||||||
ASM_SUB_REGISTER,
|
|
||||||
UNSAFE_OP_IN_UNSAFE_FN,
|
|
||||||
INCOMPLETE_INCLUDE,
|
|
||||||
CENUM_IMPL_DROP_CAST,
|
|
||||||
FUZZY_PROVENANCE_CASTS,
|
|
||||||
LOSSY_PROVENANCE_CASTS,
|
|
||||||
CONST_EVALUATABLE_UNCHECKED,
|
|
||||||
INEFFECTIVE_UNSTABLE_TRAIT_IMPL,
|
|
||||||
MUST_NOT_SUSPEND,
|
|
||||||
UNINHABITED_STATIC,
|
UNINHABITED_STATIC,
|
||||||
FUNCTION_ITEM_REFERENCES,
|
UNKNOWN_CRATE_TYPES,
|
||||||
USELESS_DEPRECATED,
|
UNKNOWN_LINTS,
|
||||||
MISSING_ABI,
|
UNREACHABLE_CODE,
|
||||||
INVALID_DOC_ATTRIBUTES,
|
UNREACHABLE_PATTERNS,
|
||||||
SEMICOLON_IN_EXPRESSIONS_FROM_MACROS,
|
UNSAFE_OP_IN_UNSAFE_FN,
|
||||||
RUST_2021_INCOMPATIBLE_CLOSURE_CAPTURES,
|
UNSTABLE_NAME_COLLISIONS,
|
||||||
LEGACY_DERIVE_HELPERS,
|
UNSTABLE_SYNTAX_PRE_EXPANSION,
|
||||||
PROC_MACRO_BACK_COMPAT,
|
|
||||||
RUST_2021_INCOMPATIBLE_OR_PATTERNS,
|
|
||||||
LARGE_ASSIGNMENTS,
|
|
||||||
RUST_2021_PRELUDE_COLLISIONS,
|
|
||||||
RUST_2021_PREFIXES_INCOMPATIBLE_SYNTAX,
|
|
||||||
UNSUPPORTED_CALLING_CONVENTIONS,
|
UNSUPPORTED_CALLING_CONVENTIONS,
|
||||||
BREAK_WITH_LABEL_AND_LOOP,
|
UNUSED_ASSIGNMENTS,
|
||||||
UNUSED_ATTRIBUTES,
|
UNUSED_ATTRIBUTES,
|
||||||
|
UNUSED_CRATE_DEPENDENCIES,
|
||||||
|
UNUSED_EXTERN_CRATES,
|
||||||
|
UNUSED_FEATURES,
|
||||||
|
UNUSED_IMPORTS,
|
||||||
|
UNUSED_LABELS,
|
||||||
|
UNUSED_LIFETIMES,
|
||||||
|
UNUSED_MACRO_RULES,
|
||||||
|
UNUSED_MACROS,
|
||||||
|
UNUSED_MUT,
|
||||||
|
UNUSED_QUALIFICATIONS,
|
||||||
UNUSED_TUPLE_STRUCT_FIELDS,
|
UNUSED_TUPLE_STRUCT_FIELDS,
|
||||||
NON_EXHAUSTIVE_OMITTED_PATTERNS,
|
UNUSED_UNSAFE,
|
||||||
TEXT_DIRECTION_CODEPOINT_IN_COMMENT,
|
UNUSED_VARIABLES,
|
||||||
DEPRECATED_CFG_ATTR_CRATE_TYPE_NAME,
|
USELESS_DEPRECATED,
|
||||||
DUPLICATE_MACRO_ATTRIBUTES,
|
WARNINGS,
|
||||||
SUSPICIOUS_AUTO_TRAIT_IMPLS,
|
WHERE_CLAUSES_OBJECT_SAFETY,
|
||||||
DEPRECATED_WHERE_CLAUSE_LOCATION,
|
// tidy-alphabetical-end
|
||||||
TEST_UNSTABLE_LINT,
|
|
||||||
FFI_UNWIND_CALLS,
|
|
||||||
REPR_TRANSPARENT_EXTERNAL_PRIVATE_FIELDS,
|
|
||||||
NAMED_ARGUMENTS_USED_POSITIONALLY,
|
|
||||||
IMPLIED_BOUNDS_ENTAILMENT,
|
|
||||||
BYTE_SLICE_IN_PACKED_STRUCT_WITH_DERIVE,
|
|
||||||
AMBIGUOUS_GLOB_REEXPORTS,
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
error: `#[macro_export]` can only take 1 or 0 arguments
|
||||||
|
--> $DIR/invalid_macro_export_argument.rs:7:1
|
||||||
|
|
|
||||||
|
LL | #[macro_export(hello, world)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/invalid_macro_export_argument.rs:4:24
|
||||||
|
|
|
||||||
|
LL | #![cfg_attr(deny, deny(invalid_macro_export_arguments))]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error: `not_local_inner_macros` isn't a valid `#[macro_export]` argument
|
||||||
|
--> $DIR/invalid_macro_export_argument.rs:13:16
|
||||||
|
|
|
||||||
|
LL | #[macro_export(not_local_inner_macros)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
@ -1,10 +1,17 @@
|
|||||||
// check-pass
|
// revisions: deny allow
|
||||||
#[macro_export(hello, world)] //~ WARN `#[macro_export]` can only take 1 or 0 arguments
|
//[allow] check-pass
|
||||||
|
|
||||||
|
#![cfg_attr(deny, deny(invalid_macro_export_arguments))]
|
||||||
|
#![cfg_attr(allow, allow(invalid_macro_export_arguments))]
|
||||||
|
|
||||||
|
#[macro_export(hello, world)]
|
||||||
|
//[deny]~^ ERROR `#[macro_export]` can only take 1 or 0 arguments
|
||||||
macro_rules! a {
|
macro_rules! a {
|
||||||
() => ()
|
() => ()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[macro_export(not_local_inner_macros)] //~ WARN `not_local_inner_macros` isn't a valid `#[macro_export]` argument
|
#[macro_export(not_local_inner_macros)]
|
||||||
|
//[deny]~^ ERROR `not_local_inner_macros` isn't a valid `#[macro_export]` argument
|
||||||
macro_rules! b {
|
macro_rules! b {
|
||||||
() => ()
|
() => ()
|
||||||
}
|
}
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
warning: `#[macro_export]` can only take 1 or 0 arguments
|
|
||||||
--> $DIR/invalid_macro_export_argument.rs:2:1
|
|
||||||
|
|
|
||||||
LL | #[macro_export(hello, world)]
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
|
||||||
= note: `#[warn(invalid_macro_export_arguments)]` on by default
|
|
||||||
|
|
||||||
warning: `not_local_inner_macros` isn't a valid `#[macro_export]` argument
|
|
||||||
--> $DIR/invalid_macro_export_argument.rs:7:16
|
|
||||||
|
|
|
||||||
LL | #[macro_export(not_local_inner_macros)]
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
warning: 2 warnings emitted
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user