Commit graph

25316 commits

Author SHA1 Message Date
Mazdak Farrokhzad
a7f1649fbb
Rollup merge of #62607 - estebank:this-mem-is-out-of-control, r=petrochenkov
Correctly break out of recovery loop

Fix #61858.
2019-07-12 22:46:52 +02:00
Mazdak Farrokhzad
992bcd0266
Rollup merge of #62578 - JohnTitor:add-test-for-49919, r=alexcrichton
Add test for #49919

Closes #49919
2019-07-12 22:46:46 +02:00
Mazdak Farrokhzad
d70ea7ce48
Rollup merge of #62568 - lzutao:replace_may_dangle, r=matthewjasper
Replace unsafe_destructor_blind_to_params with may_dangle

This PR will completely remove support for `#[unsafe_destructor_blind_to_params]` attribute,
which is deprecated in #38970 by `[may_dangle]` unsafe  attribute.

Closes #34761
2019-07-12 22:46:44 +02:00
Mazdak Farrokhzad
e706438d00
Rollup merge of #62453 - zackmdavis:single_path, r=estebank
in which we suggest anonymizing single-use lifetimes in paths

Following @nikomatsakis's [October 2017 comment](https://github.com/rust-lang/rust/issues/44752#issuecomment-340885834).

![path_anon_suggest](https://user-images.githubusercontent.com/1076988/60761598-e2619180-a000-11e9-9144-1bdf8eb848e3.png)

r? @estebank
cc @eddyb (you were saying something about running single-use-lifetimes against the tree the other week?)
2019-07-12 22:46:43 +02:00
Mazdak Farrokhzad
9ffeb26e0b
Rollup merge of #62274 - eddyb:const-false-unwind, r=pnkfelix
rustc_mir: follow FalseUnwind's real_target edge in qualify_consts.

As far as I can tell, this was accidentally omitted from #47802.
Fixes #62272.

r? @matthewjasper or @nikomatsakis
2019-07-12 22:46:40 +02:00
Mazdak Farrokhzad
74ac956fad
Rollup merge of #61535 - ohadravid:test-generic-with-default-assiociated-type-re-rebalance-coherence, r=nikomatsakis
Coherence test when a generic type param has a default value from an associated type

A followup on #61400.
Before `re_rebalance_coherence`, this fails to compile (even though it should be accepted).
`re_rebalance_coherence` had no direct test for this, and I wanted to (a) make sure it doesn't regress in the future and (b) get it on record that this is actually the intended behavior.
2019-07-12 22:46:38 +02:00
Esteban Küber
8c5f6907a1 add test case 2019-07-12 11:13:03 -07:00
Lzu Tao
8347917dd9 Remove feature gate dropck_parametricity completely
Therefore we also remove `#[unsafe_destructor_blind_to_params]`
attribute completly.
2019-07-11 18:44:56 +00:00
Lzu Tao
ab3adf380d Replace unsafe_destructor_blind_to_params with may_dangle 2019-07-11 18:14:56 +00:00
bors
4bb6b4a5ed Auto merge of #62503 - pnkfelix:dont-recur-infiitely-from-print-def-path, r=eddyb
Dont recur infinitely from print_def_path

Fix #61711
2019-07-11 13:34:29 +00:00
Eduard-Mihai Burtescu
baa9efb178 rustc_mir: follow FalseUnwind's real_target edge in qualify_consts. 2019-07-11 12:28:02 +03:00
Vadim Petrochenkov
da50d59881 pretty-print: Do not lose the $crate printing flag in print_tt 2019-07-11 12:07:35 +03:00
Mazdak Farrokhzad
03c26f9b74
Rollup merge of #62519 - pnkfelix:add-test-for-30786, r=pnkfelix
Regression test for HRTB bug (issue 30786).

Close #30786.
2019-07-11 04:33:19 +02:00
Mazdak Farrokhzad
7697b2927f
Rollup merge of #62476 - petrochenkov:expref, r=matthewjasper
Continue refactoring macro expansion and resolution

This PR continues the work started in https://github.com/rust-lang/rust/pull/62042.
It contains a set of more or less related refactorings with the general goal of making things simpler and more orthogonal.
Along the way most of the issues uncovered in https://github.com/rust-lang/rust/pull/62086 are fixed.

The PR is better read in per-commit fashion with whitespace changes ignored.
I tried to leave some more detailed commit messages describing the motivation behind the individual changes.

Fixes https://github.com/rust-lang/rust/issues/44692
Fixes https://github.com/rust-lang/rust/issues/52363
Unblocks https://github.com/rust-lang/rust/pull/62086
r? @matthewjasper
2019-07-11 04:33:17 +02:00
Mazdak Farrokhzad
8fe7ed02d5
Rollup merge of #62270 - agnxy:move-async-test, r=Centril,tmandry
Move async-await tests from run-pass to ui

fix #62236

r? @Centril
2019-07-11 04:33:14 +02:00
Yuki Okushi
37942c4753 Add test for #49919 2019-07-11 09:58:09 +09:00
bors
35cacbce16 Auto merge of #62561 - Centril:rollup-5pxj3bo, r=Centril
Rollup of 5 pull requests

Successful merges:

 - #62275 (rustc_mir: treat DropAndReplace as Drop + Assign in qualify_consts.)
 - #62465 (Sometimes generate storage statements for temporaries with type `!`)
 - #62481 (Use `fold` in `Iterator::last` default implementation)
 - #62493 (#62357: doc(ptr): add example for {read,write}_unaligned)
 - #62532 (Some more cleanups to syntax::print)

Failed merges:

r? @ghost
2019-07-10 23:02:44 +00:00
Vadim Petrochenkov
e86e5cb38f Add a regression test for #44692
Add a test for the issue resolved by removing `resolve_macro_path`

Add a test making sure that extern prelude entries introduced from an opaque macro are not visible anywhere, even it that macro

Fix test output after rebase
2019-07-11 00:35:01 +03:00
Vadim Petrochenkov
7b74d72d9a Fix failing tests 2019-07-11 00:12:57 +03:00
Vadim Petrochenkov
b003dd6d9b expand: Merge expand_{bang,attr,derive}_invoc into a single function
It's more convenient to have all this highly related stuff together on one screen (for future refactorings).
The `expand_invoc` function is compact enough now, after all the previous refactorings.
2019-07-11 00:12:57 +03:00
Vadim Petrochenkov
374a80a86d expand: It's always possible to create a dummy AST fragment
Remove a bunch of `Option`s that assumed that dummy fragment creation could fail.

The test output changed due to not performing the expansion in `fn expand_invoc` in case of the recursion limit hit.
2019-07-11 00:12:57 +03:00
Vadim Petrochenkov
0ec6ea7333 resolve: Fix access to extern and stdlib prelude from opaque macros
Ok, it's hard to explain what happens, but identifier's hygienic contexts need to be "adjusted" to modules/scopes before they are resolved in them.
To be resolved in all kinds on preludes the identifier needs to be adjusted to the root expansion (aka "no expansion").

Previously this was done for the `macro m() { ::my_crate::foo }` case, but forgotten for all other cases.
2019-07-11 00:12:08 +03:00
Vadim Petrochenkov
f923942094 resolve: Divide macro path resolution into speculative and error reporting parts
Also move macro stability checking closer to other checks performed on obtained resolutions.
Tighten the stability spans as well, it is an error to *refer* to and unstable entity in any way, not only "call" it.
2019-07-11 00:12:08 +03:00
Vadim Petrochenkov
3041ec6118 resolve/expand: Catch macro kind mismatches early in resolve
This way we are processing all of them in a single point, rather than separately for each syntax extension kind.
Also, the standard expected/found wording is used.
2019-07-11 00:12:08 +03:00
Vadim Petrochenkov
f16993d4ac resolve/expand: resolve_macro_invocation no longer returns determinate errors
It either returns the indeterminacy error, or valid (but perhaps dummy) `SyntaxExtension`.

With this change enum `Determinacy` is no longer used in libsyntax and can be moved to resolve.

The regressions in diagnosics are fixed in the next commits.
2019-07-11 00:12:08 +03:00
Vadim Petrochenkov
cd0fd630e8 resolve: Make proc macro stubs less stubby
Create real working and registered (even if dummy) `SyntaxExtension`s for them.
This improves error recovery and allows to avoid all special cases for proc macro stubs (except for the error on use, of course).

The introduced dummy `SyntaxExtension`s can be used for any other inappropriately resolved macros as well.
2019-07-11 00:12:08 +03:00
Vadim Petrochenkov
3eafaae510 syntax: Make def-site span mandatory in ExpnInfo/MacroBacktrace/DiagnosticSpanMacroExpansion
We have to deal with dummy spans anyway

Remove def-site span from expander interfaces.
It's not used by the expansion infra, only by specific expanders, which can keep it themselves if they want it.
2019-07-11 00:12:07 +03:00
Vadim Petrochenkov
48635226d8 Remove MacroKind::ProcMacroStub
It's internal to resolve and always results in `Res::Err` outside of resolve.
Instead put `DefKind::Fn`s themselves into the macro namespace, it's ok.

Proc macro stubs are items placed into macro namespase for functions that define proc macros.
https://github.com/rust-lang/rust/pull/52383

The rustdoc test is changed because the old test didn't actually reproduce the ICE it was supposed to reproduce.
2019-07-11 00:12:07 +03:00
Felix S. Klock II
fa0809d3cd Regression test for issue 30786. 2019-07-10 16:43:19 +02:00
Mazdak Farrokhzad
5760bc6e98
Rollup merge of #62465 - matthewjasper:never-type-storage, r=pnkfelix
Sometimes generate storage statements for temporaries with type `!`

Closes #62165
cc #42371
2019-07-10 16:08:21 +02:00
Mazdak Farrokhzad
a2cbae8ad3
Rollup merge of #62275 - eddyb:const-drop-replace, r=pnkfelix
rustc_mir: treat DropAndReplace as Drop + Assign in qualify_consts.

This slipped through the cracks and never got implemented (thankfully that just meant it was overly conservative and didn't allow assignments that don't *actually* drop the previous value).
Fixes #62273.

r? @oli-obk
2019-07-10 16:08:19 +02:00
Andrew Xu
128143c4e5
Ignore async-fn-size-moved-locals test on wasm
The sizes for wasm are different.

Co-Authored-By: Tyler Mandry <tmandry@gmail.com>
2019-07-10 21:18:51 +08:00
bors
c6a9e766f9 Auto merge of #62339 - pnkfelix:issue-61188-use-visitor-for-structural-match-check, r=nikomatsakis
use visitor for #[structural_match] check

This changes the code so that we recur down the structure of a type of a const (rather than just inspecting at a shallow one or two levels) when we are looking to see if it has an ADT that did not derive `PartialEq` and `Eq`.

Fix #61188

Fix #62307

Cc #62336
2019-07-10 12:26:44 +00:00
Mazdak Farrokhzad
6c0a406b1c
Rollup merge of #62474 - nikic:update-llvm, r=alexcrichton
Prepare for LLVM 9 update

Main changes:

 * In preparation for opaque pointer types, the `byval` attribute now takes a type. As such, the argument type needs to be threaded through to the function/callsite attribute application logic.
 * On ARM the `+fp-only-sp` and `+d16` features have become `-fp64` and `-d32`. I've switched the target definitions to use the new names, but also added bidirectional emulation so either can be used on any LLVM version for backwards compatibility.
 * The datalayout can now specify function pointer alignment. In particular on ARM `Fi8` is specified, which means that function pointer alignment is independent of function alignment. I've added this to our datalayouts to match LLVM (which is something we check) and strip the fnptr alignment for older LLVM versions.
 * The fmul/fadd reductions now always respect the accumulator (including for unordered reductions), so we should pass the identity instead of undef.

Open issues:

 * https://reviews.llvm.org/D62106 causes linker errors with ld.bdf due to https://sourceware.org/bugzilla/show_bug.cgi?id=24784. To avoid this I've enabled `RelaxELFRelocations`, which results in a GOTPCRELX relocation for `__tls_get_addr` and avoids the issue. However, this is likely not acceptable because relax relocations are not supported by older linker versions. We may need an LLVM option to keep using PLT for `__tls_get_addr` despite `RtLibUseGOT`.

The corresponding llvm-project PR is https://github.com/rust-lang/llvm-project/pull/19.

r? @ghost
2019-07-10 05:14:10 +02:00
Mazdak Farrokhzad
fe26fc9a1c
Rollup merge of #62393 - petrochenkov:notto-disu, r=Mark-Simulacrum
Fix pretty-printing of `$crate` (take 4)

Pretty-print `$crate` as `crate` or `crate_name` in unstructured tokens like `a $crate c` in `foo!(a $crate c)`, but only if those tokens are printed as a part of AST pretty-printing, rather than as a standalone token stream.

Fixes https://github.com/rust-lang/rust/issues/62325
Previous iterations - https://github.com/rust-lang/rust/pull/56647, https://github.com/rust-lang/rust/pull/57155, https://github.com/rust-lang/rust/pull/57915.
2019-07-10 05:14:09 +02:00
bors
e7efdf1c33 Auto merge of #62542 - Centril:rollup-5mpb8tu, r=Centril
Rollup of 9 pull requests

Successful merges:

 - #62417 (Fix ICEs when `Self` is used in type aliases)
 - #62450 (Raise the default recursion limit to 128)
 - #62470 (Prevent shrinking of "crate select" element on Firefox)
 - #62515 (cli: make help output for -l and -L consistent)
 - #62520 (Regression test for issue 42574.)
 - #62526 (normalize use of backticks in compiler messages for libsyntax/feature_gate.rs)
 - #62527 (clarify that debug_assert does not completely omits the code)
 - #62535 (ci: Configure $CI_JOB_NAME correctly)
 - #62541 (Add spastorino for rustc-guide toolstate)

Failed merges:

r? @ghost
2019-07-09 22:02:58 +00:00
Nikita Popov
ac560258e3 Adjust codegen tests for DISPFlagMainSubprogram 2019-07-09 21:55:29 +02:00
Vadim Petrochenkov
4cb67c0f1c Add a test case with $crate from other crate 2019-07-09 22:45:25 +03:00
Vadim Petrochenkov
3997507786 Resolve $crate in all hygienic contexts for pretty-pringing
Stop visiting AST to discover those contexts, just iterate through hygiene data instead
2019-07-09 22:17:44 +03:00
Vadim Petrochenkov
4344a90308 Pretty-print $crate as crate/::my_crate in tokens
...but only if those tokens are printed from inside of AST pretty-printing.
2019-07-09 22:17:44 +03:00
Vadim Petrochenkov
7aaf0de700 Add a test for $crate inside macro invocation 2019-07-09 22:17:44 +03:00
Mazdak Farrokhzad
c57a223f15
Rollup merge of #62526 - fakenine:normalize_use_of_backticks_compiler_messages_p4, r=Centril
normalize use of backticks in compiler messages for libsyntax/feature_gate.rs

https://github.com/rust-lang/rust/issues/60532
2019-07-09 21:01:55 +02:00
Mazdak Farrokhzad
e6f68a93b3
Rollup merge of #62520 - pnkfelix:add-test-for-42574, r=alexcrichton
Regression test for issue 42574.

Cc #42574.

I'm not going to say this *closes* that issue yet, for two reasons:

 1. I am still confused about some aspects of the behavior we are observing that bug

 2. The "fix" to the diagnostic relies on full NLL (`#![feature(nll)]`); migration mode still has a subpar diagnostic.
2019-07-09 21:01:53 +02:00
Mazdak Farrokhzad
9c144335bf
Rollup merge of #62450 - nagisa:reclimit, r=pnkfelix
Raise the default recursion limit to 128

The previous limit of 64 is being (just) barely hit by genuine code out there, which is causing issues like https://github.com/rust-lang/rust/issues/62059 to rear their end.

Ideally, we wouldn’t have such arbitrary limits at all, but while we do, it makes a lot of sense to just raise this limit whenever genuine use-cases end up hitting it.

r? @pnkfelix

Fixes https://github.com/rust-lang/rust/issues/62059
2019-07-09 21:01:49 +02:00
Mazdak Farrokhzad
2c2062e83b
Rollup merge of #62417 - alexreg:fix-self-in-type-alias, r=pnkfelix
Fix ICEs when `Self` is used in type aliases

I think it is right just to disallow this at resolution stage rather than let typeck produce a cyclic error. This is in line with previous behaviour. There was probably no need at all for the change that introduced this bug in #57428, so I've simply reversed it.

Fixes #62263, #62364, #62305.

r? @eddyb
2019-07-09 21:01:48 +02:00
bors
0b680cfce5 Auto merge of #62221 - jonas-schievink:normalize-impl-trait, r=nikomatsakis
Normalize projections appearing in `impl Trait`

Fixes #60414

This does not try to do the same for `existential type`s (which have the same bug), since that always seems to lead to cycle errors.
2019-07-09 18:35:12 +00:00
Ohad Ravid
194814065c Added a test for coherence when a generic type param has a default value from an associated type 2019-07-09 17:35:30 +02:00
bors
b8ec4c4d11 Auto merge of #62233 - matthewjasper:exit-arm-scopes, r=pnkfelix
Exit arm scopes

Due to a bug in the HIR CFG construction, borrows for arm scopes were incorrectly leaking into other arms.
This PR also includes some drive-by improvements to `-Zunpretty=hir,identified` that would have been helpful while investigating this.

Closes #62107
2019-07-09 13:10:31 +00:00
Samy Kacimi
41e71b0c93
normalize use of backticks in compiler messages for libsyntax/feature_gate
https://github.com/rust-lang/rust/issues/60532
2019-07-09 14:13:28 +02:00
Niko Matsakis
66e026666d rewrite the test to workaround #51525 2019-07-09 06:57:52 -04:00