rust/compiler
Mara e6a6df5daa
Rollup merge of #80723 - rylev:noop-lint-pass, r=estebank
Implement NOOP_METHOD_CALL lint

Implements the beginnings of https://github.com/rust-lang/lang-team/issues/67 - a lint for detecting noop method calls (e.g, calling `<&T as Clone>::clone()` when `T: !Clone`).

This PR does not fully realize the vision and has a few limitations that need to be addressed either before merging or in subsequent PRs:
* [ ] No UFCS support
* [ ] The warning message is pretty plain
* [ ] Doesn't work for `ToOwned`

The implementation uses [`Instance::resolve`](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/instance/struct.Instance.html#method.resolve) which is normally later in the compiler. It seems that there are some invariants that this function relies on that we try our best to respect. For instance, it expects substitutions to have happened, which haven't yet performed, but we check first for `needs_subst` to ensure we're dealing with a monomorphic type.

Thank you to ```@davidtwco,``` ```@Aaron1011,``` and ```@wesleywiser``` for helping me at various points through out this PR ❤️.
2021-03-05 10:57:14 +01:00
..
rustc
rustc_apfloat bumped smallvec deps 2021-02-14 18:03:11 +03:00
rustc_arena Update the bootstrap compiler 2021-02-20 17:19:30 -05:00
rustc_ast Rename rustdoc lints to be a tool lint instead of built-in. 2021-03-01 19:29:15 -05:00
rustc_ast_lowering Auto merge of #82447 - Amanieu:legacy_const_generics, r=oli-obk 2021-02-25 18:14:50 +00:00
rustc_ast_passes Rollup merge of #82296 - spastorino:pubrules, r=nikomatsakis 2021-02-23 16:10:23 +01:00
rustc_ast_pretty Rollup merge of #82238 - petrochenkov:nocratemod, r=Aaron1011 2021-02-19 02:49:08 +01:00
rustc_attr Auto merge of #71481 - estebank:inherit-stability, r=nikomatsakis 2021-03-05 05:28:07 +00:00
rustc_builtin_macros Remove some P-s 2021-02-20 10:51:26 +01:00
rustc_codegen_cranelift Rollup merge of #81940 - jhpratt:stabilize-str_split_once, r=m-ou-se 2021-02-26 15:52:29 +01:00
rustc_codegen_llvm Auto merge of #81451 - nikic:llvm-12, r=nagisa 2021-03-04 15:16:44 +00:00
rustc_codegen_ssa Rollup merge of #80723 - rylev:noop-lint-pass, r=estebank 2021-03-05 10:57:14 +01:00
rustc_data_structures Rollup merge of #82537 - wesleywiser:update_measureme, r=oli-obk 2021-02-27 21:56:20 +01:00
rustc_driver Auto merge of #82304 - LeSeulArtichaut:unpretty-ast, r=spastorino 2021-03-04 05:46:43 +00:00
rustc_error_codes Rollup merge of #80527 - jyn514:rustdoc-lints, r=GuillaumeGomez 2021-03-04 20:01:01 +09:00
rustc_errors Even faster counting of digits for error line numbers 2021-02-27 15:28:58 +01:00
rustc_expand Auto merge of #71481 - estebank:inherit-stability, r=nikomatsakis 2021-03-05 05:28:07 +00:00
rustc_feature Rollup merge of #82697 - jplatte:patch-1, r=davidtwco 2021-03-04 20:01:07 +09:00
rustc_fs_util Optimize away a fs::metadata call. 2021-01-06 08:33:15 -08:00
rustc_graphviz remove redundant closures (clippy::redundant_closure) 2021-01-03 13:34:24 +01:00
rustc_hir Miscellaneous inlining improvements 2021-02-26 00:00:00 +00:00
rustc_hir_pretty Auto merge of #81611 - cjgillot:meowner, r=estebank 2021-02-16 22:14:32 +00:00
rustc_incremental Print -Ztime-passes (and misc stats/logs) on stderr, not stdout. 2021-02-18 14:13:38 +02:00
rustc_index Miscellaneous inlining improvements 2021-02-26 00:00:00 +00:00
rustc_infer Rollup merge of #82635 - pierwill:edit-infer, r=oli-obk 2021-03-01 11:25:10 -05:00
rustc_interface Use optional values for inlining thresholds 2021-02-27 10:19:19 +01:00
rustc_lexer Return EOF_CHAR constant instead of magic char. 2021-01-07 13:20:04 +01:00
rustc_lint Rollup merge of #80723 - rylev:noop-lint-pass, r=estebank 2021-03-05 10:57:14 +01:00
rustc_lint_defs Address review comments 2021-03-01 19:29:15 -05:00
rustc_llvm Schedule ThinLTOBuffer passes again after sanitizer passes 2021-03-03 20:48:37 +01:00
rustc_macros replaced some map_or with map_or_else 2021-02-24 02:43:35 +03:00
rustc_metadata Add #[rustc_legacy_const_generics] 2021-02-23 17:25:55 +00:00
rustc_middle Rollup merge of #80723 - rylev:noop-lint-pass, r=estebank 2021-03-05 10:57:14 +01:00
rustc_mir Rollup merge of #80723 - rylev:noop-lint-pass, r=estebank 2021-03-05 10:57:14 +01:00
rustc_mir_build Rollup merge of #80723 - rylev:noop-lint-pass, r=estebank 2021-03-05 10:57:14 +01:00
rustc_parse Rollup merge of #82579 - osa1:issue82566, r=estebank 2021-03-02 21:23:17 +09:00
rustc_parse_format parse_format: treat r" as a literal 2021-02-06 15:01:07 +00:00
rustc_passes Auto merge of #71481 - estebank:inherit-stability, r=nikomatsakis 2021-03-05 05:28:07 +00:00
rustc_plugin_impl Only store a LocalDefId in hir::Item. 2021-02-15 19:32:10 +01:00
rustc_privacy Rollup merge of #82066 - matthewjasper:trait-ref-fix, r=jackh726 2021-02-18 16:57:34 +01:00
rustc_query_impl Simplify hashing. 2021-02-21 12:22:22 +01:00
rustc_query_system Simplify hashing. 2021-02-21 12:22:22 +01:00
rustc_resolve Rollup merge of #82717 - estebank:issue-70152, r=lcnr 2021-03-04 20:01:09 +09:00
rustc_save_analysis Only store a LocalDefId in hir::ForeignItem. 2021-02-15 19:32:29 +01:00
rustc_serialize Update the bootstrap compiler 2021-02-20 17:19:30 -05:00
rustc_session Add -Z unpretty flags for the AST 2021-03-03 15:11:26 +01:00
rustc_span Rollup merge of #80723 - rylev:noop-lint-pass, r=estebank 2021-03-05 10:57:14 +01:00
rustc_symbol_mangling Use less HirId when referring to items. 2021-02-15 19:36:12 +01:00
rustc_target Auto merge of #81451 - nikic:llvm-12, r=nagisa 2021-03-04 15:16:44 +00:00
rustc_trait_selection Fix tests 2021-03-03 11:22:44 +01:00
rustc_traits Fix tests 2021-03-03 11:22:44 +01:00
rustc_ty_utils Auto merge of #82159 - BoxyUwU:uwu, r=varkor 2021-02-24 21:54:52 +00:00
rustc_type_ir New pass to deduplicate blocks 2021-02-21 21:51:54 +01:00
rustc_typeck Rollup merge of #80723 - rylev:noop-lint-pass, r=estebank 2021-03-05 10:57:14 +01:00