summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2020-05-28Fix escape key handlingGuillaume Gomez-3/+13
2020-05-28from_u32_unchecked: check validity when debug assertions are enabledRalf Jung-2/+2
2020-05-28standardize limit comparisons with `Limit` typeDavid Wood-60/+108
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-28mir: adjust conditional in recursion limit checkDavid Wood-5/+49
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-28Add test for #66930Yuki Okushi-0/+11
2020-05-28FIx off-by-one in char::steps_betweenCAD97-1/+3
2020-05-27review comments: change wording and visual outputEsteban Küber-59/+26
2020-05-27Fix rebaseEsteban Küber-11/+8
2020-05-27Add additional checks for isize overflowJoe Richey-7/+17
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-28Auto merge of #72494 - lcnr:predicate-cleanup, r=nikomatsakisbors-196/+194
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-27fix rebaseEsteban Küber-1/+1
2020-05-27fix rebaseEsteban Küber-4/+2
2020-05-27Modify wordingEsteban Küber-20/+84
2020-05-27fix rebaseEsteban Küber-9/+9
2020-05-27review comment: use FxIndexSetEsteban Küber-3/+3
2020-05-27review commentsEsteban Küber-46/+24
2020-05-27Tweak output for mismatched impl itemEsteban Küber-56/+126
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-27Name `RegionKind::ReVar` lifetimes in diagnosticsEsteban Küber-45/+105
2020-05-27Fix spacing of expected/found notes without a labelEsteban Küber-79/+88
2020-05-28Whitelist `unsafe_op_in_unsafe_fn` in rustdocLeSeulArtichaut-1/+12
2020-05-27Clippy should always buildMark Rousskov-34/+26
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-27Fix incorrect comment in generator testJonas Schievink-1/+1
2020-05-27rustc_session: Cleanup session creationVadim Petrochenkov-55/+35
2020-05-27Sort fields, variants and other unsorted elements in the sidebarGuillaume Gomez-32/+31
2020-05-27Add working example for E0617 explanationGuillaume Gomez-0/+11
2020-05-27Auto merge of #5652 - rust-lang:flip1995-patch-1, r=yaahcbors-2/+2
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-27Use `LintId`s to check for gated lintsLeSeulArtichaut-5/+5
2020-05-27Fix importLeSeulArtichaut-2/+1
2020-05-27Add explanation about taking the minimum of the two lintsLeSeulArtichaut-0/+11
2020-05-27Do not hardcode lint nameLeSeulArtichaut-1/+2
2020-05-27Mark deduplicated errors as expected in gate testLeSeulArtichaut-0/+2
2020-05-27Add tests for packed borrows in unsafe fnsLeSeulArtichaut-82/+140
2020-05-27Fix and bless testsLeSeulArtichaut-21/+168
2020-05-27Fix wrong conflict resolutionLeSeulArtichaut-7/+1
2020-05-27Use the lowest of `unsafe_op_in_unsafe_fn` and `safe_borrow_packed` for ↵LeSeulArtichaut-5/+32
packed borrows in unsafe fns
2020-05-27Fix inverted `if` conditionLeSeulArtichaut-1/+1
2020-05-27Add more cases to the testLeSeulArtichaut-2/+28
2020-05-27Apply suggestions from code reviewLeSeulArtichaut-50/+125
2020-05-27Add testsLeSeulArtichaut-0/+82
2020-05-27Implement RFC 2585LeSeulArtichaut-10/+75
2020-05-27Auto merge of #71996 - Marwes:detach_undo_log, r=nikomatsakisbors-33/+41
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-27expand unaligned_references testRalf Jung-11/+34
2020-05-27improve diagnostics suggestion for missing `@` in slice id binding to rest ↵Chris Simpkins-0/+42
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-27Add -Z profile-emit=<path> for Gcov gcda output.Ivan Lozano-4/+11
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-27Add test for {impl,declare}_lint_pass macrosflip1995-0/+26
2020-05-27Allow types (with lifetimes/generics) in impl_lint_passflip1995-5/+5
2020-05-27Store `LocalDefId` directly in `rustc_resolve::Resolver` where possiblemarmeladema-79/+44
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-27Auto merge of #72601 - JohnTitor:deps, r=Mark-Simulacrumbors-144/+72
Update transitive dependencies to remove some deps Similar to #71919, this removes some (duplicate) dependencies.
2020-05-27Fix is_char_boundary documentationMikko Rantanen-4/+3
2020-05-27Auto merge of #5631 - ThibsG:ExtendUselessConversion, r=matthiaskrgrbors-25/+199
Extend useless conversion This PR extends `useless_conversion` lint with `TryFrom` and `TryInto` fixes: #5344 changelog: Extend `useless_conversion` with `TryFrom` and `TryInto`