Commit graph

8589 commits

Author SHA1 Message Date
bors
bbc0238e90 Auto merge of #31962 - sanxiyn:const-eval-map, r=arielb1
Fix #31910.
2016-03-01 11:33:25 +00:00
Alex Crichton
b643782a10 std: Stabilize APIs for the 1.8 release
This commit is the result of the FCPs ending for the 1.8 release cycle for both
the libs and the lang suteams. The full list of changes are:

Stabilized

* `braced_empty_structs`
* `augmented_assignments`
* `str::encode_utf16` - renamed from `utf16_units`
* `str::EncodeUtf16` - renamed from `Utf16Units`
* `Ref::map`
* `RefMut::map`
* `ptr::drop_in_place`
* `time::Instant`
* `time::SystemTime`
* `{Instant,SystemTime}::now`
* `{Instant,SystemTime}::duration_since` - renamed from `duration_from_earlier`
* `{Instant,SystemTime}::elapsed`
* Various `Add`/`Sub` impls for `Time` and `SystemTime`
* `SystemTimeError`
* `SystemTimeError::duration`
* Various impls for `SystemTimeError`
* `UNIX_EPOCH`
* `ops::{Add,Sub,Mul,Div,Rem,BitAnd,BitOr,BitXor,Shl,Shr}Assign`

Deprecated

* Scoped TLS (the `scoped_thread_local!` macro)
* `Ref::filter_map`
* `RefMut::filter_map`
* `RwLockReadGuard::map`
* `RwLockWriteGuard::map`
* `Condvar::wait_timeout_with`

Closes #27714
Closes #27715
Closes #27746
Closes #27748
Closes #27908
Closes #29866
2016-02-29 09:05:33 -08:00
Seo Sanghyeon
33bd1442aa Use HIR map instead of tcx in constant evaluator
Constant evaluator can be called while tcx is in construction.
2016-02-29 22:54:02 +09:00
Manish Goregaokar
543c6a37c0 Rollup merge of #31929 - dotdash:less_rallocx, r=alexcrichton
When foldings Substs, we map over VecPerParamSpace instances using
EnumeratedItems which does not provide an accurate size_hint()
in its Iterator implementation. This leads to quite a large number or
reallocations. Providing a suitable size_hint() implementation reduces
the time spent in item-bodies checking quite a bit.

```
crate  | before | after | ~change
-------|-------------------------
core   |  7.28s | 5.44s |   -25%
std    |  2.07s | 1.88s |  -9.2%
syntax |  8.86s | 8.30s |  -6.3%
```
2016-02-27 10:52:02 +05:30
Manish Goregaokar
2d1843ad9d Rollup merge of #31926 - llogiq:more_post, r=eddyb
These `_post` methods are quite helpful to control lint behavior without storing e.g. block node ids. So here are a few more I believe will be helpful.

r? @Manishearth
2016-02-27 10:52:01 +05:30
Björn Steinbrink
31fef237b6 Avoid excessive reallocations during item-bodies checking
When foldings Substs, we map over VecPerParamSpace instances using
EnumeratedItems which does not provide an accurate size_hint()
in its Iterator implementation. This leads to quite a large number or
reallocations. Providing a suitable size_hint() implementation reduces
the time spent in item-bodies checking quite a bit.

```
crate  | before | after | ~change
-------|-------------------------
core   |  7.28s | 5.44s |   -25%
std    |  2.07s | 1.88s |  -9.2%
syntax |  8.86s | 8.30s |  -6.3%
```
2016-02-27 00:59:43 +01:00
llogiq
d315dc6542 more check_*_post methods for LintPasses 2016-02-27 00:21:20 +01:00
Ulrik Sverdrup
2d6496dd84 Use .copy_from_slice() where applicable
.copy_from_slice() does the same job of .clone_from_slice(), but the
former is explicitly for Copy elements and calls `memcpy` directly, and
thus is it efficient without optimization too.
2016-02-26 14:51:38 +01:00
Manish Goregaokar
7731cdc18c Rollup merge of #31818 - GuillaumeGomez:error_display, r=brson
Fixes #31788
2016-02-25 15:06:06 +05:30
Manish Goregaokar
05485be02f Rollup merge of #31793 - alexcrichton:add-real-option-gating, r=nikomatsakis
This commit adds support for *truly* unstable options in the compiler, as well
as adding warnings for the start of the deprecation path of
unstable-but-not-really options. Specifically, the following behavior is now in
place for handling unstable options:

* As before, an unconditional error is emitted if an unstable option is passed
  and the `-Z unstable-options` flag is not present. Note that passing another
  `-Z` flag does not require passing `-Z unstable-options` as well.
* New flags added to the compiler will be in the `Unstable` category as opposed
  to the `UnstableButNotReally` category which means they will unconditionally
  emit an error when used on stable.
* All current flags are in a category where they will emit warnings when used
  that the option will soon be a hard error.

