Commit graph

97729 commits

Author SHA1 Message Date
Eduard-Mihai Burtescu
2ff337a8e2 rustc_mir: use the right type for associated const literals. 2019-08-16 15:20:27 +03:00
Eduard-Mihai Burtescu
9107ec1acd rustc_mir: add sanity asserts for the types of ty::Consts. 2019-08-16 15:20:27 +03:00
Eduard-Mihai Burtescu
b565ece5d8 Remove redundant ty fields from mir::Constant and hair::pattern::PatternRange. 2019-08-16 15:20:27 +03:00
bors
5a6d801bf9 Auto merge of #63627 - Centril:rollup-v8i7x5i, r=Centril
Rollup of 7 pull requests

Successful merges:

 - #62593 (Group all ABI tests.)
 - #63173 (Use libunwind from llvm-project submodule for musl targets)
 - #63535 (Continue refactoring resolve and hygiene)
 - #63539 (Suggest Rust 2018 on `<expr>.await` with no such field)
 - #63584 (libcore: more cleanups using `#![feature(associated_type_bounds)]`)
 - #63612 (Do not suggest `try_into` for base types inside of macro expansions)
 - #63615 (Fix typo in DoubleEndedIterator::nth_back doc)

Failed merges:

r? @ghost
2019-08-16 06:53:13 +00:00
Mazdak Farrokhzad
0bd3a85255
Rollup merge of #63615 - jens1o:patch-1, r=jonas-schievink
Fix typo in DoubleEndedIterator::nth_back doc
2019-08-16 08:26:42 +02:00
Mazdak Farrokhzad
8958e50618
Rollup merge of #63612 - estebank:macro-sugg-try-into, r=Centril
Do not suggest `try_into` for base types inside of macro expansions
2019-08-16 08:26:40 +02:00
Mazdak Farrokhzad
7dbd98fa9a
Rollup merge of #63584 - Centril:cleanup-core-with-more-atb, r=alexreg
libcore: more cleanups using `#![feature(associated_type_bounds)]`

Turns out this was indeed a bootstrapping issue from a test with `./x.py check` locally after https://github.com/rust-lang/rust/pull/63534 merged.

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

r? @alexreg
cc @iluuu1994
cc https://github.com/rust-lang/rust/issues/52662
2019-08-16 08:26:39 +02:00
Mazdak Farrokhzad
d9a429a1eb
Rollup merge of #63539 - Centril:2015.await, r=oli-obk
Suggest Rust 2018 on `<expr>.await` with no such field

When type checking a field projection (`fn check_field`) to `<expr>.await` where `<expr>: τ` and `τ` is not a primitive type, suggest switching to Rust 2018. E.g.

```
error[E0609]: no field `await` on type `std::pin::Pin<&mut dyn std::future::Future<Output = ()>>`
  --> $DIR/suggest-switching-edition-on-await.rs:31:7
   |
LL |     x.await;
   |       ^^^^^ unknown field
   |
   = note: to `.await` a `Future`, switch to Rust 2018
   = help: set `edition = "2018"` in `Cargo.toml`
   = note: for more on editions, read https://doc.rust-lang.org/edition-guide
```

Fixes https://github.com/rust-lang/rust/issues/63533

This PR also performs some preparatory cleanups in `fn check_field`; the last 2 commits are where the suggestion is introduced and tested respectively.

r? @varkor
2019-08-16 08:26:38 +02:00
Mazdak Farrokhzad
6e9e6ea39b
Rollup merge of #63535 - petrochenkov:expndata, r=matthewjasper
Continue refactoring resolve and hygiene

The general goal is addressing FIXMEs from the previous PRs.

Merging similar data structures (+ prerequisites for such merging), accounting for the fact that all `ExpnId`s have associated data in `HygieneData` now (less `Option`s).

Also, some renaming.
This should be the last renaming session in this area, I think.

r? @matthewjasper
2019-08-16 08:26:36 +02:00
Mazdak Farrokhzad
32c1005652
Rollup merge of #63173 - malbarbo:musl-libunwind, r=alexcrichton
Use libunwind from llvm-project submodule for musl targets

This avoid downloading libunwind by using the scheme introduced in https://github.com/rust-lang/rust/pull/61544
2019-08-16 08:26:34 +02:00
Mazdak Farrokhzad
100a02a0d8
Rollup merge of #62593 - kper:cleanup_abi, r=Centril
Group all ABI tests.

