121136 Commits

Author SHA1 Message Date
Guillaume Gomez
bcf57d8f20 Fix escape key handling 2020-05-28 14:51:12 +02:00
Ralf Jung
52ed89ae8c from_u32_unchecked: check validity when debug assertions are enabled 2020-05-28 14:04:36 +02:00
David Wood
a54ed872cb
standardize limit comparisons with Limit type
This commit introduces a `Limit` type which is used to ensure that all
comparisons against limits within the compiler are consistent (which can
result in ICEs if they aren't).

Signed-off-by: David Wood <david@davidtw.co>
2020-05-28 10:33:07 +01:00
David Wood
804e9e546d
mir: adjust conditional in recursion limit check
This commit adjusts the condition used in the recursion limit check of
the monomorphization collector, from `>` to `>=`.

In #67552, the test case had infinite indirect recursion, repeating a
handful of functions (from the perspective of the monomorphization
collector): `rec` -> `identity` -> `Iterator::count` -> `Iterator::fold`
-> `Iterator::next` -> `rec`.

During this process, `resolve_associated_item` was invoked for
`Iterator::fold` (during the construction of an `Instance`), and
ICE'd due to substitutions needing inference. However, previous
iterations of this recursion would have called this function for
`Iterator::fold` - and did! - and succeeded in doing so (trivially
checkable from debug logging, `()` is present where `_` is in the substs
of the failing execution).

The expected outcome of this test case would be a recursion limit error
(which is present when the `identity` fn indirection is removed), and
the recursion depth of `rec` is increasing (other functions finish
collecting their neighbours and thus have their recursion depths reset).

When the ICE occurs, the recursion depth of `rec` is 256 (which matches
the recursion limit), which suggests perhaps that a different part of
the compiler is using a `>=` comparison and returning a different result
on this recursion rather than what it returned in every previous
recursion, thus stopping the monomorphization collector from reporting
an error on the next recursion, where `recursion_depth_of_rec > 256`
would have been true.

With grep and some educated guesses, we can determine that
the recursion limit check at line 818 in
`src/librustc_trait_selection/traits/project.rs` is the other check that
is using a different comparison. Modifying either comparison to be `>` or
`>=` respectively will fix the error, but changing the monomorphization
collector produces the nicer error.

Signed-off-by: David Wood <david@davidtw.co>
2020-05-28 10:18:51 +01:00
Yuki Okushi
e069524c48
Add test for #66930 2020-05-28 16:50:10 +09:00
CAD97
cd6a8cae2a FIx off-by-one in char::steps_between 2020-05-28 01:33:28 -04:00
Esteban Küber
f213acf4db review comments: change wording and visual output 2020-05-27 20:58:05 -07:00
Esteban Küber
cb6408afc6 Fix rebase 2020-05-27 19:24:09 -07:00
Joe Richey
7d5415b5a2 Add additional checks for isize overflow
We now perform the correct checks even if the pointer size differs
between the host and target.

Signed-off-by: Joe Richey <joerichey@google.com>
2020-05-27 19:10:17 -07:00
bors
4512721156 Auto merge of #72494 - lcnr:predicate-cleanup, r=nikomatsakis
Pass more `Copy` types by value.

There are a lot of locations where we pass `&T where T: Copy` by reference,
which should both be slightly less performant and less readable IMO.

This PR currently consists of three fairly self contained commits:

- passes `ty::Predicate` by value and stops depending on `AsRef<ty::Predicate>`.
- changes `<&List<_>>::into_iter` to iterate over the elements by value. This would break `List`s
  of non copy types. But as the only list constructor requires `T` to be copy anyways, I think
  the improved readability is worth this potential future restriction.
- passes `mir::PlaceElem` by value. Mir currently has quite a few copy types which are passed by reference, e.g. `Local`. As I don't have a lot of experience working with MIR, I mostly did this to get some feedback from people who use MIR more frequently
- tries to reuse `ty::Predicate` in case it did not change in some places, which should hopefully
  fix the regression caused by #72055

r? @nikomatsakis for the first commit, which continues the work of #72055 and makes adding `PredicateKind::ForAll` slightly more pleasant. Feel free to reassign though
2020-05-28 00:18:52 +00:00
Esteban Küber
c52dbbc643 fix rebase 2020-05-27 16:28:20 -07:00
Esteban Küber
500504c0bd fix rebase 2020-05-27 16:28:20 -07:00
Esteban Küber
2b35247d7a Modify wording 2020-05-27 16:28:20 -07:00
Esteban Küber
d0d30b0a3e fix rebase 2020-05-27 16:28:20 -07:00
Esteban Küber
2e2f82053f review comment: use FxIndexSet 2020-05-27 16:28:20 -07:00
Esteban Küber
3811232190 review comments 2020-05-27 16:28:20 -07:00
Esteban Küber
eb0f4d51df Tweak output for mismatched impl item
Detect type parameter that might require lifetime constraint.
Do not name `ReVar`s in expected/found output.
Reword text suggesting to check the lifetimes.
2020-05-27 16:28:20 -07:00
Esteban Küber
5ba22205a4 Name RegionKind::ReVar lifetimes in diagnostics 2020-05-27 16:28:04 -07:00
Esteban Küber
3fea832fd7 Fix spacing of expected/found notes without a label 2020-05-27 16:27:15 -07:00
LeSeulArtichaut
db684beb4e Whitelist unsafe_op_in_unsafe_fn in rustdoc 2020-05-28 00:45:06 +02:00
Mark Rousskov
b1063b83da Clippy should always build
This just unwraps clippy's build step instead of skipping tests if clippy didn't
build. This matches e.g. cargo's behavior and seems more correct, as we always
expect clippy to successfully build.
2020-05-27 17:25:47 -04:00
Jonas Schievink
1ab0db1272
Fix incorrect comment in generator test 2020-05-27 21:38:38 +02:00
Vadim Petrochenkov
5369f4aa57 rustc_session: Cleanup session creation 2020-05-27 22:32:24 +03:00
Guillaume Gomez
5ba5b65367 Sort fields, variants and other unsorted elements in the sidebar 2020-05-27 21:30:33 +02:00
Guillaume Gomez
5548e69226 Add working example for E0617 explanation 2020-05-27 21:29:09 +02:00
bors
7ea7cd165a Auto merge of #5652 - rust-lang:flip1995-patch-1, r=yaahc
Fail bors on missing changelog

Bors stopped failed if the changelog was missing. Instead it waited 2h (?) and then timed out.

changelog: none
2020-05-27 18:55:57 +00:00
LeSeulArtichaut
63066c0c06 Use LintIds to check for gated lints 2020-05-27 20:37:59 +02:00
LeSeulArtichaut
1b08850622 Fix import 2020-05-27 20:37:59 +02:00
LeSeulArtichaut
e3d27ec1c8 Add explanation about taking the minimum of the two lints 2020-05-27 20:37:59 +02:00
LeSeulArtichaut
4a538d31e0 Do not hardcode lint name 2020-05-27 20:37:59 +02:00
LeSeulArtichaut
3599ada976 Mark deduplicated errors as expected in gate test 2020-05-27 20:37:58 +02:00
LeSeulArtichaut
9671b44609 Add tests for packed borrows in unsafe fns 2020-05-27 20:37:58 +02:00
LeSeulArtichaut
925d5ac45f Fix and bless tests 2020-05-27 20:37:58 +02:00
LeSeulArtichaut
a3bae5ce73 Fix wrong conflict resolution 2020-05-27 20:37:58 +02:00
LeSeulArtichaut
a41f76321a Use the lowest of unsafe_op_in_unsafe_fn and safe_borrow_packed for packed borrows in unsafe fns 2020-05-27 20:37:57 +02:00
LeSeulArtichaut
b3e012becc Fix inverted if condition 2020-05-27 20:37:57 +02:00
LeSeulArtichaut
3ce9d5c269 Add more cases to the test 2020-05-27 20:37:57 +02:00
LeSeulArtichaut
bb67915028 Apply suggestions from code review 2020-05-27 20:37:57 +02:00
LeSeulArtichaut
594c499db9 Add tests 2020-05-27 20:37:57 +02:00
LeSeulArtichaut
a977df35d1 Implement RFC 2585 2020-05-27 20:37:56 +02:00
bors
664fcd3f04 Auto merge of #71996 - Marwes:detach_undo_log, r=nikomatsakis
perf: Revert accidental inclusion of a part of #69218

This was accidentally included in #69464 after a rebase and given
how much `inflate` and `keccak` stresses the obligation forest seems
like a likely culprit to the regression in those benchmarks.

(It is necessary in #69218 as obligation forest needs to accurately
track the root variables or unifications will get lost)
2020-05-27 18:31:45 +00:00
Ralf Jung
7b1187968c expand unaligned_references test 2020-05-27 20:31:17 +02:00
Chris Simpkins
593d1eed82
improve diagnostics suggestion for missing @ in slice id binding to rest pattern
add issue 72373 tests


fmt test


fix suggestion format

Replacement, not insertion of suggested string

implement review changes

refactor to span_suggestion_verbose, improve suggestion message,  change id @ pattern space formatting

fmt


fix diagnostics spacing between ident and @


refactor reference
2020-05-27 14:10:41 -04:00
Ivan Lozano
0c1ef853bb Add -Z profile-emit=<path> for Gcov gcda output.
Adds a -Z flag to control the file path that the Gcov gcda output is
written to during runtime. This flag expects a path and filename, e.g.
-Z profile-emit=gcov/out/lib.gcda.

This works similar to GCC/Clang's -fprofile-dir flag which allows
control over the output path for gcda coverage files.
2020-05-27 14:10:40 -04:00
flip1995
b124892480
Add test for {impl,declare}_lint_pass macros 2020-05-27 16:57:31 +02:00
flip1995
709ddba9fe
Allow types (with lifetimes/generics) in impl_lint_pass 2020-05-27 16:56:57 +02:00
marmeladema
81f8ee458b Store LocalDefId directly in rustc_resolve::Resolver where possible
This commit also include the following changes:
* Remove unused `hir::Map::as_local_node_id` method
* Remove outdated comment about `hir::Map::local_def_id` method
* Remove confusing `GlobMap` type alias
* Use `LocalDefId` instead of `DefId` in `extern_crate_map`
* Use `LocalDefId` instead of `DefId` in `maybe_unused_extern_crates`
* Modify `extern_mod_stmt_cnum` query to accept a `LocalDefId` instead of a `DefId`
2020-05-27 15:55:35 +01:00
bors
2873165725 Auto merge of #72601 - JohnTitor:deps, r=Mark-Simulacrum
Update transitive dependencies to remove some deps

Similar to #71919, this removes some (duplicate) dependencies.
2020-05-27 14:48:33 +00:00
Mikko Rantanen
66e9984938
Fix is_char_boundary documentation 2020-05-27 16:21:30 +03:00
bors
ee3088f27b Auto merge of #5631 - ThibsG:ExtendUselessConversion, r=matthiaskrgr
Extend useless conversion

This PR extends `useless_conversion` lint with `TryFrom` and `TryInto`

fixes: #5344

changelog: Extend `useless_conversion` with `TryFrom` and `TryInto`
2020-05-27 13:06:59 +00:00