Commit graph

7698 commits

Author SHA1 Message Date
Irina Popa
b63d7e2b1c Rename trans to codegen everywhere. 2018-05-17 15:08:30 +03:00
bors
448cc578a9 Auto merge of #48557 - matthewjasper:allow-trvial-bounds, r=nikomatsakis
Implement RFC 2056 trivial constraints in where clauses

This is an implementation of the new behaviour for #48214. Tests are mostly updated to show the effects of this. Feature gate hasn't been added yet.

Some things that are worth noting and are maybe not want we want

* `&mut T: Copy` doesn't allow as much as someone might expect because there is often an implicit reborrow.
* ~There isn't a check that a where clause is well-formed any more, so `where Vec<str>: Debug` is now allowed (without a `str: Sized` bound).~

r? @nikomatsakis
2018-05-16 09:03:38 +00:00
Matthew Jasper
dc8ce4c139 Update existing tests for trivial bounds changes 2018-05-15 11:43:59 +01:00
bors
eca0da5985 Auto merge of #50351 - varkor:vestigial-never-conversion, r=nikomatsakis
Remove vestigial diverging !-coercion

Such conversions are no longer permitted. Fixes #50350.

r? @nikomatsakis
2018-05-15 10:34:45 +00:00
bors
d711dc9d57 Auto merge of #50011 - varkor:partialord-opt-ii, r=Manishearth
Ensure derive(PartialOrd) is no longer accidentally exponential

Previously, two comparison operations would be generated for each field, each of which could delegate to another derived PartialOrd. Now we use ordering and optional chaining to ensure each pair of fields is only compared once, addressing https://github.com/rust-lang/rust/issues/49650#issuecomment-379467572.

Closes #49505.

r? @Manishearth (sorry for changing it again so soon!)

Close #50755
2018-05-15 03:14:46 +00:00
Alex Crichton
da79ff3cc2 rustc: Only suggest deleting extern crate if it works
This commit updates one of the edition lints to only suggest deleting `extern
crate` if it actually works. Otherwise this can yield some confusing behavior
with rustfix specifically where if you accidentally deny the `rust_2018_idioms`
lint in the 2015 edition it's suggesting features that don't work!
2018-05-12 08:39:05 -06:00
Alex Crichton
2885632706 rustc: Allow an edition's feature on that edition
This commit fixes a hard error where the `#![feature(rust_2018_preview)]`
feature was forbidden to be mentioned when the `--edition 2018` flag was passed.
This instead silently accepts that feature gate despite it not being necessary.
It's intended that this will help ease the transition into the 2018 edition as
users will, for the time being, start off with the `rust_2018_preview` feature
and no longer immediately need to remove it.

Closes #50662
2018-05-12 08:39:05 -06:00
bors
295d98069f Auto merge of #50390 - hdhoang:46205_deny_by_default, r=nikomatsakis
lint: deny incoherent_fundamental_impls by default

Warn the ecosystem of the pending intent-to-disallow in #49799.