r? @eddyb

Closes #62401
2019-08-16 08:26:33 +02:00
Jens Hausdorf
e046a7af49
Fix typo in DoubleEndedIterator::nth_back doc 2019-08-15 22:16:59 +02:00
Esteban Küber
fbf1efb949 Do not suggest try_into for base types inside of macro expansions 2019-08-15 11:46:52 -07:00
Vadim Petrochenkov
c76277340e resolve: ParentScope::default -> ParentScope::module 2019-08-15 20:47:15 +03:00
Vadim Petrochenkov
136db2235a hygiene: ExpnInfo -> ExpnData
For naming consistency with everything else in this area
2019-08-15 20:41:45 +03:00
Vadim Petrochenkov
650f19aeae hygiene: Merge a tiny bit of the "share expansion definition data" PR 2019-08-15 20:41:45 +03:00
Vadim Petrochenkov
74190a5e1c syntax_pos: Remove the duplicate global edition
It was introduced to avoid going through `hygiene_data`, but now it's read only once, when `ParseSess` is created, so going through a lock is ok.
2019-08-15 20:41:45 +03:00
Vadim Petrochenkov
1a447738b8 hygiene: Merge ExpnInfo and InternalExpnData 2019-08-15 20:41:45 +03:00
Vadim Petrochenkov
aca1353240 resolve: Add some comments to the main modules 2019-08-15 20:40:47 +03:00
Vadim Petrochenkov
310ee4d98c resolve: Privatize BuildReducedGraphVisitor 2019-08-15 20:40:47 +03:00
Vadim Petrochenkov
ea68bc85e0 resolve: Make ParentScope Copy
By allocating its derive paths on the resolver arena.
2019-08-15 20:40:47 +03:00
Vadim Petrochenkov
59dd07ae2b resolve: Eliminate InvocationData
It was very similar to `ParentScope` and mostly could be replaced by it.
2019-08-15 20:40:18 +03:00
Vadim Petrochenkov
1a1557c285 resolve: Add ParentScope::default, eliminate dummy_parent_scope
Remove some unnecessary parameters from functions
2019-08-15 20:40:18 +03:00
Vadim Petrochenkov
cfbb60bf6d resolve: Do not "normalize away" trait/enum modules prematurely
The previous approach was brittle - what would happen if `ParentScope` wasn't created by `invoc_parent_scope`?
That's exactly the case for various uses of `ParentScope` in diagnostics and in built-in attribute validation.
2019-08-15 20:39:27 +03:00
Vadim Petrochenkov
23b82c3229 resolve: Move macro resolution traces from Modules to Resolver
Traces already contain module info without that.
It's easy to forget to call `finalize_*` on a module.
In particular, macros enum and trait modules weren't finalized.
By happy accident macros weren't placed into those modules until now.
2019-08-15 20:39:27 +03:00
Vadim Petrochenkov
73dee258c1 hygiene: Remove Options from functions returning ExpnInfo
The expansion info is not optional and should always exist
2019-08-15 20:39:27 +03:00
Vadim Petrochenkov
6cb28b6617 Ident::with_empty_ctxt -> Ident::with_dummy_span
`Ident` has had a full span rather than just a `SyntaxContext` for a long time now.
2019-08-15 20:39:26 +03:00
Vadim Petrochenkov
67d6ce4206 syntax_pos: NO_EXPANSION/SyntaxContext::empty() -> SyntaxContext::root()
For consistency with `ExpnId::root`.

Also introduce a helper `Span::with_root_ctxt` for creating spans with `SyntaxContext::root()` context
2019-08-15 20:38:12 +03:00
Vadim Petrochenkov
dfcbe75900 syntax_pos: Introduce a helper for checking whether a span comes from expansion 2019-08-15 20:38:12 +03:00
Kevin Per
26ee99e5d4 Duplicate test-macros.rs to fix test #62593 2019-08-15 19:26:51 +02:00
Kevin Per
4a8ff5bb7c Remove run-pass directory #62593 2019-08-15 17:07:38 +02:00
Kevin Per
a90d0876d1 Move test-macros.rs back to ui to fix tests #62593 2019-08-15 17:05:49 +02:00
Kevin Per
df713dd397 Group all ui tests and move to abi #62593 2019-08-15 16:00:54 +02:00
bors
f7af19c279 Auto merge of #63592 - Centril:rollup-7c6dg3e, r=Centril
Rollup of 9 pull requests

