rust/tests/ui/lint
Michael Goulet 9d4527bc80
Rollup merge of #111757 - lowr:fix/lint-attr-on-match-arm, r=eholk
Consider lint check attributes on match arms

Currently, lint check attributes on match arms have no effect for some lints. This PR makes some lint passes to take those attributes into account.

- `LateContextAndPass` for late lint doesn't update `last_node_with_lint_attrs` when it visits match arms. This leads to lint check attributes on match arms taking no effects on late lints that operate on the arms' pattern:

  ```rust
  match value {
      #[deny(non_snake_case)]
      PAT => {} // `non_snake_case` only warned due to default lint level
  }
  ```

  To be honest, I'm not sure whether this is intentional or just an oversight. I've dug the implementation history and searched up issues/PRs but couldn't find any discussion on this.

- `MatchVisitor` doesn't update its lint level when it visits match arms. This leads to check lint attributes on match arms taking no effect on some lints handled by this visitor, namely: `bindings_with_variant_name` and `irrefutable_let_patterns`.

  This seems to be a fallout from #108504. Before 05082f57af, when the visitor operated on HIR rather than THIR, check lint attributes for the said lints were effective. [This playground][play] compiles successfully on current stable (1.69) but fails on current beta and nightly.

  I wasn't sure where best to place the test for this. Let me know if there's a better place.

