134793 Commits

Author SHA1 Message Date
Ryan1729
af1cc5c911 add suspicious_operation_groupings lint
run `cargo dev new_lint --category correctness --name suspicious_chained_operators --pass early`

add (currently failing) tests for suspicious_chained_operators
add some tests to answer a question that came up during implementation

write usage code for functions we'll need to find or create

Complete left-right tracking TODO

get it compiling with several `todo!` invocations.

refactor to a set of incomplete functions that don't expect to be able to edit a `Span`

create placeholder for `suggestion_with_swapped_ident` function and correct some comments

add `inside_larger_boolean_expression` test

fill out `get_ident` and `suggestion_with_swapped_ident`

Implementi the `IdentIter`

start on implementing the `IdentIter`
handle the `ExprKind::Path` case in `IdentIter`

on second thought, make the iterator type dynamic so we don't need an explicit type for each one we will need

handle `ExprKind::MacCall` in `IdentIter`

Try handling `box x` expressions

restructure `IdentIter`

set `self.done` when returning `None`

Handle `ExprKind::Array`

reduce duplication with a macro that we expect to use several more times

handle ExprKind::Call

add `new_p` convenience method

handle `MethodCall`

handle `Tup` and `Binary`

handle `Unary`

simplify by not returning an additional `Expr` from the `IdentIter`

add cross product test against false positives

rename suspicious_chained_operators to suspicious_operation_groupings within files

For the record, the exact commands run were:
find . -type f -name "*.md" -exec sed -i 's/suspicious_chained_operators/suspicious_operation_groupings/g' {} +

find . -type f -name "*.rs" -exec sed -i 's/suspicious_chained_operators/suspicious_operation_groupings/g' {} +

find . -type f -name "*.rs" -exec sed -i 's/SUSPICIOUS_CHAINED_OPERATORS/SUSPICIOUS_OPERATION_GROUPINGS/g' {} +

find . -type f -name "*.rs" -exec sed -i 's/SuspiciousChainedOperators/SuspiciousOperationGroupings/g' {} +

Also:
rename file to match module name

rename test file to match lint name

start implementing `IdentDifference` creation

add `IdentIter` utility

use `ident_iter::IdentIter`

fix bug in `suggestion_with_swapped_ident`

add `inside_if_statements` test

implement `Add` `todo`s

register `SuspiciousOperationGroupings` lint pass

fill in `chained_binops`, and fill in a stopgap version of `ident_difference_expr`, but then notice that the lint does not seem to ever be run in the tests

run `cargo dev update_lints` and not that the `suspicious_operation_groupings` lint still does not seem to be run

fix base index incrementing bug

fix paired_identifiers bug, and remove ident from `Single`

change help prefix and note our first successful lint messages!

add odd_number_of_pairs test

get the `non_boolean_operators` test passing, with two copies of the error message

extract `is_useless_with_eq_exprs` so we can know when `eq_op` will already handle something

add `not_caught_by_eq_op` tests since `s1.b * s1.b` was (reasonably) not caught by `eq_op`

cover the case where the change should be made on either side of the expression with `not_caught_by_eq_op` tests

produce the expected suggestion on the `not_caught_by_eq_op_middle_change_left` test

confirm that the previous tests still pass and update references

fix early continue bug and get `not_caught_by_eq_op_middle_change_right` passing

note that `not_caught_by_eq_op_start` already passes

fix bugs based on misunderstanding of what `Iterator::skip` does, and note that `not_caught_by_eq_op_end` now passes

add several parens tests and make some of them pass

handle parens inside `chained_binops_helper` and note that this makes several tests pass

get `inside_larger_boolean_expression_with_unsorted_ops` test passing by extracting out `check_same_op_binops` function

also run `cargo dev fmt`

note that `inside_function_call` already passes

add another `if_statement` test

remove the matching op requirement, making `inside_larger_boolean_expression_with_unsorted_ops` pass

prevent non-change suggestions from being emitted

get the `Nested` tests passing, and remove apparently false note about eq_op

add a test to justify comment in `ident_difference_expr_with_base_location` but find that the failure mode seems different than expected

complete `todo` making `do_not_give_bad_suggestions_for_this_unusual_expr` pass and add some more tests that already pass

add test to `eq_op`

note that `inside_fn_with_similar_expression` already passes

fix `inside_an_if_statement` and note that it already passes

attempt to implement if statement extraction and notice that we don't seem to handle unary ops correctly

add `maximum_unary_minus_right_tree` test and make it pass

add two tests and note one of them passes

filter out unary operations in several places, and find that the issue seems to be that we don't currently recognize the error in `multiple_comparison_types_and_unary_minus` even so.

remove filtering that was causing bad suggestions

remove tests that were deemed too much for now

run `cargo dev fmt`

correct eq_op post-merge

fill out the description and delete debugging code

run `cargo dev update_lints`

update eq_op references

add parens to work around rustfmt issue #3666 and run rustfmt

https://github.com/rust-lang/rustfmt/issues/3666#issuecomment-714612257

