disallowed_methods: Support functions in addition to methods #6674
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context:
Hey all! I have a particular use case where I'd like to ban certain functions in a code base I work on. For example, I want to ban
Instant::now()
(among others) as we have a time service for mocking time in deterministic simulation tests. Obviously, it doesn't make sense to include a lint like this for all clippy users. Imagine my excitement when I spotted the newdisallowed_methods
lint in clippy--perfect! Unfortunately, after playing around with it for a bit, I was frustrated to realize that it didn't support functions likeInstant::now()
, so I've added support for them in this PR.It might also make sense to rename the lint from
disallowed_methods
->disallowed_functions
, though I've held off from including that rename in this change, since I'm unsure of clippy's breaking change policy.Change
Support functions in addition to methods. In other words, support:
disallowed_methods = ["alloc::vec::Vec::new"]
(a function) in addition todisallowed_methods = ["alloc::vec::Vec::leak"]
(a method).Improve the documentation to clarify that users must specify the full qualified path for each disallowed function, which can be confusing for reexports. Include an example
clippy.toml
.Simplify the actual lint pass so we can reuse
utils::fn_def_id
.changelog: disallowed_method: Now supports functions in addition to methods