Successful merges:

 - #63155 (Add UWP MSVC targets)
 - #63165 (Add builtin targets for mips64(el)-unknown-linux-muslabi64)
 - #63306 (Adapt AddRetag for shallow retagging)
 - #63467 (Add Catalyst (iOS apps running on macOS) target)
 - #63546 (Remove uses of `mem::uninitialized()` from cloudabi)
 - #63572 (remove unused Level::PhaseFatal)
 - #63577 (Test HRTB issue accepted by compiler)
 - #63582 (Fix ICE #63226)
 - #63586 (cleanup: Remove `Spanned` where possible)

Failed merges:

r? @ghost
2019-08-15 12:35:03 +00:00
Mazdak Farrokhzad
6e8fabb4ac
Rollup merge of #63586 - petrochenkov:nospanned, r=eddyb
cleanup: Remove `Spanned` where possible

It generally only makes sense on enums, otherwise it's more convenient to "flatten" it by adding a span field to the struct it wraps.
2019-08-15 14:34:10 +02:00
Mazdak Farrokhzad
19d6178b8f
Rollup merge of #63582 - JohnTitor:fix-ice-63226, r=oli-obk
Fix ICE #63226

Fixes #63226

r? @oli-obk
2019-08-15 14:34:08 +02:00
Mazdak Farrokhzad
77f2694fdc
Rollup merge of #63577 - meffij:test-hrtb, r=alexcrichton
Test HRTB issue accepted by compiler

Hi! First Rust PR, so if anything needs changing just let me know and I'll take care of it right away.

Closes #50301 which was marked E-needstest
2019-08-15 14:34:07 +02:00
Mazdak Farrokhzad
b1bbd52a59
Rollup merge of #63572 - matklad:no-phase-fatal, r=estebank
remove unused Level::PhaseFatal

r? @estebank
2019-08-15 14:34:05 +02:00
Mazdak Farrokhzad
e452738000
Rollup merge of #63546 - lzutao:clouldabi-maybeuninit, r=RalfJung
Remove uses of `mem::uninitialized()` from cloudabi

This PR removes uses of `mem::uninitialized` from `cloudabi` module,
excluding the layout test in `src/libstd/sys/cloudabi/abi/cloudabi.rs`.

r? @RalfJung
cc @EdSchouten
cc #62397
2019-08-15 14:34:04 +02:00
Mazdak Farrokhzad
ae53a9e363
Rollup merge of #63467 - terhechte:support-ios-catalyst-macabi-target-triple, r=estebank
Add Catalyst (iOS apps running on macOS) target