Also as before, it is intended that `-Z` is akin to `#![feature]` in a crate
where it is required to unlock unstable functionality. A nightly compiler which
is used without any `-Z` flags should only be exercising stable behavior.
2016-02-25 11:41:01 +05:30
Alex Crichton
1282833470 rustc: Refactor how unstable flags are handled
This commit adds support for *truly* unstable options in the compiler, as well
as adding warnings for the start of the deprecation path of
unstable-but-not-really options. Specifically, the following behavior is now in
place for handling unstable options:

* As before, an unconditional error is emitted if an unstable option is passed
  and the `-Z unstable-options` flag is not present. Note that passing another
  `-Z` flag does not require passing `-Z unstable-options` as well.
* New flags added to the compiler will be in the `Unstable` category as opposed
  to the `UnstableButNotReally` category which means they will unconditionally
  emit an error when used on stable.
* All current flags are in a category where they will emit warnings when used
  that the option will soon be a hard error.

Also as before, it is intended that `-Z` is akin to `#![feature]` in a crate
where it is required to unlock unstable functionality. A nightly compiler which
is used without any `-Z` flags should only be exercising stable behavior.
2016-02-24 11:01:29 -08:00
Jeffrey Seyfried
5172745da7 Warn instead of error when using an inaccessable extern crate 2016-02-24 01:34:39 +00:00
Jeffrey Seyfried
f8d6dcf46e Warn when reexporting a private extern crate 2016-02-24 01:34:20 +00:00
bors
e628398f34 Auto merge of #31811 - alexcrichton:clean-deps, r=sanxiyn
The standard library doesn't depend on rustc_bitflags, so move it to explicit
dependencies on all other crates. Additionally, the arena/fmt_macros deps could
be dropped from libsyntax.
2016-02-22 05:20:39 +00:00
Alex Crichton
95761417c3 rustbuild: Sync some Cargo.toml/lib.rs dependencies
The standard library doesn't depend on rustc_bitflags, so move it to explicit
dependencies on all other crates. Additionally, the arena/fmt_macros deps could
be dropped from libsyntax.
2016-02-21 09:49:13 -08:00
ggomez
a23e4fc511 Add crate_name in E0152 error display 2016-02-22 14:05:01 +01:00
bors
c894ff6b12 Auto merge of #31757 - petrochenkov:unitdotdot, r=nikomatsakis
This warning was introduced on Nov 28, 2015 and got into 1.6 stable, it was later requalified from a hardwired warning to a warn-by-default lint.
If this patch is landed soon enough, then `match_of_unit_variant_via_paren_dotdot` will get into 1.8 stable as a deny-by-default lint.
My intention is to turn it into a hard error after March 3, 2016, then it will hit stable at 1.9.

r? @nikomatsakis
cc @pnkfelix
2016-02-20 20:33:33 +00:00
bors
6c751e0456 Auto merge of #31474 - arielb1:mir-typeck, r=nikomatsakis
This should stop broken MIR from annoying us when we try to implement things
2016-02-20 12:38:18 +00:00
Ariel Ben-Yehuda
d84658e317 address review comments 2016-02-20 13:17:30 +02:00
Ariel Ben-Yehuda
881249aa46 use the FulfillmentContext and InferCtxt more correctly 2016-02-20 02:02:53 +02:00
Ariel Ben-Yehuda
3c6f41026b store the normalized types of field accesses
Fixes #31504
2016-02-20 01:54:58 +02:00
Ariel Ben-Yehuda
76608c8e0a make *mut T -> *const T a coercion
rather than being implicit quasi-subtyping. Nothing good can come out
of quasi-subtyping.
2016-02-20 01:54:58 +02:00
Ariel Ben-Yehuda
999f1767ca add -Z mir-opt-level to disable MIR optimizations
setting -Z mir-opt-level=0 will disable all MIR optimizations
for easier debugging
2016-02-20 01:38:27 +02:00
nxnfufunezn
27f8c53344 Fix error[E0518] not displayed for #[inline] on structs inside fns 2016-02-19 23:49:11 +05:30
Ariel Ben-Yehuda
addc653da5 begin implementing mir-typeck 2016-02-19 19:13:53 +02:00
Vadim Petrochenkov
e9506594b4 Make future-compat lint match_of_unit_variant_via_paren_dotdot deny by default 2016-02-18 22:30:57 +03:00
Niko Matsakis
daa7408267 Fix a weird case in the HIR map, where fields are not present in the
map. Perhaps I ought to just add them instead, but this seems harmless
enough.
2016-02-18 05:26:30 -05:00
Steve Klabnik
0a88c8fb19 Rollup merge of #31679 - GuillaumeGomez:long_error_explanation, r=Manishearth
r? @Manishearth
2016-02-17 18:14:36 -05:00
bors
0d1cd9bd6a Auto merge of #31685 - petrochenkov:patrefact2, r=eddyb
And split `PatKind::Enum` into `PatKind::TupleStruct` and `PatKind::Path`.
This is the HIR part of https://github.com/rust-lang/rust/pull/31581.
This is also kind of a preparation for https://github.com/rust-lang/rfcs/pull/1492.

r? @eddyb
2016-02-17 06:01:49 +00:00
bors
57c357d891 Auto merge of #31680 - arielb1:fast-fulfill, r=nikomatsakis
this improves typeck performance by 5% (LLVM times are still huge).

