Commit Graph

110755 Commits

Author SHA1 Message Date
Jonas Schievink
a417f963fe Remove null places 2020-04-20 21:18:20 +02:00
Jonas Schievink
4eaf535d2b Treat RETURN_PLACE as a normal Local
Copy its value to the `return_place` upon leaving a call frame
2020-04-20 21:18:18 +02:00
bors
20fc02f836 Auto merge of #71356 - Dylan-DPC:rollup-liockhk, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #71250 (Replace big JS dict with JSON parsing)
 - #71270 (Fix `has_no_input_arg` check and rename it to `has_only_self_parameter`)
 - #71284 (fix -Zast-json to output correct JSON form)
 - #71328 (Stabilize PathBuf capacity methods)
 - #71334 (Update pattern docs.)

Failed merges:

r? @ghost
2020-04-20 19:11:28 +00:00
Mateusz Mikuła
9296d3ba82 Do not build tools if user do not want them 2020-04-20 20:30:13 +02:00
Esteban Küber
e536257061 Ensure tail expression will have a Ty for E0746
When the return type is `!Sized` we look for all the returned
expressions in the body to fetch their types and provide a reasonable
suggestion. The tail expression of the body is normally evaluated after
checking whether the return type is `Sized`. Changing the order of the
evaluation produces undesirable knock down effects, so we detect the
specific case that newcomers are likely to encounter ,returning a single
bare trait object, and only in that case we evaluate the tail
expression's type so that the suggestion will be accurate.
2020-04-20 11:17:03 -07:00
CAD97
98f0a8241b Improve Layout::extend docs 2020-04-20 12:30:35 -04:00
Christopher Durham
9c3adaf89c
Update src/libcore/alloc/layout.rs
Co-Authored-By: Amanieu d'Antras <amanieu@gmail.com>
2020-04-20 12:28:30 -04:00
Esteban Küber
d3c96f03b5 Suggest -> impl Trait and -> Box<dyn Trait> on fn that doesn't return
During development, a function could have a return type set that is a
bare trait object by accident. We already suggest using either a boxed
trait object or `impl Trait` if the return paths will allow it. We now
do so too when there are *no* return paths or they all resolve to `!`.
We still don't handle cases where the trait object is *not* the entirety
of the return type gracefully.
2020-04-20 09:24:41 -07:00
Dylan DPC
b921587c91
Rollup merge of #71334 - ehuss:pattern-docs, r=kennytm
Update pattern docs.

A few changes to help clarify string pattern usage:

* Add some examples and stability information in the `pattern` module.
* Fixes the links at https://doc.rust-lang.org/std/str/pattern/ because intra-doc-links don't work with re-exported modules (#65983 I think?).
* Consistently use the same phrasing for `str` methods taking a pattern.
    * Also mention that array of `char` is also accepted.

When `Pattern` is stabilized, the phrasing in the `str` methods can be updated to be more general to reflect the exact behavior. I'm reluctant to do this now because the stability story for `Pattern` is uncertain. It may perhaps look something like:

> The pattern can be any type that implements the [`Pattern`] trait. Notable examples are `&str`, [`char`], arrays of [`char`], or functions or closures that determines if a character matches. Additional libraries might provide more complex patterns like regular expressions.

This is complicated because methods like `trim_matches` have bounds, which for example don't support `str`, so those methods may need more elaboration.
2020-04-20 18:07:12 +02:00
Dylan DPC
7561714aa1
Rollup merge of #71328 - Mark-Simulacrum:stabilize-pathbuf-capacity, r=sfackler
Stabilize PathBuf capacity methods

Closes https://github.com/rust-lang/rust/issues/58234.

Stabilization FCP finished in https://github.com/rust-lang/rust/issues/58234#issuecomment-616048777.
2020-04-20 18:07:11 +02:00
Dylan DPC
314b78c550
Rollup merge of #71284 - JOE1994:serialize_id, r=petrochenkov
fix -Zast-json to output correct JSON form

fixes #71086 (Reverts some of the changes made in #70215)