This is a first attempt of adding support for the new [Apple Catalyst](https://developer.apple.com/ipad-apps-for-mac/) target (i.e. running iOS apps on macOS). Currently, `rustc` supports the iOS and iOS simulator targets for iOS:
- iOS: ARM cpu, iOS SDK, linked agains the iOS ABI
- Simulator: X86_64 cpu, iOS SDK, linked against the iOS ABI

Apple Catalyst will add an additional target:
- Macabi: X86_64 CPU, iOS SDK, linked again the macOS ABI.

Note, it the actual SDK is the also the macOS 10.15 SDK, but the symbols are the iOS SDK symbols as they were added to macOS with 10.15.

I've collected additional information via links in the open question sections below. This is way out of my comfort zone so please excuse whatever errors I may have made.

# Open Questions:

## Clang Version
It seems to me that `macabi` has not been merged into `clang` yet, I don't know whether that is a requirement rustc to compile, or if it is sufficient if the Clang that is used on a developers system is the correct one supporting macabi (that comes with current Xcode)

## Hardcoded iOS version

`swift-llvm` actually used [x86_64-apple-ios13.0-macabi](3f1fd4f46a) as the target triple which hard-codes the current iOS version. A post on stackoverflow [points out that `MIN_IOS_VERSION` and `MIN_OSX_VERSION` should be used when compiling C code for clang (`-target x86_64-apple-ios${MIN_IOS_VERSION}-macabi`)](https://stackoverflow.com/questions/56487645/how-to-compile-a-3rd-party-library-to-be-used-with-uikit-for-mac-catalyst). However, I wasn't entirely sure how to do that in this PR. Pointers welcome.

## Data Layout
I'm probably using the wrong data-layout. I don't know whether it should be the macOS version or the iOS version. This is probably easier to answer for somebody who understands these things much better than me. I just copied the iOS Simulator X86_64 version as it seems to be (based on what I understand) that Catalyst is just the simulator target build against a different SDK.

# Current State
1. I got it to compile
2. I could successfully compile a `macabi` `libcore` via `cargo build --target x86_64-apple-ios-macabi`

I'm not sure what needs to be done next. Supposedly I need to compile everything into a toolchain somehow that I can then test via `rustup` to make sure that a binary compiled against the toolchain also works with Catalyst. [I read this article, but I'm still lost](https://www.reddit.com/r/rust/comments/5ag60z/how_do_i_bootstrap_rust_to_crosscompile_for_a_new/d9gicr2/) and would love pointers what to do next here.

# Additional Information
- [Commit adding Catalyst support to the Swift Clang Fork](https://github.com/CocoaPods/CocoaPods/issues/8877)
- [Compiling C to Catalyst Discussion](https://github.com/CocoaPods/CocoaPods/issues/8877)
- [CocoaPods Discussion on Adding Catalyst support](https://github.com/CocoaPods/CocoaPods/issues/8877)
2019-08-15 14:34:02 +02:00
Mazdak Farrokhzad
988cd5d50c
Rollup merge of #63306 - RalfJung:retag, r=varkor
Adapt AddRetag for shallow retagging

With https://github.com/rust-lang/miri/pull/872, Miri only retags "bare" references, not those nested in compound types. This adjust `Retag` statement generation to don't emit retags if they are definitely not a bare reference.

I also expanded the mir-opt test to cover the `Retag` in the drop shim, which had previously not been tested.
2019-08-15 14:34:01 +02:00
Mazdak Farrokhzad
7e9682559e
Rollup merge of #63165 - xen0n:mips64-musl-targets, r=alexcrichton
Add builtin targets for mips64(el)-unknown-linux-muslabi64

This is prerequisite for rust-lang/libc#1449.

Tested locally to produce working static and dynamic binaries, ~~but CI config is untested for now~~ CI is to be added in a follow-up PR.

*edit: dynamic binaries also confirmed working!*

*edit 2: changed triples to include ABI, and removed stray `crt_static_default = false` declarations to be consistent with other musl targets*
2019-08-15 14:34:00 +02:00
Mazdak Farrokhzad
1db4bbcced
Rollup merge of #63155 - mfkl:uwp-msvc, r=alexcrichton
Add UWP MSVC targets

Hi,

- The README URI change is the correct one for VS2019 community edition, which I suspect most people would use. Doesn't _need_ to be merged though.
- This 5e6619edd1 fixes the UWP build (msvc or not, doesn't matter). I suspect it broke with recent changes unnoticed because no CI.
- Store lib location is found through the VCToolsInstallDir env variable. The end of the path is currently for the VS2019 store lib locations only.
- I could not test the aarch64_uwp_windows_msvc target because the rust build script does not currently support arm64 msvc AFAIU.
2019-08-15 14:33:58 +02:00
Marco A L Barbosa
5941acd80f Use libunwind from llvm-project submodule for musl targets 2019-08-15 08:45:10 -03:00
Ralf Jung
2122fe4611 ignore tests on wasm32-bare 2019-08-15 12:54:56 +02:00
Ralf Jung
9776dbdac3 test Retag in drop shim 2019-08-15 12:51:58 +02:00
Ralf Jung
15810af0d6 don't add Retag statements for compound types 2019-08-15 12:51:58 +02:00
Kevin Per
cac53fe3f2 Fixing broken tests #62401
The grouping led to a lot of `mv`. Therefore, some relative paths were
wrong. In this commit the dependent files were also moved so that the paths
work again.
2019-08-15 11:40:14 +02:00
Kevin Per
98325eb592 Grouping ABI tests (2) #62401 2019-08-15 11:39:48 +02:00
Kevin Per
f036faeb35 Grouping ABI test #62401 2019-08-15 11:37:19 +02:00