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
1a447738b8
hygiene: Merge ExpnInfo and InternalExpnData
2019-08-15 20:41:45 +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
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
Vadim Petrochenkov
a6182711ef
Remove Spanned from {ast,hir}::FieldPat
2019-08-15 12:31:50 +03:00
Vadim Petrochenkov
433b1e36e1
Remove Spanned from ast::Mac
2019-08-15 11:45:28 +03:00
Yuki Okushi
7adb20e4cd
Use is_const()
2019-08-15 17:37:54 +09:00
Yuki Okushi
29b5ebf8a5
Use a match guard to avoid code repetition
2019-08-15 16:58:43 +09:00
Yuki Okushi
5b88fbabeb
Check FnHeader not to cause ICE
2019-08-15 13:56:57 +09:00
bors
9e9a136fce
Auto merge of #63575 - Centril:rollup-anlv9g5, r=Centril
...
Rollup of 11 pull requests
Successful merges:
- #62984 (Add lint for excess trailing semicolons)
- #63075 (Miri: Check that a ptr is aligned and inbounds already when evaluating `*`)
- #63490 (libsyntax: cleanup and refactor `pat.rs`)
- #63507 (When needing type annotations in local bindings, account for impl Trait and closures)
- #63509 (Point at the right enclosing scope when using `await` in non-async fn)
- #63528 (syntax: Remove `DummyResult::expr_only`)
- #63537 (expand: Unimplement `MutVisitor` on `MacroExpander`)
- #63542 (Add NodeId for Arm, Field and FieldPat)
- #63543 (Merge Variant and Variant_)
- #63560 (move test that shouldn't be in test/run-pass/)
- #63570 (Adjust tracking issues for `MaybeUninit<T>` gates)
Failed merges:
r? @ghost
2019-08-15 00:32:05 +00:00
Mazdak Farrokhzad
ad44d42750
Rollup merge of #63543 - c410-f3r:variant, r=c410-f3r
...
Merge Variant and Variant_
Extracted from #63468 .
2019-08-14 22:56:29 +02:00
Mazdak Farrokhzad
02e2a57f26
Rollup merge of #63509 - estebank:async-span, r=Centril
...
Point at the right enclosing scope when using `await` in non-async fn
Fix #63398 .
2019-08-14 22:56:24 +02:00
Mazdak Farrokhzad
d2d49d238f
Rollup merge of #63507 - estebank:type-inference-error, r=Centril
...
When needing type annotations in local bindings, account for impl Trait and closures
Fix https://github.com/rust-lang/rust/issues/46680 , fix https://github.com/rust-lang/rust/issues/63504 , fix https://github.com/rust-lang/rust/issues/63506 , fix #40014 , cc https://github.com/rust-lang/rust/issues/63502 .
2019-08-14 22:56:22 +02:00
Mazdak Farrokhzad
c358476c1b
Rollup merge of #63075 - RalfJung:deref-checks, r=oli-obk
...
Miri: Check that a ptr is aligned and inbounds already when evaluating `*`
This syncs Miri with what the Nomicon and the Reference say, and resolves https://github.com/rust-lang/miri/issues/447 .
Also this would not have worked without https://github.com/rust-lang/rust/pull/62982 due to new cycles. ;)
r? @oli-obk
2019-08-14 22:56:20 +02:00
bors
082cf2f9d1
Auto merge of #63534 - Mark-Simulacrum:stage0-bump, r=Centril
...
Bump to 1.39
r? @Centril
2019-08-14 20:49:07 +00:00
Esteban Küber
6c3a98e029
review comments
2019-08-14 12:14:25 -07:00
Caio
6a42b0b28d
Merge Variant and Variant_
2019-08-14 14:47:01 -03:00
Mark Rousskov
2601c86487
Handle cfg(bootstrap) throughout
2019-08-14 05:39:53 -04:00
Mazdak Farrokhzad
5741e29417
Rollup merge of #63501 - nikomatsakis:issue-63500-async-anon-impl-lifetime, r=cramertj
...
use `ParamName` to track in-scope lifetimes instead of Ident
Also, clear in-scope lifetimes when visiting nested items.
Fixes #63500 .
Fixes #63225 .
Fixes #52532 .
r? @cramertj
2019-08-14 04:18:49 +02:00
Mazdak Farrokhzad
4134241bcf
Rollup merge of #63499 - nikomatsakis:issuee-63388-async-fn-elision-self-mut-self, r=cramertj
...
handle elision in async fn correctly
We now always make fresh lifetimne parameters for all elided
lifetimes, whether they are in the inputs or outputs. But then
we generate `'_` in the case of elided lifetimes from the outputs.
Example:
```rust
async fn foo<'a>(x: &'a u32) -> &u32 { .. }
```
becomes
```rust
type Foo<'a, 'b> = impl Future<Output = &'b u32>;
fn foo<'a>(x: &'a u32) -> Foo<'a, '_>
```
Fixes #63388
2019-08-14 04:18:48 +02:00
Esteban Küber
806476c840
Suggest giving return type to closures on E0282
2019-08-13 16:41:43 -07:00
Esteban Küber
939c1cb349
review comments
2019-08-13 11:24:08 -07:00
Esteban Küber
13fd4666b0
Point at the right enclosing scope when using await in non-async fn
2019-08-13 00:52:07 -07:00
Esteban Küber
fb2511c3c5
Suggest Box::new when appropriate
...
When encountering a boxed value as expected and a stack allocated value
that could be boxed to fulfill the expectation, like in the following
snippet, suggest `Box::new` wrapping.
2019-08-12 20:24:30 -07:00
Esteban Küber
1e6f753762
Fix tidy
2019-08-12 20:24:26 -07:00
Esteban Küber
3b6d46c640
Resolve types when suggesting boxed closure
2019-08-12 18:12:19 -07:00
Niko Matsakis
e4756e6b07
clear in-scope lifetimes for nested items in HIR lowering
...
This was causing us to incorrectly think the lifetimes were
already declared on the scope for the nested item, when in fact
they are not inherited.
2019-08-12 21:08:32 -04:00
Esteban Küber
b8708e2c9a
When needing type annotations in local bindings, account for impl Trait and closures
...
Do not suggest nonsensical types when the type inference is failing on
`impl Trait` or anonymous closures.
2019-08-12 16:50:46 -07:00
Niko Matsakis
948739f2ee
revamp comment
2019-08-12 19:21:13 -04:00
Niko Matsakis
cbe8518407
use modern everywhere
2019-08-12 18:14:48 -04:00
Niko Matsakis
03e7b96281
revamp how we handle elision in async fn
...
We now always make fresh lifetimne parameters for all elided
lifetimes, whether they are in the inputs or outputs. But then
we generate `'_` in the case of elided lifetimes from the outputs.
Example:
```rust
async fn foo<'a>(x: &'a u32) -> &u32 { .. }
```
becomes
```rust
type Foo<'a, 'b> = impl Future<Output = &'b u32>;
fn foo<'a>(x: &'a u32) -> Foo<'a, '_>
```
2019-08-12 17:18:26 -04:00
Niko Matsakis
18e54539ca
use ParamName to track in-scope lifetimes instead of Ident
...
This allows us to record "fresh" lifetime names for cases like `impl
Foo<'_>`.
2019-08-12 15:19:30 -04:00
Mazdak Farrokhzad
0b4823de23
Rollup merge of #62108 - Zoxc:sharded-queries, r=oli-obk
...
Use sharded maps for queries
Based on https://github.com/rust-lang/rust/pull/61779 .
r? @Gankro
2019-08-12 10:58:12 +02:00
Mark Rousskov
4229dc3538
Rollup merge of #63464 - Mark-Simulacrum:deref-instance, r=eddyb
...
Copy ty::Instance instead of passing by reference
ty::Instance is small and Copy, we should not be adding additional
indirection.
Fixes #63409 .
r? @eddyb
2019-08-11 15:18:49 -04:00
Mark Rousskov
c805a38dff
Rollup merge of #63441 - bjorn3:patch-1, r=Mark-Simulacrum
...
Derive Debug for CrateInfo
2019-08-11 15:18:44 -04:00
Mark Rousskov
8122a01b27
Rollup merge of #63440 - RalfJung:ctfe-backtrace, r=oli-obk
...
rename RUST_CTFE_BACKTRACE to RUSTC_CTFE_BACKTRACE
This matches `RUSTC_LOG`. Both affect only rustc, not any Rust program.
2019-08-11 15:18:43 -04:00
Mark Rousskov
061245e2b1
Rollup merge of #63346 - RalfJung:zeroed-lint, r=eddyb
...
Lint on some incorrect uses of mem::zeroed / mem::uninitialized
Cc https://github.com/rust-lang/rust/issues/62825 and https://internals.rust-lang.org/t/make-mem-uninitialized-and-mem-zeroed-panic-for-some-types-where-0-is-a-niche/10605
This does not yet handle `NonNull`/`NonZero*`, but it is a start.
I also improved some doc issues I hit on the way, and added a useful helper to `TyS`.
EDIT: I added the relnotes label mostly as a proposal -- I think this is worth mentioning, but leave the decision up to the release team.
2019-08-11 15:18:40 -04:00
Mark Rousskov
43de341f19
Copy ty::Instance instead of passing by reference
...
ty::Instance is small and Copy, we should not be adding additional
indirection.
2019-08-11 10:54:38 -04:00
bjorn3
b204232fd3
Derive Debug for NativeLibrary and NativeLibraryKind
2019-08-11 16:51:36 +02:00
bors
8a068699a2
Auto merge of #63446 - Centril:refactor-lowering, r=oli-obk
...
Refactor and categorize lowering wrt. items / exprs
Split lowering into more files along the lines of "expression related" and "item related".
Also refactor huge methods into smaller ones.
A next step might be to introduce "type related" and merge patterns and statements combined with expressions into "value related". There's still more work to do but the PR was getting too big :)
r? @oli-obk
2019-08-11 13:37:37 +00:00
Ralf Jung
3972d05fec
proper doc comment for 'recovered' field of variant
...
Curtesy of petrochenkov
2019-08-11 12:04:49 +02:00
Ralf Jung
4b062a175f
note a FIXME
2019-08-11 12:04:49 +02:00
Ralf Jung
8e6fbbec83
add tuple_fields convenience method and use it in a few places
2019-08-11 12:04:49 +02:00
Ralf Jung
fbd56131a9
fix a comment
2019-08-11 12:04:49 +02:00
Vadim Petrochenkov
e18ad70d2b
diagnostics: Describe crate root modules in DefKind::Mod as "crate"
2019-08-10 23:17:20 +03:00
Mazdak Farrokhzad
eb229bca0d
lowering: move lower_arg -> item.rs
2019-08-10 20:24:43 +02:00