update references after formatting

fix dogfood issues

fix multi-cursor edit

fix missed dogfood error

fix more dogfood pedantic issues, including function length

even more nesting

insert hidden definition of Vec3 so docs compile

add spaces to second struct def

reword test description comment

Co-authored-by: llogiq <bogusandre@gmail.com>

add local `use BinOpKind::*;`

Apply suggestions from code review

Co-authored-by: llogiq <bogusandre@gmail.com>

switch `SUSPICIOUS_OPERATION_GROUPINGS` to a style lint

run `cargo dev update_lints`

put both usages of `op_types` in the same closure to satisfy `borrowck`

fix compile error
2020-11-27 17:50:16 -07:00
bors
fd6b5376b7 Auto merge of #79284 - Nadrieril:constructor-module, r=varkor
Split match exhaustiveness into two files

I feel the constructor-related things in the `_match` module make enough sense on their own so I split them off. It makes `_match` feel less like a complicated mess. I'm not aware of PRs in progress against this module apart from my own so hopefully I'm not annoying too many people.
I have a lot of questions about the conventions in naming and modules around the compiler. Like, why is the module named `_match`? Could I rename it to `usefulness` maybe? Should `deconstruct_pat` be a submodule of `_match` since only `_match` uses it? Is it ok to move big piles of code around even if it makes git blame more difficult?

r? `@varkor`
`@rustbot` modify labels: +A-exhaustiveness-checking
2020-11-27 22:34:59 +00:00
Sreehari S
7e00222aab add enable-full-tools to freebsd builds to prevent occasional link errors when compiling rust programs 2020-11-27 14:21:23 -08:00
Lukas Lueg
08ec201c72 Expand docs on Peekable::peek_mut 2020-11-27 22:50:22 +01:00
Santiago Pastorino
ada7c1f429
Return FxIndexSet instead of FxHashSet to avoid order errors on different platforms 2020-11-27 18:45:34 -03:00
Aaron Hill
92bfa05b07
Bump recursion_limit in rustc_ast_passes
When cfg(parallel_compiler) is enabled, we end up trying to prove
Send/Sync bounds for some deeply nested types (at least when rustdoc is
run).
2020-11-27 15:47:58 -05:00
bjorn3
477aa67802 Merge commit '5988bbd24aa87732bfa1d111ba00bcdaa22c481a' into sync_cg_clif-2020-11-27 2020-11-27 20:48:53 +01:00
Camille GILLOT
9dd32e177e Encode proc_macro directly.
Encode proc_macro name directly.

Do not store None values.
2020-11-27 20:39:49 +01:00
bors
6a889570e4 Auto merge of #79372 - jyn514:more-cleanup, r=GuillaumeGomez
Cleanup more of rustdoc

-  Use `Item::from_def_id` for StructField
- Use `from_def_id_and_parts` for primitives and keywords
- Take `String` instead of `Symbol` in `from_def_id` - this avoids having to intern then immediately stringify the existing string.
- Remove unused `get_stability` and `get_deprecation`
- Remove unused `attrs` field from `primitives`
- Remove unused `attrs` field from `keywords`

This will probably conflict with https://github.com/rust-lang/rust/pull/79335 and I would prefer for that PR to land first - I'm anxious for https://github.com/rust-lang/rust/pull/77467 to land :)

Makes https://github.com/rust-lang/rust/issues/76998 easier to add.

r? `@GuillaumeGomez`
2020-11-27 19:30:58 +00:00
Joshua Nelson
2d39c09cc2 Change comments on types to doc-comments 2020-11-27 14:17:25 -05:00
Nadrieril
941c6ac1a2 Rename _match to usefulness 2020-11-27 18:43:28 +00:00
Nadrieril
2de0475826 Rename pat_constructor to Constructor::from_pat 2020-11-27 18:22:19 +00:00
Nadrieril
ba3c419a43 Move the definitions of the two Ctxts to the top 2020-11-27 18:22:19 +00:00
Nadrieril
2184a1444c Extract everything related to pattern deconstruction to a new module 2020-11-27 18:22:17 +00:00
Nadrieril
3715f1ed00 No need to expose Matrix internals 2020-11-27 18:20:30 +00:00
Nadrieril
d447bdff9b Disentangle Fields and PatStack 2020-11-27 18:20:30 +00:00
Nadrieril
b59792128c Move Constructor::apply to Fields 2020-11-27 18:20:30 +00:00
oli
8b81bb8715 Revert the effect of #77467 by disabling normalization in rustdoc 2020-11-27 17:08:49 +00:00
bjorn3
5988bbd24a Revert "Use the new component dependency option of the rust-toolchain file"
This reverts commit 648caced6eb0d23c31758f69f2f44a7d748526b9.