[play]: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=38432b79e535cb175f8f7d6d236d29c3
[play-match]: https://play.rust-lang.org/?version=beta&mode=debug&edition=2021&gist=629aa71b7c84b269beadeba664e2221d
2023-05-25 13:58:00 -07:00
..
auxiliary
dead-code
force-warn
internal Check arguments length in trivial diagnostic lint 2023-05-06 14:42:35 +01:00
known-tool-in-submodule
let_underscore
must_not_suspend
redundant-semicolon
rfc-2383-lint-reason
rfc-2457-non-ascii-idents
semicolon-in-expressions-from-macros
unsafe_code
unused Dont check must_use on nested impl Future from fn 2023-05-12 02:08:43 +00:00
use-redundant
anonymous-reexport.rs
anonymous-reexport.stderr
bad-lint-cap2.rs
bad-lint-cap2.stderr
bad-lint-cap3.rs
bad-lint-cap3.stderr
bad-lint-cap.rs
bad-lint-cap.stderr
bare-trait-objects-path.rs
bare-trait-objects-path.stderr
clashing-extern-fn-recursion.rs
clashing-extern-fn-wasm.rs
clashing-extern-fn.rs
clashing-extern-fn.stderr
cli-lint-override.forbid_warn.stderr
cli-lint-override.force_warn_deny.stderr
cli-lint-override.rs
cli-lint-override.warn_deny.stderr
cli-unknown-force-warn.rs
cli-unknown-force-warn.stderr
command-line-lint-group-allow.rs
command-line-lint-group-deny.rs
command-line-lint-group-deny.stderr
command-line-lint-group-forbid.rs
command-line-lint-group-forbid.stderr
command-line-lint-group-warn.rs
command-line-lint-group-warn.stderr
command-line-register-lint-tool.rs
command-line-register-unknown-lint-tool.rs
command-line-register-unknown-lint-tool.stderr
crate_level_only_lint.rs
crate_level_only_lint.stderr
deny-overflowing-literals.rs
deny-overflowing-literals.stderr
dropping_copy_types.rs Rename drop_copy lint to dropping_copy_types 2023-05-21 13:37:32 +02:00
dropping_copy_types.stderr Rename drop_ref lint to dropping_references 2023-05-21 14:16:41 +02:00
dropping_references.rs Rename drop_ref lint to dropping_references 2023-05-21 14:16:41 +02:00
dropping_references.stderr Rename drop_ref lint to dropping_references 2023-05-21 14:16:41 +02:00
empty-lint-attributes.rs
enable-unstable-lib-feature.rs
enable-unstable-lib-feature.stderr
expansion-time-include.rs
expansion-time.rs
expansion-time.stderr
expr_attr_paren_order.rs
expr_attr_paren_order.stderr
fn_must_use.rs
fn_must_use.stderr
for_loop_over_fallibles.rs
for_loop_over_fallibles.stderr
forbid-error-capped.rs
forbid-group-group-1.rs
forbid-group-group-1.stderr
forbid-group-group-2.rs
forbid-group-group-2.stderr
forbid-group-member.rs
forbid-group-member.stderr
forbid-member-group.rs
forbid-member-group.stderr
forgetting_copy_types.rs Rename forget_copy lint to forgetting_copy_types 2023-05-21 14:09:03 +02:00
forgetting_copy_types.stderr Rename forget_ref lint to forgetting_references 2023-05-21 14:28:09 +02:00
forgetting_references.rs Rename forget_ref lint to forgetting_references 2023-05-21 14:28:09 +02:00
forgetting_references.stderr Rename forget_ref lint to forgetting_references 2023-05-21 14:28:09 +02:00
function-item-references.rs
function-item-references.stderr
future-incompat-test.rs
future-incompat-test.stderr
inclusive-range-pattern-syntax.fixed
inclusive-range-pattern-syntax.rs
inclusive-range-pattern-syntax.stderr
inert-attr-macro.rs
inert-attr-macro.stderr
inline-trait-and-foreign-items.rs
inline-trait-and-foreign-items.stderr
invalid_value-polymorphic.rs Rename InstCombine to InstSimplify 2023-05-06 23:22:32 -04:00
invalid_value.rs
invalid_value.stderr
issue-1866.rs
issue-1866.stderr
issue-14309.rs
issue-14309.stderr
issue-14837.rs
issue-17718-const-naming.rs
issue-17718-const-naming.stderr
issue-20343.rs
issue-30302.rs
issue-30302.stderr
issue-31924-non-snake-ffi.rs
issue-34798.rs
issue-35075.rs
issue-35075.stderr
issue-47775-nested-macro-unnecessary-parens-arg.rs
issue-49588-non-shorthand-field-patterns-in-pattern-macro.rs
issue-54099-camel-case-underscore-types.rs
issue-57410-1.rs
issue-57410.rs
issue-63364.rs
issue-63364.stderr
issue-66362-no-snake-case-warning-for-field-puns.rs
issue-66362-no-snake-case-warning-for-field-puns.stderr
issue-70819-dont-override-forbid-in-same-scope.rs
issue-70819-dont-override-forbid-in-same-scope.stderr
issue-79546-fuel-ice.rs
issue-79744.rs
issue-79744.stderr
issue-80988.rs
issue-80988.stderr
issue-81218.rs
issue-83477.rs
issue-83477.stderr
issue-86600-lint-twice.rs
issue-86600-lint-twice.stderr
issue-87274-paren-parent.rs
issue-87274-paren-parent.stderr
issue-89469.rs
issue-90614-accept-allow-text-direction-codepoint-in-comment-lint.rs
issue-97094.rs
issue-97094.stderr
issue-99387.rs
issue-101284.rs
issue-102705.rs
issue-103317.fixed
issue-103317.rs
issue-103317.stderr
issue-103435-extra-parentheses.fixed
issue-103435-extra-parentheses.rs
issue-103435-extra-parentheses.stderr
issue-104392.rs
issue-104392.stderr
issue-104897.rs
issue-104897.stderr
issue-106991.rs
issue-106991.stderr
issue-108155.rs
issue-109152.rs
issue-109152.stderr
issue-109529.fixed
issue-109529.rs
issue-109529.stderr
issue-110573.rs
issue-111359.rs Populate effective visibilities in rustc_privacy 2023-05-11 14:51:01 +03:00
issue-111359.stderr Populate effective visibilities in rustc_privacy 2023-05-11 14:51:01 +03:00
lint_map_unit_fn.rs
lint_map_unit_fn.stderr
lint_pre_expansion_extern_module_aux.rs
lint-attr-everywhere-early.rs Consider lint check attributes on match arms in late lints 2023-05-19 19:04:10 +09:00
lint-attr-everywhere-early.stderr Consider lint check attributes on match arms in late lints 2023-05-19 19:04:10 +09:00
lint-attr-everywhere-late.rs Consider lint check attributes on match arms in late lints 2023-05-19 19:04:10 +09:00
lint-attr-everywhere-late.stderr Consider lint check attributes on match arms in late lints 2023-05-19 19:04:10 +09:00
lint-attr-non-item-node.rs
lint-attr-non-item-node.stderr
lint-cap.rs
lint-change-warnings.rs
lint-change-warnings.stderr
lint-const-item-mutation.rs
lint-const-item-mutation.stderr
lint-ctypes-66202.rs
lint-ctypes-73249-1.rs
lint-ctypes-73249-2.rs
lint-ctypes-73249-2.stderr
lint-ctypes-73249-3.rs
lint-ctypes-73249-3.stderr
lint-ctypes-73249-4.rs
lint-ctypes-73249-5.rs
lint-ctypes-73249-5.stderr
lint-ctypes-73249.rs
lint-ctypes-73251-1.rs
lint-ctypes-73251-1.stderr
lint-ctypes-73251-2.rs
lint-ctypes-73251-2.stderr
lint-ctypes-73251.rs
lint-ctypes-73747.rs
lint-ctypes-enum.rs
lint-ctypes-enum.stderr
lint-ctypes-fn.rs
lint-ctypes-fn.stderr
lint-ctypes.rs
lint-ctypes.stderr
lint-deref-nullptr.rs
lint-deref-nullptr.stderr
lint-directives-on-use-items-issue-10534.rs
lint-directives-on-use-items-issue-10534.stderr
lint-enum-intrinsics-non-enums.rs
lint-enum-intrinsics-non-enums.stderr
lint-exceeding-bitshifts.noopt.stderr
lint-exceeding-bitshifts.opt_with_overflow_checks.stderr
lint-exceeding-bitshifts.opt.stderr
lint-exceeding-bitshifts.rs
lint-expr-stmt-attrs-for-early-lints.rs
lint-ffi-safety-all-phantom.rs
lint-forbid-attr.rs
lint-forbid-attr.stderr
lint-forbid-cmdline.rs
lint-forbid-cmdline.stderr
lint-forbid-internal-unsafe.rs
lint-forbid-internal-unsafe.stderr
lint-group-nonstandard-style.rs
lint-group-nonstandard-style.stderr
lint-impl-fn.rs
lint-impl-fn.stderr
lint-incoherent-auto-trait-objects.rs
lint-incoherent-auto-trait-objects.stderr
lint-invalid-atomic-ordering-bool.rs
lint-invalid-atomic-ordering-bool.stderr
lint-invalid-atomic-ordering-exchange-weak.rs
lint-invalid-atomic-ordering-exchange-weak.stderr
lint-invalid-atomic-ordering-exchange.rs
lint-invalid-atomic-ordering-exchange.stderr
lint-invalid-atomic-ordering-false-positive.rs
lint-invalid-atomic-ordering-fence.rs
lint-invalid-atomic-ordering-fence.stderr
lint-invalid-atomic-ordering-fetch-update.rs
lint-invalid-atomic-ordering-fetch-update.stderr
lint-invalid-atomic-ordering-int.rs
lint-invalid-atomic-ordering-int.stderr
lint-invalid-atomic-ordering-ptr.rs
lint-invalid-atomic-ordering-ptr.stderr
lint-invalid-atomic-ordering-uint.rs
lint-invalid-atomic-ordering-uint.stderr
lint-level-macro-def-mod.rs
lint-level-macro-def.rs
lint-lowercase-static-const-pattern-rename.rs
lint-lowercase-static-const-pattern.rs
lint-lowercase-static-const-pattern.stderr
lint-malformed.rs
lint-malformed.stderr
lint-match-arms-2.rs Consider lint check attributes on match arms in match checks 2023-05-19 19:04:15 +09:00
lint-match-arms-2.stderr Consider lint check attributes on match arms in match checks 2023-05-19 19:04:15 +09:00
lint-match-arms.rs
lint-match-arms.stderr
lint-misplaced-attr.rs
lint-misplaced-attr.stderr
lint-missing-copy-implementations-allow.rs
lint-missing-copy-implementations.rs
lint-missing-copy-implementations.stderr
lint-missing-doc.rs delete whitelist and add checks to check_item() for missing_docs 2023-05-06 18:31:50 -04:00
lint-missing-doc.stderr delete whitelist and add checks to check_item() for missing_docs 2023-05-06 18:31:50 -04:00
lint-non-camel-case-types.rs
lint-non-camel-case-types.stderr
lint-non-camel-case-variant.rs
lint-non-camel-case-with-trailing-underscores.rs
lint-non-snake-case-crate-2.rs
lint-non-snake-case-crate-2.stderr
lint-non-snake-case-crate.rs
lint-non-snake-case-crate.stderr
lint-non-snake-case-functions.rs
lint-non-snake-case-functions.stderr
lint-non-snake-case-identifiers-suggestion-reserved.rs
lint-non-snake-case-identifiers-suggestion-reserved.stderr
lint-non-snake-case-lifetimes.rs
lint-non-snake-case-lifetimes.stderr
lint-non-snake-case-modules.rs
lint-non-snake-case-modules.stderr
lint-non-snake-case-no-lowercase-equivalent.rs
lint-non-uppercase-associated-const.rs
lint-non-uppercase-associated-const.stderr
lint-non-uppercase-statics.rs
lint-non-uppercase-statics.stderr
lint-non-uppercase-trait-assoc-const.rs
lint-non-uppercase-trait-assoc-const.stderr
lint-nonstandard-style-unicode-1.rs
lint-nonstandard-style-unicode-1.stderr
lint-nonstandard-style-unicode-2.rs
lint-nonstandard-style-unicode-2.stderr
lint-nonstandard-style-unicode-3.rs
lint-nonstandard-style-unicode-3.stderr
lint-output-format-2.rs
lint-output-format-2.stderr
lint-output-format.rs
lint-output-format.stderr
lint-owned-heap-memory.rs
lint-owned-heap-memory.stderr
lint-pre-expansion-extern-module.rs
lint-pre-expansion-extern-module.stderr
lint-pub-unreachable-for-nested-glob.rs
lint-qualification.rs
lint-qualification.stderr
lint-range-endpoint-overflow.rs
lint-range-endpoint-overflow.stderr
lint-removed-allow.rs
lint-removed-allow.stderr
lint-removed-cmdline.rs
lint-removed-cmdline.stderr
lint-removed.rs
lint-removed.stderr
lint-renamed-allow.rs
lint-renamed-allow.stderr
lint-renamed-cmdline.rs
lint-renamed-cmdline.stderr
lint-renamed.rs
lint-renamed.stderr
lint-shorthand-field.fixed
lint-shorthand-field.rs
lint-shorthand-field.stderr
lint-stability2.rs
lint-stability2.stderr
lint-stability3.rs
lint-stability3.stderr
lint-stability-2.rs
lint-stability-2.stderr
lint-stability-deprecated.rs
lint-stability-deprecated.stderr
lint-stability-fields-deprecated.rs
lint-stability-fields-deprecated.stderr
lint-stability-fields.rs
lint-stability-fields.stderr
lint-stability.rs
lint-stability.stderr
lint-strict-provenance-fuzzy-casts.rs
lint-strict-provenance-fuzzy-casts.stderr
lint-strict-provenance-lossy-casts.rs
lint-strict-provenance-lossy-casts.stderr
lint-temporary-cstring-as-param.rs
lint-temporary-cstring-as-param.stderr
lint-temporary-cstring-as-ptr.rs
lint-temporary-cstring-as-ptr.stderr
lint-type-limits2.rs
lint-type-limits2.stderr
lint-type-limits3.rs
lint-type-limits3.stderr
lint-type-limits.rs
lint-type-limits.stderr
lint-type-overflow2.rs
lint-type-overflow2.stderr
lint-type-overflow.rs
lint-type-overflow.stderr
lint-unconditional-recursion.rs
lint-unconditional-recursion.stderr
lint-unexported-no-mangle.rs
lint-unexported-no-mangle.stderr
lint-unknown-feature-default.rs
lint-unknown-feature.rs
lint-unknown-lint-cmdline.rs
lint-unknown-lint-cmdline.stderr
lint-unknown-lint.rs
lint-unknown-lint.stderr
lint-unnecessary-import-braces.rs
lint-unnecessary-import-braces.stderr
lint-unnecessary-parens.fixed
lint-unnecessary-parens.rs
lint-unnecessary-parens.stderr
lint-unsafe-code.rs
lint-unsafe-code.stderr
lint-uppercase-variables.rs
lint-uppercase-variables.stderr
lints-in-foreign-macros.rs
lints-in-foreign-macros.stderr
missing-doc-private-macro.rs
missing-doc-private-macro.stderr
no-coverage.rs
no-coverage.stderr
noop-method-call.rs
noop-method-call.stderr
not_found.rs
not_found.stderr
opaque-ty-ffi-normalization-cycle.rs
opaque-ty-ffi-normalization-cycle.stderr
opaque-ty-ffi-unsafe.rs
opaque-ty-ffi-unsafe.stderr
outer-forbid.rs
outer-forbid.stderr
reasons-erroneous.rs
reasons-erroneous.stderr
reasons-forbidden.rs
reasons-forbidden.stderr
reasons.rs
reasons.stderr
recommend-literal.rs
recommend-literal.stderr
register-tool-lint.rs
register-tool-lint.stderr
renamed-lints-still-apply.rs
renamed-lints-still-apply.stderr
rustdoc-group.rs
rustdoc-group.stderr
rustdoc-renamed.rs
rustdoc-renamed.stderr
special-upper-lower-cases.rs
special-upper-lower-cases.stderr
suggestions.fixed
suggestions.rs
suggestions.stderr
suspicious-double-ref-op.rs
suspicious-double-ref-op.stderr
test-allow-dead-extern-static-no-warning.rs
test-inner-fn.rs
test-inner-fn.stderr
trivial_casts.rs
trivial_casts.stderr
trivial-cast-ice.rs
trivial-casts-featuring-type-ascription.rs
trivial-casts-featuring-type-ascription.stderr
trivial-casts.rs
trivial-casts.stderr
type-overflow.rs
type-overflow.stderr
unaligned_references_external_macro.rs
unaligned_references_external_macro.stderr improve error notes for packed struct reference diagnostic 2023-04-28 20:28:56 -05:00
unaligned_references.rs
unaligned_references.stderr improve error notes for packed struct reference diagnostic 2023-04-28 20:28:56 -05:00
unconditional_panic_98444.rs
unconditional_panic_98444.stderr
unnecessary-extern-crate.rs
unnecessary-extern-crate.stderr
unreachable_pub.rs
unreachable_pub.stderr
unreachable-async-fn.rs
unused_braces_borrow.fixed
unused_braces_borrow.rs
unused_braces_borrow.stderr
unused_braces_macro.rs
unused_braces.fixed
unused_braces.rs
unused_braces.stderr
unused_import_warning_issue_45268.rs
unused_import_warning_issue_45268.stderr
unused_labels.rs
unused_labels.stderr
unused_parens_json_suggestion.fixed
unused_parens_json_suggestion.rs
unused_parens_json_suggestion.stderr
unused_parens_multibyte_recovery.rs
unused_parens_multibyte_recovery.stderr
unused_parens_remove_json_suggestion.fixed
unused_parens_remove_json_suggestion.rs
unused_parens_remove_json_suggestion.stderr
unused_variables-issue-82488.fixed
unused_variables-issue-82488.rs
unused_variables-issue-82488.stderr
unused-borrows.rs
unused-borrows.stderr
unused-braces-while-let-with-mutable-value.rs
unused-qualification-in-derive-expansion.rs
use_suggestion_json.rs
use_suggestion_json.stderr
warn-ctypes-inhibit.rs
warn-path-statement.rs
warn-path-statement.stderr
warn-unused-inline-on-fn-prototypes.rs
warn-unused-inline-on-fn-prototypes.stderr