JSON output (from an empty library) after fix has something for **"id"** field
```shell
lonelyjoe@lonelyjoe-desktop:~/workspace/empty_lib/src$ rustc lib.rs -Zast-json
```
```json
{
   "module":{
      "inner":{
         "lo":0,
         "hi":94
      },
      "items":[
         {
            "attrs":[
               {
                  "kind":{
                     "variant":"Normal",
                     "fields":[
                        {
                           "path":{
                              "span":{
                                 "lo":0,
                                 "hi":0
                              },
                              "segments":[
                                 {
                                    "ident":{
                                       "name":"prelude_import",
                                       "span":{
                                          "lo":0,
                                          "hi":0
                                       }
                                    },
                                    "id":3,
                                    "args":null
                                 }
                              ]
                           },
                           "args":"Empty"
                        }
                     ]
                  },
                  "id":null,
                  "style":"Outer",
                  "span":{
                     "lo":0,
                     "hi":0
                  }
               }
            ],
            "id":4,
            "span":{
               "lo":0,
               "hi":0
            },
            "vis":{
               "node":"Inherited",
               "span":{
                  "lo":0,
                  "hi":0
               }
            },
            "ident":{
               "name":"",
               "span":{
                  "lo":0,
                  "hi":0
               }
            },
            "kind":{
               "variant":"Use",
               "fields":[
                  {
                     "prefix":{
                        "span":{
                           "lo":0,
                           "hi":0
                        },
                        "segments":[
                           {
                              "ident":{
                                 "name":"{{root}}",
                                 "span":{
                                    "lo":0,
                                    "hi":0
                                 }
                              },
                              "id":5,
                              "args":null
                           },
                           {
                              "ident":{
                                 "name":"std",
                                 "span":{
                                    "lo":0,
                                    "hi":0
                                 }
                              },
                              "id":6,
                              "args":null
                           },
                           {
                              "ident":{
                                 "name":"prelude",
                                 "span":{
                                    "lo":0,
                                    "hi":0
                                 }
                              },
                              "id":7,
                              "args":null
                           },
                           {
                              "ident":{
                                 "name":"v1",
                                 "span":{
                                    "lo":0,
                                    "hi":0
                                 }
                              },
                              "id":8,
                              "args":null
                           }
                        ]
                     },
                     "kind":"Glob",
                     "span":{
                        "lo":0,
                        "hi":0
                     }
                  }
               ]
            },
            "tokens":null
         },
         {
            "attrs":[
               {
                  "kind":{
                     "variant":"Normal",
                     "fields":[
                        {
                           "path":{
                              "span":{
                                 "lo":0,
                                 "hi":0
                              },
                              "segments":[
                                 {
                                    "ident":{
                                       "name":"macro_use",
                                       "span":{
                                          "lo":0,
                                          "hi":0
                                       }
                                    },
                                    "id":9,
                                    "args":null
                                 }
                              ]
                           },
                           "args":"Empty"
                        }
                     ]
                  },
                  "id":null,
                  "style":"Outer",
                  "span":{
                     "lo":0,
                     "hi":0
                  }
               }
            ],
            "id":10,
            "span":{
               "lo":0,
               "hi":0
            },
            "vis":{
               "node":"Inherited",
               "span":{
                  "lo":0,
                  "hi":0
               }
            },
            "ident":{
               "name":"std",
               "span":{
                  "lo":0,
                  "hi":0
               }
            },
            "kind":{
               "variant":"ExternCrate",
               "fields":[
                  null
               ]
            },
            "tokens":null
         }
      ],
      "inline":true
   },
   "attrs":[

   ],
   "span":{
      "lo":0,
      "hi":94
   },
   "proc_macros":[

   ]
}
```
2020-04-20 18:07:09 +02:00
Dylan DPC
e80d30347a
Rollup merge of #71270 - Rustin-Liu:rustin-patch-has-self, r=estebank
Fix `has_no_input_arg` check and rename it to `has_only_self_parameter`

Signed-off-by: Rustin-Liu <rustin.liu@gmail.com>

Fixes https://github.com/rust-lang/rust/pull/70643#discussion_r401571789.
2020-04-20 18:07:07 +02:00
Dylan DPC
2f06ac08e9
Rollup merge of #71250 - GuillaumeGomez:use-json-instead-of-js, r=kinnison
Replace big JS dict with JSON parsing

Part of #56545.

@ollie27 suggested that using JSON instead of a JS dict might be faster, so I decided to test it. And the results far exceeded whatever expectations I had...

I used https://github.com/adamgreig/stm32ral for my tests. If you want to build it locally:

```bash
$ cargo doc --features doc --open
```

But I strongly recommend to do it with this PR. Some numbers:

 * Loading a page with the JSON search-index: less than 1 second
 * Loading a page with the JS search-index: crashed after 30 seconds

I think the results are clear enough...

r? @ollie27

cc @rust-lang/rustdoc
2020-04-20 18:07:05 +02:00
Felix S. Klock II
19e5a654dc Expand comment to justify not checking if all the exports are green. 2020-04-20 10:33:27 -04:00
Sebastian Malton
6120acec87 Check that main/start is not async
* Add new error code E0752
* Add span to hir::IsAsync::Yes
* Emit an error if main or the start function is marked as async
* Add two regression tests

Fix formatting errors and bless test outputs
* move tests to ui/async-await