Rustup on github actions isn't yet updated
2020-11-27 18:05:05 +01:00
bjorn3
de4ce8c05f Sync from rust c9228570668803e3e6402770d55f23a12c9ae686 2020-11-27 18:01:29 +01:00
bjorn3
aef656aee8 Rustup to rustc 1.50.0-nightly (72da5a9d8 2020-11-26) 2020-11-27 18:01:01 +01:00
Guillaume Gomez
482b3accdd Remove unused is_doc_keyword function 2020-11-27 17:54:28 +01:00
Guillaume Gomez
af2040ff95 Add tests for doc_keyword feature extension 2020-11-27 17:54:28 +01:00
Jakob Schikowski
470c059e69 libtest: Print the total time taken to execute a test suite 2020-11-27 17:53:59 +01:00
bjorn3
648caced6e Use the new component dependency option of the rust-toolchain file 2020-11-27 17:53:55 +01:00
Guillaume Gomez
f663093222 Allow to have any valid ident used as keyword in doc_keyword feature 2020-11-27 17:38:11 +01:00
bors
84ba08f391 Auto merge of #6392 - ebroto:rustup, r=ebroto
Rustup

changelog: none

r? `@ghost`
2020-11-27 16:17:07 +00:00
Eduardo Broto
18d37a5d25 Merge remote-tracking branch 'upstream/master' into rustup 2020-11-27 17:15:10 +01:00
bors
774bce7f5e Auto merge of #77484 - terhechte:support-ios-catalyst-macabi-arm64-target-triple, r=nikomatsakis
Add support for Arm64 Catalyst on ARM Macs

This is an iteration on https://github.com/rust-lang/rust/pull/63467 which was merged a while ago. In the aforementioned PR, I added support for the `X86_64-apple-ios-macabi` target triple, which is Catalyst, iOS apps running on macOS.

Very soon, Apple will launch ARM64 based Macs which will introduce `aarch64_apple_darwin.rs`, macOS apps using the Darwin ABI running on ARM. This PR adds support for Catalyst apps on ARM Macs: iOS apps compiled for the darwin ABI.

I don't have access to a Apple Developer Transition Kit (DTK), so I can't really test if the generated binaries work correctly. I'm vaguely hopeful that somebody with access to a DTK could give this a spin.
2020-11-27 15:58:26 +00:00
Santiago Pastorino
504d27cb0c
Make super_traits_of return an iterator 2020-11-27 11:55:17 -03:00
Aaron Hill
772292fa51
Don't lint on redundant semicolons after item statements
This preserves the current lint behavior for now.

Linting after item statements currently prevents the compiler from bootstrapping.
Fixing this is blocked on fixing this upstream in Cargo, and bumping the Cargo
submodule.
2020-11-27 09:37:49 -05:00
Santiago Pastorino
35bf466a27
Remove super_traits_of query, just leave a helper function 2020-11-27 11:23:53 -03:00
Santiago Pastorino
a6136d8b83
Simplify super_traits_of 2020-11-27 11:23:53 -03:00
Santiago Pastorino
b02a905d93
Add test to check that we handle predicates that can define assoc types correctly 2020-11-27 11:23:53 -03:00
Santiago Pastorino
67ea9b227f
Make super_traits_of return Lrc for cheaper clone 2020-11-27 11:23:52 -03:00
Santiago Pastorino
1895e52505
Fix super_traits_of API doc 2020-11-27 11:23:52 -03:00
Santiago Pastorino
ac1845a6f0
Fix super_predicates_that_define_assoc_type API doc 2020-11-27 11:23:52 -03:00
Santiago Pastorino
28446ef19e
Inline elaborate_trait_refs_that_define_assoc_type into transitive_bounds_that_define_assoc_type 2020-11-27 11:23:52 -03:00
Santiago Pastorino
9e0538bd07
Document elaborate_trait_refs_that_define_assoc_type 2020-11-27 11:23:51 -03:00
Santiago Pastorino
a175f36c95
Document compute_bounds_that_match_assoc_type 2020-11-27 11:23:51 -03:00
Santiago Pastorino
af38d71b17
Add super_traits_of docs 2020-11-27 11:23:51 -03:00
Santiago Pastorino
b916ac6322
adjust super_predicates_that_define_assoc_type query description 2020-11-27 11:23:51 -03:00
Santiago Pastorino
6ab8fe223e
Bless tests 2020-11-27 11:23:50 -03:00
Santiago Pastorino
dd267fecd6
compute_bounds takes &[GenericBound] 2020-11-27 11:23:50 -03:00
Santiago Pastorino
c0007a2d7e
Extract function trait_may_define_assoc_type 2020-11-27 11:23:50 -03:00
Santiago Pastorino
b60a214c51
super_traits_of is now a query 2020-11-27 11:23:49 -03:00
Santiago Pastorino
6631215e54
Remove unneeded logic 2020-11-27 11:23:49 -03:00
Santiago Pastorino
30e933cd79
Extract trait_may_define_assoc_type helper function 2020-11-27 11:23:49 -03:00
Santiago Pastorino
aa1cafd407
Add `` to variable name in docs 2020-11-27 11:23:49 -03:00
Santiago Pastorino
f76d6e0139
Add description on test 2020-11-27 11:23:48 -03:00