Commit graph

30568 commits

Author SHA1 Message Date
Russell Cohen
a93d31603f Fix bug in shebang handling
Shebang handling was too agressive in stripping out the first line in cases where it is actually _not_ a shebang, but instead, valid rust (#70528). This is a second attempt at resolving this issue (the first attempt was flawed, for, among other reasons, causing an ICE in certain cases (#71372, #71471).

The behavior is now codified by a number of UI tests, but simply:
For the first line to be a shebang, the following must all be true:
1. The line must start with `#!`
2. The line must contain a non whitespace character after `#!`
3. The next character in the file, ignoring comments & whitespace must not be `[`

I believe this is a strict superset of what we used to allow, so perhaps a crater run is unnecessary, but probably not a terrible idea.
2020-05-25 10:11:08 -04:00
bors
a0f06d11ae Auto merge of #72354 - tamird:remove-copyright, r=Mark-Simulacrum
Remove dangling COPYRIGHT references

Missed in 2a663555dd.

r? @Mark-Simulacrum
2020-05-25 13:40:42 +00:00
Ralf Jung
d959a8f91d rename lint 2020-05-25 15:32:46 +02:00
Ralf Jung
061773fd2b more test ref-to-packed tests 2020-05-25 11:15:38 +02:00
Ralf Jung
c79535eab9 remove some unused types from the tests 2020-05-25 10:56:48 +02:00
Ralf Jung
b27e649537 add a lint against references to packed fields 2020-05-25 10:56:47 +02:00
Ross MacArthur
4e4b1edda8
Add test for old compiler ICE when using Borrow 2020-05-25 09:23:00 +02:00
bors
997d953eee Auto merge of #72520 - jonas-schievink:cleanup-userty, r=matthewjasper
Clear MIR local type annotations after borrowck
2020-05-25 06:17:15 +00:00
Matthew McAllister
98eb29cbba Fix trait alias inherent impl resolution
Fixes #60021 and #72415.
2020-05-24 17:54:30 -07:00
Alex Gaynor
cd5f228acd
Added a codegen test for a recent optimization for overflow-checks=on
Closes #58692
2020-05-24 16:20:02 -04:00
Aaron Hill
14382c6437
Collect tokens for ast::Expr 2020-05-24 15:54:48 -04:00
bors
94fccccd2c Auto merge of #72529 - RalfJung:rollup-ydthv90, r=RalfJung
Rollup of 3 pull requests

Successful merges:

 - #72284 (Remove `macro_defs` map)
 - #72393 (Rewrite `Parser::collect_tokens`)
 - #72528 (Fix typo in doc comment.)

Failed merges:

r? @ghost
2020-05-24 11:02:23 +00:00
Ralf Jung
8692c45595
Rollup merge of #72393 - Aaron1011:feature/rewrite-collect-tokens, r=petrochenkov
Rewrite `Parser::collect_tokens`

The previous implementation did not work when called on an opening
delimiter, or when called re-entrantly from the same `TokenCursor` stack
depth.

I'm not sure how to test this apart from https://github.com/rust-lang/rust/pull/72287
2020-05-24 12:17:11 +02:00
bors
7726070fa7 Auto merge of #72524 - RalfJung:rollup-s9f1pcc, r=RalfJung
Rollup of 2 pull requests

Successful merges:

 - #72388 (Recursively expand `TokenKind::Interpolated` in `probably_equal_for_proc_macro`)
 - #72517 (small select cleanup)

Failed merges:

r? @ghost
2020-05-24 07:46:13 +00:00
Ralf Jung
fb848a6b7d
Rollup merge of #72388 - Aaron1011:fix/deep-tokenstream-equality, r=petrochenkov
Recursively expand `TokenKind::Interpolated` in `probably_equal_for_proc_macro`

Fixes #68430

When comparing the captured and re-parsed `TokenStream` for a `TokenKind::Interpolated`, we currently treat any nested `TokenKind::Interpolated` tokens as unequal. If a `TokenKind::Interpolated` token shows up in the captured `TokenStream` due to a `macro_rules!` expansion, we will throw away the captured `TokenStream`, losing span information.

This PR recursively invokes `nt_to_tokenstream` on nested `TokenKind::Interpolated` tokens, effectively flattening the stream into a sequence of non-interpolated tokens. This allows it to compare equal with the re-parsed stream, allowing us to keep the original captured `TokenStream` (with span information).

This requires all of the `probably_equal_for_proc_macro` methods to be moved from `librustc_ast` to `librustc_parse` so that they can call `nt_to_tokenstream`.
2020-05-24 09:30:31 +02:00
Michal Sudwoj
e18054d5c0 Added comment about static variables 2020-05-24 08:20:40 +02:00
Michal Sudwoj
5ec6b5eaee Fixed tests 2020-05-24 08:20:40 +02:00
Michal Sudwoj
baa801a929 Minor fixes, as requested in PR review 2020-05-24 08:20:40 +02:00
Michal Sudwoj
58fdc43e03 NVPTX support for new asm! 2020-05-24 08:20:35 +02:00
bors
52b605c8cb Auto merge of #72362 - matthewjasper:remove-rescope, r=nikomatsakis
Remove ReScope

`ReScope` is unnecessary now that AST borrowck is gone and we're erasing the results of region inference in function bodies. This removes about as much of the old regionck code as possible without having to enable NLL fully.

cc #68261

r? @nikomatsakis
2020-05-24 04:15:08 +00:00
Jonas Schievink
2359299537 Clear MIR local type annotations after borrowck 2020-05-24 04:15:23 +02:00
Amanieu d'Antras
3ed1e79cc4 Properly handle InlineAsmOperand::SymFn when collecting monomorphized items
Fixes #72484
2020-05-24 02:04:49 +01:00
Dylan DPC
1e7914467a
Rollup merge of #72502 - RalfJung:generator-discr-ty, r=jonas-schievink
fix discriminant type in generator transform

The generator transform assumed that the discriminant type is always `isize`, which is not correct, leading to [ICEs in Miri](https://github.com/rust-lang/rust/pull/72419/files#r429543536) when some extra sanity checking got enabled.

r? @jonas-schievink @eddyb
2020-05-24 00:00:52 +02:00
Dylan DPC
3948e60700
Rollup merge of #72400 - Aaron1011:fix/asm-incr-ice, r=Amanieu
Add missing ASM arena declarations to librustc_middle

Fixes #72386

These types also need to get allocated on the `librustc_middle` arena
when we deserialize MIR.

@Amanieu: If we end up using your approach in https://github.com/rust-lang/rust/pull/72392 instead, feel free to copy the test I added over to your PR.
2020-05-24 00:00:48 +02:00
Dylan DPC
ff48fc91ee
Rollup merge of #71618 - ecstatic-morse:issue-71394, r=nikomatsakis
Preserve substitutions when making trait obligations for suggestions

Resolves #71394.

I *think* `map_bound_ref` is correct here. In any case, I think a lot of the diagnostic code is using `skip_binder` more aggressively than it should be, so I doubt that this is worse than the status quo. The assertion that `new_self_ty` has no escaping bound vars should be enough.

r? @estebank

cc @nikomatsakis Is the call to `skip_binder` on line 551 (and elsewhere in this file) appropriate? 46ec74e60f/src/librustc_trait_selection/traits/error_reporting/suggestions.rs (L537-L565)
2020-05-24 00:00:42 +02:00
Aaron Hill
8da494272f
Add missing ASM arena declaration to librustc_middle
Fixes #72386

This type also needs to get allocated on the `librustc_middle` arena
when we deserialize MIR.
2020-05-23 15:50:37 -04:00
Nadrieril
3e8ba3a3cb Remove out-of-date comment 2020-05-23 19:39:38 +01:00
Nadrieril
7addc115eb Work around type normalization issues 2020-05-23 18:59:27 +01:00
Dylan DPC
e91897d214
Rollup merge of #72492 - JohnTitor:add-tests, r=matthewjasper
Add some regression tests

Closes #69415
Closes #72455

r? @matthewjasper
2020-05-23 19:10:01 +02:00
Ralf Jung
b388f96495 bless mir-opt tests 2020-05-23 17:20:17 +02:00
Yuki Okushi
47e35cb9bd
Add test for #72455 2020-05-23 17:53:14 +09:00
Yuki Okushi
58fe05a124
Add test for #69415 2020-05-23 17:53:14 +09:00
Stanislav Tkach
a9199de34d Merge spans for the suggestion 2020-05-23 00:16:17 +03:00
Dylan MacKenzie
4d9e9c6d4e Bless other example of #71394 2020-05-22 13:34:41 -07:00
Dylan MacKenzie
8ea828be2f Add regression test for #71394 2020-05-22 13:34:41 -07:00
Dylan DPC
dd78839432
Rollup merge of #71289 - xliiv:70802-intra-self, r=GuillaumeGomez
Allow using `Self::` in doc

Closes #70802
2020-05-22 21:44:52 +02:00
Aaron Hill
30c00fd26a
Add test for macro_rules! invoking a proc-macro with capture groups 2020-05-22 15:07:41 -04:00
Matthew Jasper
f9f3063cfa Update tests 2020-05-22 18:03:08 +01:00
Ralf Jung
53d0046983
Rollup merge of #72123 - jsgf:stabilize-arg0, r=sfackler
Stabilize process_set_argv0 feature for Unix

This stabilizes process_set_argv0 targeting 1.45.0. It has been
useful in practice and seems useful as-is.

The equivalent feature could be implemented for Windows, but as far as I
know nobody has. That can be done separately.

Tracking issue: #66510
2020-05-22 16:58:24 +02:00
Ralf Jung
9c34481c49
Rollup merge of #71829 - kper:issue71136, r=matthewjasper
Fix suggestion to borrow in struct

The corresponding issue is #71136.
The compiler suggests that borrowing `the_foos` might solve the problem. This is obviously incorrect.
```
struct Foo(u8);

#[derive(Clone)]
struct FooHolster {
    the_foos: Vec<Foo>,
}
```

I propose as fix to check if there is any colon in the span. However, there might a case where `my_method(B { a: 1, b : foo })` would be appropriate to show a suggestion for `&B ...`.  To fix that too, we can simply check if there is a bracket in the span. This is only possible because both spans are different.
Issue's span: `the_foos: Vec<Foo>`
other's span: `B { a : 1, b : foo }`
2020-05-22 16:58:19 +02:00
Tymoteusz Jankowski
fc0675bf75
Allow using Self:: in doc 2020-05-22 13:57:05 +02:00
Ralf Jung
62d4e9eedd
Rollup merge of #72306 - Aaron1011:feature/turbo-spacing, r=petrochenkov
Break tokens before checking if they are 'probably equal'

Fixes #68489
Fixes #70987

When checking two `TokenStreams` to see if they are 'probably equal',
we ignore the `IsJoint` information associated with each `TokenTree`.
However, the `IsJoint` information determines whether adjacent tokens
will be 'glued' (if possible) when construction the `TokenStream` - e.g.
`[Gt Gt]` can be 'glued' to `BinOp(Shr)`.

Since we are ignoring the `IsJoint` information, 'glued' and 'unglued'
tokens are equivalent for determining if two `TokenStreams` are
'probably equal'. Therefore, we need to 'unglue' all tokens in the
stream to avoid false negatives (which cause us to throw out the cached
tokens, losing span information).
2020-05-22 11:32:23 +02:00
csmoe
16ba3e129d bless issue-72442 2020-05-22 16:16:37 +08:00
Aaron Hill
52bb09abba
Rewrite Parser::collect_tokens
The previous implementation did not work when called on an opening
delimiter, or when called re-entrantly from the same `TokenCursor` stack
depth.
2020-05-22 03:26:45 -04:00
csmoe
47cc221e98 add mcve for issue 72442 2020-05-22 10:11:17 +08:00
bors
458a3e7629 Auto merge of #71956 - ecstatic-morse:remove-requires-storage-analysis, r=tmandry
Clean up logic around live locals in generator analysis

Resolves #69902. Requires #71893.

I've found it difficult to make changes in the logic around live locals in `generator/transform.rs`. It uses a custom dataflow analysis, `MaybeRequiresStorage`, that AFAICT computes whether a local is either initialized or borrowed. That analysis is using `before` effects, which we should try to avoid if possible because they are harder to reason about than ones only using the unprefixed effects. @pnkfelix has suggested removing "before" effects entirely to simplify the dataflow framework, which I might pursue someday.

This PR replaces `MaybeRequiresStorage` with a combination of the existing `MaybeBorrowedLocals` and a new `MaybeInitializedLocals`. `MaybeInitializedLocals` is just `MaybeInitializedPlaces` with a coarser resolution: it works on whole locals instead of move paths. As a result, I was able to simplify the logic in `compute_storage_conflicts` and `locals_live_across_suspend_points`.

This is not exactly equivalent to the old logic; some generators are now smaller than before. I believe this was because the old logic was too conservative, but I'm not as familiar with the constraints as the original implementers were, so I could be wrong. For example, I don't see a reason the size of the `mixed_sizes` future couldn't be 5K. It went from 7K to 6K in this PR.

r? @jonas-schievink @tmandry
2020-05-22 01:32:42 +00:00
bors
d9417b3851 Auto merge of #72433 - RalfJung:rollup-srft8nx, r=RalfJung
Rollup of 7 pull requests

Successful merges:

 - #72055 (Intern predicates)
 - #72149 (Don't `type_of` on trait assoc ty without default)
 - #72347 (Make intra-link resolve links for both trait and impl items)
 - #72350 (Improve documentation of `slice::from_raw_parts`)
 - #72382 (Show default values for debug-assertions & debug-assertions-std)
 - #72421 (Fix anchor display when hovering impl)
 - #72425 (fix discriminant_value sign extension)

Failed merges:

r? @ghost
2020-05-21 22:14:26 +00:00
Ralf Jung
3d5f130aae
Rollup merge of #72347 - xliiv:72340-impl-for-default, r=GuillaumeGomez
Make intra-link resolve links for both trait and impl items

Closes #72340
2020-05-21 21:10:40 +02:00
Ralf Jung
dc65fd4f6a
Rollup merge of #72149 - estebank:icemation, r=eddyb
Don't `type_of` on trait assoc ty without default

Fix #72076.
2020-05-21 21:10:38 +02:00
bors
9310e3bd4f Auto merge of #71930 - Nadrieril:exhaustiveness-remove-tyerr, r=varkor
De-abuse TyKind::Error in exhaustiveness checking

Replaces https://github.com/rust-lang/rust/pull/71074. Context: https://github.com/rust-lang/rust/issues/70866.

In order to remove the use of `TyKind::Error`, I had to make sure we skip over those fields whose inhabitedness should not be observed. This is potentially error-prone however, since we must be careful not to mix filtered and unfiltered lists of patterns. I managed to hide away most of the filtering behind a new `Fields` struct, that I used everywhere relevant. I quite like the result; I think the twin concepts of `Constructor` and `Fields` make a good mental model.

As usual, I tried to separate commits that shuffle code around from commits that require more thought to review.

cc @varkor @Centril
2020-05-21 18:52:46 +00:00