fix test error text

remove span from IsAsync
2020-04-20 09:37:11 -04:00
varkor
f8b796b10b Add error message for using type parameter as the type of a const parameter 2020-04-20 14:01:59 +01:00
bors
8ce3f840ae Auto merge of #70729 - nnethercote:a-big-options-clean-up, r=petrochenkov
A big options clean-up

Lots of improvements here.

r? @Centril
2020-04-20 12:30:45 +00:00
varkor
3eea7b31ee Make the structural_match error diagnostic for const generics clearer 2020-04-20 12:46:27 +01:00
Niko Matsakis
4e53a9af47 tweak comments 2020-04-20 09:42:14 +00:00
Shotaro Yamada
fae4e2a155 Remove unused ToHex/FromHex trait 2020-04-20 17:59:27 +09:00
Shotaro Yamada
33905adc5f Remove unused dependencies 2020-04-20 17:59:27 +09:00
bors
4ca5fd2d7b Auto merge of #71232 - eddyb:print-const-adts, r=oli-obk
ty/print: pretty-print constant aggregates (arrays, tuples and ADTs).

Oddly enough, we don't have any UI tests showing this off in types, only `mir-opt` tests.
However, the pretty form should show up in the test output diff of #71018, if this PR is merged first.

<hr/>

Examples of before/after:
|`Option<bool>`|
|:-:|
|`{transmute(0x01): std::option::Option<bool>}`|
|  ↓↓↓  |
|`std::option::Option::<bool>::Some(true)`|

| `RawVec<u32>` |
|:-:|
| `ByRef { alloc: Allocation { bytes: [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], relocations: Relocations(SortedMap { data: [] }), undef_mask: UndefMask { blocks: [65535], len: Size { raw: 16 } }, size: Size { raw: 16 }, align: Align { pow2: 3 }, mutability: Not, extra: () }, offset: Size { raw: 0 } }: alloc::raw_vec::RawVec::<u32>`|
|  ↓↓↓  |
|`alloc::raw_vec::RawVec::<u32> { ptr: std::ptr::Unique::<u32> { pointer: {0x4 as *const u32}, _marker: std::marker::PhantomData::<u32> }, cap: 0usize, alloc: std::alloc::Global }`|

<hr/>

This PR is a prerequisite for #61486, *sort of*, in that we need to be able to pretty-print values in order to even consider how we might mangle them.
We still don't have pretty-printing for constants of reference types, @oli-obk has the necessary support logic in a PR but I didn't want to interfere with that.

<hr/>

Each commit should be reviewed separately, as I've fixed a couple deficiencies along the way.

r? @oli-obk cc @rust-lang/wg-mir-opt @varkor @yodaldevoid
2020-04-20 05:30:12 +00:00
Dylan MacKenzie
79543397d7 Bless new miri_unleashed test 2020-04-19 20:42:36 -07:00
JOE1994
b469d2db6d check '-Zast-json' & '-Zast-json-noexpand' to output legal JSON 2020-04-19 22:24:42 -04:00
bors
9b2f8dbba3 Auto merge of #71007 - Amanieu:deprecate_asm, r=Mark-Simulacrum
Deprecate the asm! macro in favor of llvm_asm!

Since we will be changing the syntax of `asm!` soon, deprecate it and encourage people to use `llvm_asm!` instead (which preserves the old syntax). This will avoid breakage when `asm!` is changed.

RFC: https://github.com/rust-lang/rfcs/pull/2843
2020-04-20 02:18:00 +00:00
Wesley Wiser
c183b4c13f [ConstProp] Use a BitSet<Local> instead of IndexVec<Local, bool> 2020-04-19 21:52:47 -04:00
Mark Rousskov
77ee088623 Stabilize PathBuf capacity methods 2020-04-19 21:49:27 -04:00
Josh Stone
7fca9f809d allow(unused_must_use) in issue-23611-enum-swap-in-drop.rs 2020-04-19 18:15:06 -07:00
Dylan MacKenzie
e5b58b089e Note that some terminators should cause an error 2020-04-19 17:50:56 -07:00
Dylan MacKenzie
d24e39bb91 Exhaustively match on TerminatorKind during const checking 2020-04-19 17:50:56 -07:00
Dylan MacKenzie
e590002652 Exhaustively match on StatementKind during const checking 2020-04-19 17:50:56 -07:00
Dylan MacKenzie
65a985e81e Check for llvm_asm in a const context 2020-04-19 17:50:56 -07:00
Eric Huss
ca61fd5636 Update pattern docs. 2020-04-19 17:19:12 -07:00
Val Markovic
2add9d8fc2 Moving all rustdoc-ui tests to check-pass
These were all build-pass before and don't seem to need it.

Helps with #62277
2020-04-19 16:40:53 -07:00
bors
c6b55eed63 Auto merge of #70598 - vakaras:add-threads-cr3, r=oli-obk,RalfJung
Make the necessary changes to support concurrency in Miri.

This pull request makes the necessary changes to the Rust compiler to allow Miri to support concurrency:

1.  Move stack from the interpretation context (`InterpCx`) to machine, so that the machine can switch the stacks when it changes the thread being executed.
2.  Add the callbacks that allow the machine to generate fresh allocation ids for each thread local allocation and to translate them back to original allocations when needed. This allows the machine to ensure the property that allocation ids are unique, which allows using a simpler representation of the memory.

r? @oli-obk

cc @RalfJung
2020-04-19 23:02:06 +00:00
bors
dbf8b6bf11 Auto merge of #71331 - Dylan-DPC:rollup-5rn1isc, r=Dylan-DPC
Rollup of 4 pull requests

Successful merges:

 - #71026 (Fix false "never constructed" warnings for `Self::` variant paths)
 - #71310 (Do not show DefId in diagnostics)
 - #71317 (miri-unleash test for llvm_asm)
 - #71324 (Fix some tests failing in `--pass check` mode)

Failed merges:

r? @ghost
2020-04-19 19:53:42 +00:00
ljedrz
3c455fe8e1 MIR: use span instead of NodeId to determine if optimized_mir should be run 2020-04-19 21:14:19 +02:00
Dylan DPC
9fc24430e2
Rollup merge of #71324 - petrochenkov:passcheck2, r=RalfJung
Fix some tests failing in `--pass check` mode

r? @RalfJung
2020-04-19 21:11:29 +02:00
Dylan DPC
b20bd73673
Rollup merge of #71317 - RalfJung:unleash-inline-asm, r=ecstatic-morse
miri-unleash test for llvm_asm

r? @oli-obk @ecstatic-morse
2020-04-19 21:11:28 +02:00
Dylan DPC
ab44c7701e
Rollup merge of #71310 - JohnTitor:dont-did, r=estebank
Do not show DefId in diagnostics

Fixes #71222
r? @estebank cc @eddyb
2020-04-19 21:11:24 +02:00
Dylan DPC
9c5da9afa9
Rollup merge of #71026 - seiyab:issue-64362-adhoc, r=varkor
Fix false "never constructed" warnings for `Self::` variant paths

Closes #64362 .
2020-04-19 21:11:22 +02:00
Ralf Jung
f6adbc3a26 Fix comment 2020-04-19 20:23:28 +02:00
bors
ad48d52a74 Auto merge of #71231 - cuviper:rustc_or_patterns, r=Mark-Simulacrum
Dogfood more or_patterns in the compiler

Another step toward the stabilization of `or_patterns`...

cc #54883 @Centril
r? @Mark-Simulacrum
2020-04-19 16:43:02 +00:00
JOE1994
928eedb0aa fix decode logic for 'AttrId' to be symmetric with encode logic 2020-04-19 12:00:45 -04:00
Josh Stone
7b005c5fcb Dogfood more or_patterns in the compiler 2020-04-19 07:33:58 -07:00
Vadim Petrochenkov
1c77e20aba Fix some tests failing in --pass check mode 2020-04-19 17:19:28 +03:00
bors
1b7dec9e44 Auto merge of #71326 - Dylan-DPC:rollup-hdlkdj5, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #71107 (Address concerns of weak-into-raw)
 - #71188 (Fixed missing trait method suggests incorrect code (self parameter not named "self"). )
 - #71300 (Clarify when to use the tracking issue template)
 - #71315 (Add example in the alternative in std::mem::transmute docs)
 - #71319 (Clean up E0522 explanation)

Failed merges:

r? @ghost
2020-04-19 13:24:05 +00:00
Dylan DPC
1d2532bdf6
Rollup merge of #71319 - GuillaumeGomez:cleanup-e0522, r=Dylan-DPC
Clean up E0522 explanation

r? @Dylan-DPC
2020-04-19 15:12:42 +02:00
Dylan DPC
7cdcc876a5
Rollup merge of #71315 - huangjiahua:update-documentation, r=Dylan-DPC
Add example in the alternative in std::mem::transmute docs

It is safer to use `from_ne_bytes` to convert raw bytes to type like u32.  #71187
2020-04-19 15:12:40 +02:00
Dylan DPC
9c37038380
Rollup merge of #71300 - rust-lang:jonas-schievink-patch-1, r=XAMPPRocky
Clarify when to use the tracking issue template

People tend to open this for feature requests. Let's see if this helps.

r? @XAMPPRocky
2020-04-19 15:12:39 +02:00