Commit Graph

109634 Commits

Author SHA1 Message Date
Dylan DPC
7041efcfc3
Rollup merge of #70344 - Centril:hir-pretty, r=eddyb
Decouple `rustc_hir::print` into `rustc_hir_pretty`

High level summary:
- The HIR pretty printer, `rustc_hir::print` is moved into a new crate `rustc_hir_pretty`.
- `rustc_ast_pretty` and `rustc_errors` are dropped as `rustc_hir` dependencies.
- The dependence on HIR pretty is generally reduced, leaving `rustc_save_analysis`, `rustdoc`, `rustc_metadata`, and `rustc_driver` as the remaining clients.

The main goal here is to reduce `rustc_hir`'s dependencies and its size such that it can start and finish earlier, thereby working towards https://github.com/rust-lang/rust/issues/65031.

r? @Zoxc
2020-03-27 01:23:53 +01:00
Dylan DPC
c0369c4523
Rollup merge of #70048 - TyPR124:mutable_osstr, r=dtolnay
Allow obtaining &mut OsStr

```rust
impl DerefMut for OsString {...}              // type Target = OsStr
impl IndexMut<RangeFull> for OsString {...}   // type Output = OsStr
```

---

This change is pulled out of #69937 per @dtolnay

This implements `DerefMut for OsString` to allow obtaining a `&mut OsStr`. This also implements `IndexMut for OsString`, which is used by `DerefMut`. This pattern is the same as is used by `Deref`.

This is necessary to for methods like `make_ascii_lowercase` which need to mutate the underlying value.
2020-03-27 01:23:51 +01:00
Dylan DPC
f635c3757b
Rollup merge of #69936 - Aaron1011:fix/suggestion-cycle, r=varkor
Fix cycle error when emitting suggestion for mismatched `fn` type

Fixes #66667

Previously, we called `tcx.typeck_tables_of` when determining whether or
not to emit a suggestion for a type error. However, we might already be
type-checking the `DefId` we pass to `typeck_tables_of` (it could be
anywhere in the query stack).

Fortunately, we only need the function signature, not the entire
`TypeckTables`. By using `tcx.fn_sig`, we avoid the possibility of cycle
errors while retaining the ability to emit a suggestion.
2020-03-27 01:23:49 +01:00
Dylan DPC
0f6144a115
Rollup merge of #69644 - ecstatic-morse:unified-dataflow-cleanup, r=eddyb
Remove framework in `dataflow/mod.rs` in favor of "generic" one

This is the culmination of the work described in rust-lang/compiler-team#202. All dataflow analyses (including the one in `clippy`) have been ported to use the framework in `dataflow/generic`, which can efficiently handle both gen/kill and generic problems. This PR moves the framework in `dataflow/generic` to `dataflow/framework`, and removes the gen/kill framework in `dataflow/mod.rs`.

More comprehensive documentation for the new framework is tracked in rust-lang/rustc-guide#564.

`clippy` will need to change the path it uses to import the dataflow analysis traits.
2020-03-27 01:23:47 +01:00
Dylan MacKenzie
89d6009461 Make framework a private module 2020-03-26 16:20:00 -07:00
Dylan MacKenzie
fe0e7c3cba Update framework module docs 2020-03-26 16:20:00 -07:00
Dylan MacKenzie
7108cea14e Move BottomValue into framework/mod.rs 2020-03-26 16:20:00 -07:00
Dylan MacKenzie
a8cc89f975 Update imports from dataflow::generic to dataflow 2020-03-26 16:19:58 -07:00
Dylan MacKenzie
93ce5ff587 Update use statements in dataflow/mod.rs 2020-03-26 16:19:21 -07:00
Dylan MacKenzie
bae1114e75 Rename dataflow::generic to dataflow::framework 2020-03-26 16:19:21 -07:00
Dylan MacKenzie
9978afb5d6 Move MoveDataParamEnv to beginning of module 2020-03-26 16:19:21 -07:00
Dylan MacKenzie
15346ed53c Remove BitDenotation framework 2020-03-26 16:19:19 -07:00
Stein Somers
3d435d8023 Test and fix gdb pretty printing again 2020-03-26 23:09:20 +00:00
dylan_DPC
a9a2a319af fix docs 2020-03-26 23:18:37 +01:00
Timothée Gerber
6a744ea4d5 Create output dir in rustdoc markdown render 2020-03-26 23:06:17 +01:00
bors
62c6006450 Auto merge of #70441 - Dylan-DPC:rollup-qv7h2ph, r=Dylan-DPC
Rollup of 6 pull requests

Successful merges:

 - #70384 (Refactor object file handling)
 - #70397 (add 'fn write_u16s' to Memory)
 - #70413 (Fix incorrect pattern warning "unreachable pattern")
 - #70428 (`error_bad_item_kind`: add help text)
 - #70429 (Clean up E0459 explanation)
 - #70437 (Miri float->int casts: be explicit that this is saturating)

Failed merges:

r? @ghost
2020-03-26 20:45:47 +00:00
Dylan DPC
195147c7ae
Rollup merge of #70437 - RalfJung:miri-saturate, r=hanna-kruppe
Miri float->int casts: be explicit that this is saturating

r? @hanna-kruppe
Cc https://github.com/rust-lang/miri/issues/1264
2020-03-26 21:44:09 +01:00
Dylan DPC
e5c5e025ac
Rollup merge of #70429 - GuillaumeGomez:cleanup-e0459, r=Dylan-DPC
Clean up E0459 explanation

r? @Dylan-DPC
2020-03-26 21:44:08 +01:00
Dylan DPC
ef43cdee28
Rollup merge of #70428 - Centril:move-to-mod, r=petrochenkov
`error_bad_item_kind`: add help text

For example, this adds:
```
    = help: consider moving the `use` import out to a nearby module scope
```
r? @petrochenkov @estebank

Fixes https://github.com/rust-lang/rust/issues/37205.
2020-03-26 21:44:06 +01:00
Dylan DPC
c640b95662
Rollup merge of #70413 - AminArria:match-pattern-incorrect-warning, r=Centril,Nadrieril,varkor
Fix incorrect pattern warning "unreachable pattern"

Fixes #70372

Added `is_under_guard` parameter to `_match::is_useful` and only add it to the matrix if `false`

Tested with:
```rust
#![feature(or_patterns)]
fn main() {
    match (3,42) {
        (a,_) | (_,a) if a > 10 => {println!("{}", a)}
        _ => ()
    }

    match Some((3,42)) {
        Some((a, _)) | Some((_, a)) if a > 10 => {println!("{}", a)}
        _ => ()

    }

    match Some((3,42)) {
        Some((a, _) | (_, a)) if a > 10 => {println!("{}", a)}
        _ => ()
    }
}
```
2020-03-26 21:44:05 +01:00
Dylan DPC
de3d1e9fa9
Rollup merge of #70397 - JOE1994:write_wide_str, r=RalfJung
add 'fn write_u16s' to Memory

Added new function `Memory::write_u16s`. Needed in `MIRI` for implementing helper function to write wide_str to memory (for Windows).
2020-03-26 21:44:03 +01:00
Dylan DPC
b15423e72e
Rollup merge of #70384 - nnethercote:refactor-object-file-handling, r=alexcrichton
Refactor object file handling

Some preliminary clean-ups that grease the path to #66961.

r? @alexcrichton
2020-03-26 21:44:02 +01:00
Nathan West
9b429fd121 Add fold_self
- Added `Iterator::fold_first`, which is like `fold`, but uses the first element in the iterator as the initial accumulator
- Includes doc and doctest
- Rebase commit; see #65222 for details

Co-Authored-By: Tim Vermeulen <tvermeulen@me.com>
2020-03-26 20:41:57 +01:00
Ralf Jung
27777e2e7b Miri float->int casts: be explicit that this is saturating 2020-03-26 19:09:31 +01:00
Alex Macleod
40a0fdcb18 Add regression test for #66706 2020-03-26 16:33:18 +00:00
Tim Diekmann
db15fe6b38 Mark Layout::dangling inline 2020-03-26 17:14:34 +01:00
Tim Diekmann
717e0c7b9d Apply suggestions from code review
Co-Authored-By: Amanieu d'Antras <amanieu@gmail.com>
2020-03-26 17:14:23 +01:00
Tim Diekmann
03b055b0b4 Remove alignment from MemoryBlock 2020-03-26 17:14:12 +01:00
Tim Diekmann
bfbdb5f06f Remove unused import from libcore/alloc 2020-03-26 17:13:57 +01:00
Tim Diekmann
fed3d6e646 Fix safety section of RawVec::into_box 2020-03-26 17:13:47 +01:00
Tim Diekmann
cbbdca0594 Fix wording in RawVec::from_raw_parts(_in) 2020-03-26 17:13:31 +01:00
Tim Diekmann
b02e53f197 Remove check for ZST in RawVec::needs_to_grow 2020-03-26 17:13:25 +01:00
Tim Diekmann
ad7de67a32 Refine docs for RawVec::from_raw_parts(_in) 2020-03-26 17:13:11 +01:00
Tim Diekmann
aae3c52c7a Remove the note on the internal capacity field in RawVec 2020-03-26 17:12:57 +01:00
Tim Diekmann
ba26a9e957 Fix assertion in shrink to use capacity() instead 2020-03-26 17:12:45 +01:00
Tim Diekmann
42a8547038 Fix comment in RawVec::into_box() 2020-03-26 17:12:35 +01:00
Tim Diekmann
c1fa02331a Fix ZST handling for RawVec 2020-03-26 17:12:27 +01:00
Tim Diekmann
d9d35cc696 Add comment to AllocRef implementation for System 2020-03-26 17:12:18 +01:00
Tim Diekmann
2f215b61b6 Use NonNull instead of Unique in MemoryBlock 2020-03-26 17:12:12 +01:00
Tim Diekmann
2526accdd3 Fix issues from review and unsoundness of RawVec::into_box 2020-03-26 17:11:47 +01:00
Tim Diekmann
56cbf2f22a Overhaul of the AllocRef trait to match allocator-wg's latest consens 2020-03-26 17:10:54 +01:00
Amanieu d'Antras
1cc521ef9d Update tests to use llvm_asm! 2020-03-26 15:49:22 +00:00
Amanieu d'Antras
d162d096dd Rename asm! to llvm_asm!
asm! is left as a wrapper around llvm_asm! to maintain compatibility.
2020-03-26 15:49:22 +00:00
Amin Arria
ae7fa3042d Add tests based on issue #70372 comments 2020-03-26 12:34:36 -03:00
Amin Arria
5796e6e461 Fix incorrect pattern warning "unreachable pattern"
- Added is_under_guard parameter to _match::is_useful and
  only add to the matrix if false
- Added comments explaining behavior
2020-03-26 12:34:22 -03:00
JOE1994
4538f8953b add 'fn write_u16s'(rustc_mir::interpret::Memory) 2020-03-26 11:01:21 -04:00
Oliver Scherer
c9a5a03ffd Enable --blessing of MIR dumps 2020-03-26 15:26:33 +01:00
Guillaume Gomez
604b7e94e0 Clean up E0459 explanation 2020-03-26 14:21:05 +01:00
Mazdak Farrokhzad
91c68c5fae error_bad_item_kind: add help text 2020-03-26 14:13:50 +01:00
Mateusz Mikuła
f5e702df0e Upgrade rustc and bootstrap dependencies 2020-03-26 14:11:23 +01:00