Skip to content

Combined unused lints - #4797

Open
lucasly-ba wants to merge 7 commits into
Rust-GCC:masterfrom
lucasly-ba:combined-unused-lints
Open

lucasly-ba wants to merge 7 commits into
Rust-GCC:masterfrom
lucasly-ba:combined-unused-lints

Conversation

@lucasly-ba

Copy link
Copy Markdown
Contributor

As requested by @philberty on #4639, a single PR combining #4622, #4623, #4624, #4626, #4629, #4639 and #4642

@philberty

Copy link
Copy Markdown
Member

the commit format needs fixed up

gcc/rust/ChangeLog:

	* checks/lints/unused/rust-unused-checker.cc (BoolLiteral): New.
	(ConstantTruth): New.
	(UnusedChecker::visit): New.
	* checks/lints/unused/rust-unused-checker.h (UnusedChecker::visit):
	New.

gcc/testsuite/ChangeLog:

	* rust/compile/while-true_0.rs: New test.

Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
gcc/rust/ChangeLog:

	* checks/lints/unused/rust-unused-checker.cc (UnusedChecker::visit):
	New.
	* checks/lints/unused/rust-unused-checker.h (UnusedChecker::visit):
	New.
	* rust-lang.cc (grs_langhook_init_options_struct): Enable warn_unused_value.

gcc/testsuite/ChangeLog:

	* rust/compile/path-statements_0.rs: New test.

Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
gcc/rust/ChangeLog:

	* checks/lints/unused/rust-unused-checker.cc (UnusedChecker::visit):
	New.

gcc/testsuite/ChangeLog:

	* rust/compile/unreachable-patterns_0.rs: New test.

Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
gcc/rust/ChangeLog:

	* checks/lints/unused/rust-unused-checker.cc (UnusedChecker::visit):
	New.
	* checks/lints/unused/rust-unused-checker.h (UnusedChecker::visit):
	New.
	* rust-lang.cc (grs_langhook_init_options_struct): Enable warn_type_limits.

gcc/testsuite/ChangeLog:

	* rust/compile/unused-comparisons_0.rs: New test.

Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
gcc/rust/ChangeLog:

	* checks/lints/unused/rust-unused-checker.cc (is_numeric): New.
	(UnusedChecker::visit): New.
	* checks/lints/unused/rust-unused-checker.h (UnusedChecker::visit):
	New.

gcc/testsuite/ChangeLog:

	* rust/compile/trivial-numeric-casts_0.rs: New test.

Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
Warn on bounds applied to the generic parameters of a type alias, as
those bounds are not enforced.

gcc/rust/ChangeLog:

	* checks/lints/unused/rust-unused-checker.cc (UnusedChecker::visit):
	New.
	* checks/lints/unused/rust-unused-checker.h (UnusedChecker::visit):
	New.

gcc/testsuite/ChangeLog:

	* rust/compile/type-alias-bounds_0.rs: New test.

Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
Warn when two range patterns in a match overlap on a single endpoint,
for example `0..=5` and `5..=10` which both match `5`.

gcc/rust/ChangeLog:

	* checks/lints/unused/rust-unused-checker.cc
	(UnusedChecker::visit(HIR::MatchExpr)): Warn on overlapping range
	endpoints.

gcc/testsuite/ChangeLog:

	* rust/compile/overlapping-range-endpoints_0.rs: New test.

Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
@lucasly-ba
lucasly-ba force-pushed the combined-unused-lints branch 2 times, most recently from 57628b2 to cfbde77 Compare September 6, 2026 15:16
@lucasly-ba

Copy link
Copy Markdown
Contributor Author

@philberty should be good

@CohenArthur CohenArthur left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for the work, that's really good!

Comment on lines +352 to +356
if (!arm.has_match_arm_guard ()
&& arm.get_pattern ()->get_pattern_type ()
== HIR::Pattern::PatternType::WILDCARD)
seen_irrefutable = true;
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so this just checks if we've seen a wildcard pattern and calls it irrefutable, which seems wrong. we should check that we've seen an actually irrefutable pattern (which we have the infrastructure for, grep for refutable or irrefutable to find the impl). for example something like this is not a wildcard pattern but should still trigger the unreachable pattern warning

    let some_i32 = 15;

    match some_i32 {
        14 => {},
        15 => {},
        x => {},
        17 => {},
    };

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants