Commit Graph

110398 Commits

Author SHA1 Message Date
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
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
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
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
Mark Rousskov
77ee088623 Stabilize PathBuf capacity methods 2020-04-19 21:49:27 -04:00
Eric Huss
ca61fd5636 Update pattern docs. 2020-04-19 17:19:12 -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
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
Dylan DPC
36791dabe8
Rollup merge of #71188 - Duddino:fix, r=matthewjasper
Fixed missing trait method suggests incorrect code (self parameter not named "self").

fixes #71150
2020-04-19 15:12:38 +02:00
Dylan DPC
4d11c3fe30
Rollup merge of #71107 - vorner:weak-into-raw-dangling, r=Amanieu
Address concerns of weak-into-raw

This should address the standing concerns in https://github.com/rust-lang/rust/issues/60728#issuecomment-612525616.

I've still left the ability to create a new dangling pointer from `null`, as I feel like this is the natural behaviour to expect, but I'm fine removing that too. I've modified the documentation to allow the `as_ptr` or `into_ptr` to return whatever garbage in case of a dangling pointer. I've also removed the guarantee to be able to do `from_raw(as_ptr)` from the documentation (but it would still work right now).

I've renamed the method and added implementations for `Rc`/`Arc`.

I've also tried if I can just „enable“ unsized types. I believe the current interface is compatible with them. But the inner implementation will be a bit challenging ‒ I can't use the `data_offset` as is used by `Rc` or `Arc` because it AFAIK „touches“ (creates a reference to) the live value of `T` ‒ and in case of `Weak`, it might be completely bogus or already dead ‒ so that would be UB.

`./x.py test tidy` is completely mad on my own system all over the code base :-(. I'll just hope it goes through CI, or will fix as necessary.

Is it OK if I ask @Amanieu for review, as the concerns are from you?

~r @Amanieu
2020-04-19 15:12:36 +02:00
seiya
d3f8db6a2f Fix false "never constructed" warnings for Self:: variant paths 2020-04-19 21:57:35 +09:00
jakubadamw
f742afaca4 test for false "never constructed" warnings for Self:: variant paths 2020-04-19 21:57:35 +09:00
Guillaume Gomez
ca6eb2c2b2 Clean up E0522 explanation 2020-04-19 13:19:44 +02:00
Ralf Jung
56884581ec miri-unleash test for llvm_asm 2020-04-19 12:13:54 +02:00
Nicholas Nethercote
3e3fd73f85 Disallow values for -C no-* and -Z no-* options again.
With the exception of `-C no-redzone`, because that could take a value
before this PR.

This partially undoes one of the earlier commits in this PR, which added
the ability to take a value to all boolean options that lacked it.

The help output for these options looks like this:
```
    -C         no-vectorize-slp=val -- disable LLVM's SLP vectorization pass
```
The "=val" part is a lie, but hopefully this will be fixed in the future.
2020-04-19 20:05:23 +10:00
Nicholas Nethercote
dc06539872 Improve codegen option docs.
This commit:
- Adds "following values" indicators for all the options that are
  missing them.
- Tweaks some wording and punctuation for consistency.
- Rewords some things for clarity.
- Removes the `no-integrated-as` entry, because that option was removed
  in #70345.
2020-04-19 20:03:20 +10:00
Nicholas Nethercote
cc93e51ed3 Show defaults in options descriptions.
For all `-C` and `-Z` options that have them.

The commit also rewords a few options to make them clearer, mostly by
avoiding the word "don't".

It also removes the listed default for `-Cinline-threshold`, which is
incorrect -- that option doesn't have a static default.
2020-04-19 20:03:18 +10:00
bors
36b1a9296c Auto merge of #70015 - jonas-schievink:gen-needs-drop, r=matthewjasper
Make `needs_drop` less pessimistic on generators

Generators only have non-trivial drop logic when they may store (in upvars or across yields) a type that does.

This prevents generation of some unnecessary MIR in simple generators. There might be some impact on compile times, but this is probably limited in real-world applications.

~~This builds off of https://github.com/rust-lang/rust/pull/69814 since that contains some fixes that are made relevant by *this* PR (see https://github.com/rust-lang/rust/pull/69814#issuecomment-599147269).~~ (this has been merged)
2020-04-19 10:01:16 +00:00
Nicholas Nethercote
58217bc996 Replace uses of parse_opt_* with parse_* where possible.
This lets us specify the default at the options declaration point,
instead of using `.unwrap(default)` or `None | Some(default)` at some
use point far away. It also makes the code more concise.
2020-04-19 19:53:54 +10:00
Nicholas Nethercote
b9bcddc527 Make option type descriptions non-optional.
Because all options now can take a value. This simplifies some code
quite a bit.
2020-04-19 19:53:54 +10:00
Nicholas Nethercote
3093018474 Tweak parse_opt_uint.
Don't set `slot` on failure, like all the other `parse_*` functions.
2020-04-19 19:53:54 +10:00
Nicholas Nethercote
7ec7b572a9 Fix the -Zsanitizer_memory_track_origins error message.
Currently, if you give a bogus value like
`-Zsanitizer-memory-track-origins=99` you get this incorrect error:
```
error: debugging option `sanitizer-memory-track-origins` takes no value
```
This commit fixes it so it gives this instead:
```
error: incorrect value `99` for debugging option `sanitizer-memory-track-origins` - 0, 1, or 2 was expected
```
The commit also makes `parse_sanitizer_memory_track_origins` more
readable.
2020-04-19 19:53:54 +10:00
Nicholas Nethercote
0b92969b8f Clean up the list of parser descriptions.
Put identical ones next to each other, and avoid duplicated strings.
2020-04-19 19:53:54 +10:00
Nicholas Nethercote
94b93d3c1c Allow all boolean options to take values.
They now all accept yes/no/y/n/on/off values. (Previously only some of
them did.)

This commit also makes `parse_bool` and `parse_opt_bool` more concise
and readable, and adds some helpful comments to some functions.
2020-04-19 19:53:54 +10:00
Nicholas Nethercote
2109464cc5 Make some option descriptions fit the usual pattern.
- No trailing '.' chars.
- Use a lower-case letter at the start.
2020-04-19 19:53:53 +10:00
Michal 'vorner' Vaner
f4ded11b49
weak-into-raw: Add {Arc,Rc}::as_ptr
For consistency with Weak
2020-04-19 09:38:16 +02:00
bors
e7497a8ccb Auto merge of #69793 - estebank:predicate-obligations-4, r=nikomatsakis
Maintain chain of derived obligations

When evaluating the derived obligations from super traits, maintain a
reference to the original obligation in order to give more actionable
context in the output.

Continuation (and built on) #69745, subset of #69709.

r? @eddyb
2020-04-19 06:42:51 +00:00
Rustin-Liu
7c28dfe113 Fix has_no_input_arg function has self check
Signed-off-by: Rustin-Liu <rustin.liu@gmail.com>

rename has_no_input_arg to has_only_self_parameter

Signed-off-by: Rustin-Liu <rustin.liu@gmail.com>
2020-04-19 13:38:52 +08:00
Yuki Okushi
e171cdaada
Do not show DefId in diagnostics 2020-04-19 12:31:37 +09:00
bors
a0e52b1e82 Auto merge of #71102 - tmiasko:compiler-builtins, r=Mark-Simulacrum
Update compiler_builtins to 0.1.27

* aarch64: Exclude FP intrinsics on +nofp or +nosimd
* Place intrinsics in individual object files

https://github.com/rust-lang/compiler-builtins/compare/0.1.25...0.1.27
2020-04-19 02:16:13 +00:00
Esteban Küber
d9a5419ef4 Add label to item source of bound obligation 2020-04-18 17:19:53 -07:00
Esteban Küber
ce936e9336 Do not emit note for projected derived obligations 2020-04-18 16:37:08 -07:00