Basically fixes #25916 (still O(n^2), but the example takes <1s to
compile).

r? @nikomatsakis
2016-02-16 22:35:09 +00:00
Johan Lorenzo
39c2d8534e Fix wrong help message left in #31368 2016-02-16 04:10:31 +05:30
Vadim Petrochenkov
06755d90ce Split PatKind::Enum into PatKind::TupleStruct and PatKind::Path 2016-02-16 00:40:38 +03:00
Ariel Ben-Yehuda
3d46d095c8 use stalled_on in all obligation types
this improves typeck performance by 5% (LLVM times are still huge).

Basically fixes #25916 (still O(n^2), but the example takes <1s to
compile).
2016-02-15 19:08:53 +02:00
ggomez
1c8766761e Global error explanations improvements 2016-02-15 17:57:21 +01:00
Dirk Gadsden
b122064a33 Stricter matching of --cfg options on rustc
Includes compile-fail test to check that it fails on incomplete
`--cfg` matches.

Fixes #31497.
2016-02-14 16:44:39 -08:00
Vadim Petrochenkov
9b40e1e5b3 Rename hir::Pat_ and its variants 2016-02-14 15:25:12 +03:00
bors
4b7245047b Auto merge of #31588 - soltanmm:layer, r=nikomatsakis
<sup>**context:** moving back to a layered approach to type checking.</sup>

It looks like they'd not ended up tightly coupled in the time one was owned by the other. Every instance outside of `FnCtxt.inh` was from an `InferCtxt` created and dropped in the same function body.

This conflicts slightly with #30652, but there too it looks like the `FulfillmentContext` is from an `InferCtxt` that is created and dropped within the same function body (across one call to a module-private function).

That said, I heard that the PR that originally moved `FulfillmentContext` into `InferCtxt` was big, which leaves me concerned that I'm missing something.

r? @nikomatsakis
2016-02-13 15:25:23 +00:00
bors
5801991b5d Auto merge of #31562 - llogiq:lint_post, r=Manishearth
This fixes #31512 for me.

A bit of explanation: I want to have `check_block_post(&mut self, &Context, &Block)` and `check_crate_post(&mut self, &Context, &Crate)` methods in both early and late lint passes. Ideally we'd have _post methods for all operations that walk, but this'll do for now.

@Manishearth r?
2016-02-13 08:27:42 +00:00
bors
97842f54c9 Auto merge of #31358 - japaric:print-targets, r=alexcrichton
that prints a list of all the triples supported by the `--target` flag

r? @alexcrichton
2016-02-13 03:21:49 +00:00
bors
3548b8c273 Auto merge of #31524 - jonas-schievink:autoderef, r=steveklabnik 2016-02-13 00:16:03 +00:00
Jonas Schievink
559fca0fd3 Autoderef in librustc 2016-02-12 19:28:42 +01:00
bors
ce4b75f256 Auto merge of #30726 - GuillaumeGomez:compile-fail, r=brson
r? @brson
cc @alexcrichton

I still need to add error code explanation test with this, but I can't figure out a way to generate the `.md` files in order to test example source codes.

Will fix #27328.
2016-02-12 18:25:08 +00:00
llogiq
a270b7b2d9 fix double check_item 2016-02-12 18:21:43 +01:00
bors
0c4d81f9bc Auto merge of #31550 - Stebalien:fix-color, r=nrc
Fixes #31546
2016-02-12 16:42:03 +00:00
Jorge Aparicio
0bb4209b88 rustc: add a --print target-list command 2016-02-12 10:39:19 -05:00
bors
77f9231818 Auto merge of #31368 - JohanLorenzo:dont-strip-if-test-build, r=alexcrichton
Tools which rely on DWARF for generating code coverage report, don't generate accurate numbers on test builds. For instance, [this sample main](757bdbf388/src/main.rs) returns [100% coverage](https://coveralls.io/builds/4940156/source?filename=main.rs) when [kcov](https://github.com/SimonKagstrom/kcov/) runs.

With @pnkfelix 's great help, we could narrow down the issue: The linker strips unused function during phase 6. Here's a patch which stops stripping when someone calls `rustc --test $ARGS`. @pnkfelix wasn't sure if we should add a new flag, or just use --test. What do you think @alexcrichton ?

Also, I'm not too sure: where is the best place to add a test for this addition?

Thanks for the help!
2016-02-12 05:53:18 +00:00
bors
4b2c7030fd Auto merge of #30830 - arcnmx:static-extern, r=alexcrichton
See #29676

r? @alexcrichton
2016-02-12 02:16:13 +00:00
Alex Crichton
2581b14147 bootstrap: Add a bunch of Cargo.toml files
These describe the structure of all our crate dependencies.
2016-02-11 11:12:32 -08:00
arcnmx
0ff055ad66 Pass through diagnostic handler instead 2016-02-11 12:45:52 -05:00
arcnmx
e6f0f7d52d Only retain external static symbols across LTO 2016-02-11 12:45:52 -05:00