There are 4 ICEs on my machine, look unrelated (having happened before in https://github.com/rust-lang/rust/issues/49146#issuecomment-384473523)

```rust
thread 'main' panicked at 'assertion failed: position <= slice.len()', libserialize/leb128.rs:97:1
```

```
    [run-pass] run-pass/allocator/xcrate-use2.rs
    [run-pass] run-pass/issue-12133-3.rs
    [run-pass] run-pass/issue-32518.rs
    [run-pass] run-pass/trait-default-method-xc-2.rs
```

r? @nikomatsakis
2018-05-08 04:56:01 +00:00
bors
565235ee7e Auto merge of #50454 - Manishearth:edition-preview-fixes, r=alexcrichton
Various edition preview fixes

Implement a bunch of things discussed in the meeting.
2018-05-07 14:54:17 +00:00
Zack M. Davis
5a5a25c701 in which the must-use additional messaging is tucked into a note
Also, a comment is edited to reflect that spaces around the equals-sign in
attributes is the standard (q.v. rust-lang-nursery/fmt-rfcs@bea80532e7).
2018-05-06 21:51:23 -07:00
Shotaro Yamada
39df2231bb Fix assertion message generation 2018-05-06 12:13:32 +09:00
Manish Goregaokar
9d34e8dd21 Make extern_absolute_paths only work on the new edition 2018-05-04 13:51:12 -07:00
bors
91db9dcf37 Auto merge of #49870 - pnkfelix:issue-27282-immut-borrow-all-pat-ids-in-guards, r=nikomatsakis
Immutably and implicitly borrow all pattern ids for their guards (NLL only)

This is an important piece of rust-lang/rust#27282.

It applies only to NLL mode. It is a change to MIR codegen that is currently toggled on only when NLL is turned on. It thus affect MIR-borrowck but not the earlier static analyses (such as the type checker).

This change makes it so that any pattern bindings of type T for a match arm will map to a `&T` within the context of the guard expression for that arm, but will continue to map to a `T` in the context of the arm body.

To avoid surfacing this type distinction in the user source code (which would be a severe change to the language and would also require far more revision to the compiler internals), any occurrence of such an identifier in the guard expression will automatically get a deref op applied to it.

So an input like:
```rust
let place = (1, Foo::new());
match place {
  (1, foo) if inspect(foo) => feed(foo),
  ...
}
```
will be treated as if it were really something like:
 ```rust
let place = (1, Foo::new());
match place {
    (1, Foo { .. }) if { let tmp1 = &place.1; inspect(*tmp1) }
                    => { let tmp2 = place.1; feed(tmp2) },
    ...
}
```

And an input like:
```rust
let place = (2, Foo::new());
match place {
    (2, ref mut foo) if inspect(foo) => feed(foo),
    ...
}
```
will be treated as if it were really something like:

```rust
let place = (2, Foo::new());
match place {
    (2, Foo { .. }) if { let tmp1 = & &mut place.1; inspect(*tmp1) }
                    => { let tmp2 = &mut place.1; feed(tmp2) },
    ...
}
```

In short, any pattern binding will always look like *some* kind of `&T` within the guard at least in terms of how the MIR-borrowck views it, and this will ensure that guard expressions cannot mutate their the match inputs via such bindings. (It also ensures that guard expressions can at most *copy* values from such bindings; non-Copy things cannot be moved via these pattern bindings in guard expressions, since one cannot move out of a `&T`.)
2018-05-04 15:00:13 +00:00
bors
22a41e4515 Auto merge of #50409 - KiChjang:issue-50343, r=nikomatsakis
Skip checking for unused mutable locals that have no name

Fixes #50343.
2018-05-04 08:22:13 +00:00
bors
e82261dfbb Auto merge of #50413 - kennytm:rollup, r=kennytm
Rollup of 12 pull requests

Successful merges:

 - #50302 (Add query search order check)
 - #50320 (Fix invalid path generation in rustdoc search)
 - #50349 (Rename "show type declaration" to "show declaration")
 - #50360 (Clarify wordings of the `unstable_name_collision` lint.)
 - #50365 (Use two vectors in nearest_common_ancestor.)
 - #50393 (Allow unaligned reads in constants)
 - #50401 (Revert "Implement FromStr for PathBuf")
 - #50406 (Forbid constructing empty identifiers from concat_idents)
 - #50407 (Always inline simple BytePos and CharPos methods.)
 - #50416 (check if the token is a lifetime before parsing)
 - #50417 (Update Cargo)
 - #50421 (Fix ICE when using a..=b in a closure.)

Failed merges:
2018-05-03 20:45:54 +00:00
Felix S. Klock II
28d18fabe3 Unit test for the new implicit borrow and deref within the
guard expressions of matches (activated only when using
new NLL mode).

Review feedback: removed 27282 from filename. (The test still
references it in a relevant comment in the file itself so that seemed
like a reasonable compromise.)
2018-05-03 14:03:16 +02:00
bors
d68b0eceaa Auto merge of #50030 - flip1995:rfc2103, r=petrochenkov
Implement tool_attributes feature (RFC 2103)

cc #44690

This is currently just a rebased and compiling (hopefully) version of #47773.

Let's see if travis likes this. I will add the implementation for `tool_lints` this week.
2018-05-03 11:52:03 +00:00
rleungx
390c3cee6a check if the token is a lifetime before parsing 2018-05-03 19:12:39 +08:00
bors
427c548749 Auto merge of #50378 - varkor:repr-align-max-29, r=eddyb
Reduce maximum repr(align(N)) to 2^29

The current maximum `repr(align(N))` alignment is larger than the maximum alignment accepted by LLVM, which can cause issues for huge values of `N`, as seen in #49492. Fixes #49492.

r? @rkruppe
2018-05-03 05:38:11 +00:00
Keith Yeung
4bc48480c0 Skip checking for unused mutable locals that have no name 2018-05-02 21:43:39 -07:00
Hoàng Đức Hiếu
2885b9e35a lint: deny incoherent_fundamental_impls by default
Warn the ecosystem of the pending intent-to-disallow in #49799.
2018-05-02 17:30:26 +07:00
flip1995
121abd0599
make it compile again 2018-05-02 12:05:13 +02:00
Seiichi Uchida
0de6544117
Change Attribute::name to return the last segment
And fix some typos
2018-05-02 11:48:11 +02:00
Seiichi Uchida
e27d20a7ba
Add tests for a new feature 'tool_attributes' 2018-05-02 11:32:33 +02:00
varkor
cd2f5f7d97 Reduce the maximum alignment to repr(align(1 << 29))
This brings it into line with LLVM's maximum permitted alignment.
2018-05-01 22:02:05 +01:00
Niko Matsakis
5489969fa1
Test is no longer "accepted" 2018-05-01 12:27:09 -04:00
Vadim Petrochenkov
300b6bb417 Remove macro_reexport
It's subsumed by `feature(use_extern_macros)` and `pub use`
2018-05-01 15:58:42 +03:00
varkor
5a013b2fbc Fix coerce-to-bang test
This was explicitly testing the behaviour which is now no longer permitted.
2018-05-01 00:23:34 +01:00
kennytm
909ba8aa78
Rollup merge of #50330 - japaric:used, r=nagisa
check that #[used] is used only on statics

this attribute has no effect on other items. This makes the implementation match what's described in the RFC.

cc #40289

r? @nagisa
2018-05-01 01:18:41 +08:00
Jorge Aparicio
bd4ebf28bd check that #[used] is used only on statics 2018-04-30 07:43:22 +02:00
bors
79252ff4e2 Auto merge of #48605 - KiChjang:unused-mut-warning, r=nikomatsakis
Allow MIR borrowck to catch unused mutable locals

Fixes #47279.

r? @nikomatsakis
2018-04-29 16:25:04 +00:00
Keith Yeung
5a2b590ec0 Track unused mutable variables across closures 2018-04-28 01:55:25 -07:00
Sergio Benitez
f756b072b3 Don't feature gate bang macros on 'proc_macro_path_invoc'. 2018-04-27 21:32:41 -07:00
kennytm
3f84ce2e0e
Rollup merge of #50273 - Amanieu:issue-49532, r=alexcrichton
Allow #[inline] on closures

Fixes #49632
2018-04-28 03:32:18 +08:00
kennytm
8b36d9abaa
Rollup merge of #49968 - christianpoveda:stabilize_dyn, r=nikomatsakis
Stabilize dyn trait

This PR stabilizes RFC 2113. I followed the [stabilization guide](https://forge.rust-lang.org/stabilization-guide.html).

Related issue: https://github.com/rust-lang/rust/issues/49218
2018-04-28 03:32:12 +08:00
Christian Poveda
b80472d84c fixed tests 2018-04-27 11:02:36 -05:00
Christian Poveda
c86f1c8cc3 removed dyn_trait feature from tests 2018-04-27 10:04:35 -05:00
Amanieu d'Antras
5f2c111165 Allow #[inline] on closures
Fixes #49632
2018-04-27 12:34:01 +02:00
bors
ada45fd49a Auto merge of #50275 - kennytm:rollup, r=kennytm
Rollup of 7 pull requests

Successful merges:

 - #49707 (Add "the Rustc book")
 - #50222 (Bump bootstrap compiler to 2018-04-24)
 - #50227 (Fix ICE with erroneous `impl Trait` in a trait impl)
 - #50229 (Add setting to go to item if there is only one result)
 - #50231 (Add more doc aliases)
 - #50246 (Make dump_{alloc,allocs,local}() no-ops when tracing is disabled.)
 - #49894 (Rename InternedString to LocalInternedString and introduce a new thread-safe InternedString)

Failed merges:
2018-04-27 09:59:12 +00:00
kennytm
3f4e5b28b9
Rollup merge of #50227 - sinkuu:ice_non_local_trait, r=estebank
Fix ICE with erroneous `impl Trait` in a trait impl

Fixes #49841.
2018-04-27 16:23:24 +08:00
bors
9822b5709c Auto merge of #49891 - cuviper:compiletest-crash, r=alexcrichton
compiletest: detect non-ICE compiler panics

Fixes #49888, but will be blocked by revealing #49889.
2018-04-27 07:43:46 +00:00
Aravind Gollakota
e423dcc713 Update a compile-fail test 2018-04-26 20:28:30 -05:00
Shotaro Yamada
98c2e0976d Do not ICE on generics mismatch with non-local traits
Fixes #49841
2018-04-26 21:56:21 +09:00
Manish Goregaokar
9f5e08e0a1 Fix crate:: in local paths 2018-04-25 12:01:59 -07:00
varkor
98e3e82ece Use UFCS 2018-04-25 11:26:47 +01:00
varkor
6eb4f0f7fd Ensure derive(PartialOrd) is no longer accidentally exponential
Previously, two comparison operations would be generated for each field, each of which could delegate to another derived PartialOrd. Now we use ordering and optional chaining to ensure each pair of fields is only compared once.
2018-04-25 11:26:47 +01:00
Josh Stone
fedee13834 Disable two-phase-reservation-sharing-interference[nll_beyond]
A comment already stated that this test should be disabled, but its
`should_fail` is not enough to excuse it from a compiler panic.  Remove
it from the `revisions` list to disable it harder.
2018-04-24 16:18:34 -07:00
Oliver Schneider
cd6c186e4e
Warn on all erroneous constants 2018-04-24 13:11:48 +02:00
bors
725c9b0ede Auto merge of #49779 - oli-obk:const_err_regression, r=eddyb
Don't report compile-time errors for promoteds

Fixes the regression part of #49760, the missing warnings still are missing

r? @eddyb
2018-04-23 22:58:00 +00:00
Steven Fackler
9e8f683476 Remove Alloc::oom 2018-04-22 10:08:49 -07:00