Commit graph

10006 commits

Author SHA1 Message Date
Felix S. Klock II
ae13a72ded Dont check stability for items that are not pub to universe.
Includes special case handling for trait methods.

Fix #38412.
2017-01-03 09:57:49 -05:00
bors
0807104c8f Auto merge of #38579 - whitequark:min_atomic_width, r=alexcrichton
Add a min_atomic_width target option, like max_atomic_width

Rationale: some ISAs, e.g. OR1K, do not have atomic instructions
for byte and halfword access, and at the same time do not have
a fixed endianness, which makes it unreasonable to implement these
through word-sized atomic accesses.
2016-12-28 04:12:11 +00:00
bors
a9ab778815 Auto merge of #38479 - michaelwoerister:extern_mod_ich, r=nikomatsakis
ICH: Fix and test foreign mod hashing.

r? @nikomatsakis
2016-12-28 01:30:31 +00:00
bors
d849b13267 Auto merge of #38574 - Mark-Simulacrum:box-free-unspecialize, r=eddyb
Remove special case for Box<ZST> in trans

Remove extra lang item, `exchange_free`; use `box_free` instead.

Trans used to insert code equivalent to `box_free` in a wrapper around
`exchange_free`, and that code is now removed from trans.

Fixes #37710.
2016-12-27 11:32:39 +00:00
Mark Simulacrum
ca115dd083 Remove extra lang item, exchange_free; use box_free instead.
Trans used to insert code equivalent to box_free in a wrapper around
exchange_free, and that code is now removed from trans.
2016-12-26 17:13:51 -07:00
Vadim Petrochenkov
09aba18e10 More systematic error reporting in path resolution 2016-12-26 15:01:49 +03:00
bors
44ad63e487 Auto merge of #38490 - jseyfried:def_id_vis, r=nrc
Use `DefId`s instead of `NodeId`s for `pub(restricted)` visibilities

This is groundwork for hygiene 2.0, specifically privacy checking hygienic intercrate name resolutions.
r? @nrc
2016-12-25 21:32:37 +00:00
whitequark
5b0700ef31 Add a min_atomic_width target option, like max_atomic_width.
Rationale: some ISAs, e.g. OR1K, do not have atomic instructions
for byte and halfword access, and at the same time do not have
a fixed endianness, which makes it unreasonable to implement these
through word-sized atomic accesses.
2016-12-24 02:17:45 +00:00
Jeffrey Seyfried
41f1e189ee Use DefIds instead of NodeIds for pub(restricted) visibilities. 2016-12-24 00:23:03 +00:00
bors
4d07320d01 Auto merge of #38523 - camlorn:disable_field_reordering, r=nikomatsakis
Disable field reordering

This was decided via IRC and needs a backport to beta.  Basically, #37429 broke servo, and probably needs an announcement and opt-in flag.  I didn't run all tests locally but think I've already reverted all the ones that need to be reverted.

r? @nikomatsakis
2016-12-23 21:36:59 +00:00
bors
99913c5ead Auto merge of #38401 - redox-os:redox_cross, r=brson
Redox Cross Compilation

I will admit - there are things here that I wish I did not have to do. This completes the ability to create a cross compiler from the rust repository for `x86_64-unknown-redox`. I will document this PR with inline comments explaining some things.

[View this gist to see how a cross compiler is built](https://gist.github.com/jackpot51/6680ad973986e84d69c79854249f2b7e)

Prior discussion of a smaller change is here: https://github.com/rust-lang/rust/pull/38366
2016-12-23 09:09:26 +00:00
bors
82611a0224 Auto merge of #38232 - jseyfried:refactor_global_paths, r=nrc
Refactor global paths

This PR removes the field `global: bool` from `ast::Path` and `hir::Path`, instead representing a global path `::foo::bar` as `{{root}}::foo::bar`, where `{{root}}` is a virtual keyword `keywords::CrateRoot`.

Also, fixes #38016.

r? @nrc
2016-12-23 06:22:45 +00:00
Jeremy Soller
4dcb867671 Convert fam to Symbol 2016-12-22 22:29:33 -07:00
Jeremy Soller
c59bb4979c Correct target_family mess 2016-12-22 22:20:47 -07:00
Esteban Küber
39d6483bc1 Remove outdated FIXME comment
Removed FIXME comment referencing #3300.
2016-12-22 00:38:10 -08:00
Jeffrey Seyfried
8a1acb2c69 Pretty-print $crate::foo::bar as ::foo::bar. 2016-12-22 06:14:36 +00:00
Jeffrey Seyfried
f10f50b426 Refactor how global paths are represented (for both ast and hir). 2016-12-22 06:14:35 +00:00
Austin Hicks
b6b630a490 Disable field reordering 2016-12-21 19:57:29 -05:00
Michael Woerister
6fac703293 ICH: Fix some omissions around foreign mods in hasher. 2016-12-21 17:16:28 -05:00
bors
439c3128d7 Auto merge of #38099 - GuillaumeGomez:cast_suggestions, r=nikomatsakis
Cast suggestions

r? @nikomatsakis
2016-12-21 07:28:16 +00:00
Alex Crichton
0cf7d5dcae Merge branch 'rfc_1560_warning_cycle' of https://github.com/jseyfried/rust into rollup
Conflicts:
	src/librustc_resolve/lib.rs
	src/librustc_resolve/resolve_imports.rs
2016-12-20 13:00:16 -08:00
Alex Crichton
21f33dbf71 Rollup merge of #38418 - michaelwoerister:def_path_cleanup, r=eddyb
Cleanup refactoring around DefPath handling

This PR makes two big changes:
* All DefPaths of a crate are now stored in metadata in their own table (as opposed to `DefKey`s as part of metadata `Entry`s.
* The compiler will no longer allocate a pseudo-local DefId for inlined HIR nodes (because those are gross). Inlined HIR nodes will have a NodeId but they don't have there own DefId anymore. Turns out they were not needed anymore either. Hopefully HIR inlining will be gone completely one day but if until then we start needing to be able to map inlined NodeIds to original DefIds, we can add an additional table to metadata that allows for reconstructing this.

Overall this makes for some nice simplifications and removal of special cases.

r? @eddyb

cc @rust-lang/compiler
2016-12-20 12:59:05 -08:00
Alex Crichton
a7710eff06 Rollup merge of #38315 - jonhoo:better-E0309, r=pnkfelix
Expand E0309 explanation with motivating example

I recently started reading @Gankro's "[Learning Rust With Entirely Too Many Linked Lists](http://cglab.ca/~abeinges/blah/too-many-lists/book/README.html)", and came across [a part](http://cglab.ca/~abeinges/blah/too-many-lists/book/second-iter.html) where he comes across `E0309`, and after showing `rustc --explain E0309` prompty says

> This is dumb. I think it's dumb. You have to do it.

Humor aside, I think this says something about the current explanation being somewhat lacking.

This patch introduces a motivating example saying why `T: 'a` is a necessary restriction. Hopefully, this will help new Rustaceans understand why leaving out the `'a` bound on `T` might lead to broken code.
2016-12-20 12:59:02 -08:00
Alex Crichton
551cb0646f Rollup merge of #38171 - jseyfried:cleanup, r=nrc
Miscellaneous cleanup/refactoring in `resolve` and `syntax::ext`

r? @nrc
2016-12-20 11:16:23 -08:00
Alex Crichton
2fb2d307e0 Rollup merge of #38150 - estebank:fix-23286, r=nikomatsakis
Point out the known type when field doesn't satisfy bound

For file

```rust
use std::path::Path;

fn f(p: Path) { }
```

provide the following error

```nocode
error[E0277]: the trait bound `[u8]: std::marker::Sized` is not satisfied in `std::path::Path`
 --> file.rs:3:6
  |
3 | fn f(p: Path) { }
  |      ^ within `std::path::Path`, the trait `std::marker::Sized` is not implemented for `[u8]`
  |
  = note: `[u8]` does not have a constant size known at compile-time
  = note: required because it appears within the type `std::path::Path`
  = note: all local variables must have a statically known size
```

Fix #23286.
2016-12-20 11:16:20 -08:00
Guillaume Gomez
25a2d13cde Allow multiple suggestions 2016-12-20 11:37:15 +01:00
Guillaume Gomez
c11fe553df Create check_ref method to allow to check coercion with & types 2016-12-20 11:37:15 +01:00
Guillaume Gomez
07a3ede5f2 Return DiagnosticBuilder to add help suggestions 2016-12-20 11:37:15 +01:00
Guillaume Gomez
021d97d1c5 Move suggestion list creation to coerce check 2016-12-20 11:37:15 +01:00
Guillaume Gomez
164f0105bb Add safe_suggestion attribute 2016-12-20 11:37:15 +01:00
Guillaume Gomez
601bbf26a8 Start of implementation of proposal for E0308 2016-12-20 11:37:14 +01:00
Jeffrey Seyfried
f705c69bf6 Simplify TyCtxt::create_and_enter. 2016-12-19 20:57:03 +00:00
Jeffrey Seyfried
8e61ff25d8 Optimize ast::PathSegment. 2016-12-19 20:57:00 +00:00
Jeffrey Seyfried
e80d1a8faf Remove MacroDef's fields imported_from and allow_internal_unstable,
remove `export` argument of `resolver.add_macro()`.
2016-12-18 23:26:29 +00:00
bors
71c06a56a1 Auto merge of #38051 - sanxiyn:unused-type-alias-3, r=eddyb
Warn unused type aliases, reimplemented

Reimplementation of #37631. Fix #37455.
2016-12-18 22:06:34 +00:00
bors
1f965cc8e9 Auto merge of #38369 - aturon:stab-1.15, r=alexcrichton
Library stabilizations/deprecations for 1.15 release

Stabilized:

- `std::iter::Iterator::{min_by, max_by}`
- `std::os::*::fs::FileExt`
- `std::sync::atomic::Atomic*::{get_mut, into_inner}`
- `std::vec::IntoIter::{as_slice, as_mut_slice}`
- `std::sync::mpsc::Receiver::try_iter`
- `std::os::unix::process::CommandExt::before_exec`
- `std::rc::Rc::{strong_count, weak_count}`
- `std::sync::Arc::{strong_count, weak_count}`
- `std::char::{encode_utf8, encode_utf16}`
- `std::cell::Ref::clone`
- `std::io::Take::into_inner`

Deprecated:

- `std::rc::Rc::{would_unwrap, is_unique}`
- `std::cell::RefCell::borrow_state`

Closes #23755
Closes #27733
Closes #27746
Closes #27784
Closes #28356
Closes #31398
Closes #34931
Closes #35601
Closes #35603
Closes #35918
Closes #36105
2016-12-18 17:37:25 +00:00
bors
8327b5afaf Auto merge of #37429 - camlorn:univariant_layout_optimization, r=eddyb
struct field reordering and optimization

This is work in progress.  The goal is to divorce the order of fields in source code from the order of fields in the LLVM IR, then optimize structs (and tuples/enum variants)by always ordering fields from least to most aligned.  It does not work yet.  I intend to check compiler memory usage as a benchmark, and a crater run will probably be required.

I don't know enough of the compiler to complete this work unaided.  If you see places that still need updating, please mention them.  The only one I know of currently is debuginfo, which I'm putting off intentionally until a bit later.

r? @eddyb
2016-12-18 07:59:32 +00:00
Alex Crichton
1b8e6c152c rustbuild: Fix LC_ID_DYLIB directives on OSX
Currently libraries installed by rustbuild on OSX have an incorrect
`LC_ID_DYLIB` directive located in the dynamic libraries that are
installed. The directive we expect looks like:

    @rpath/libstd.dylib

Which means that if you want to find that dynamic library you should
look at the dylib's other `@rpath` directives. Typically our `@rpath`
directives look like `@loader_path/../lib` for the compiler as that's
where the installed libraries will be located. Currently, though,
rustbuild produces dylibs with the directive that looks like:

    /Users/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-mac/build/build/x86_64-apple-darwin/stage1-std/x86_64-apple-darwin/release/deps/libstd-713ad88203512705.dylib

In other words, the build directory is encoded erroneously. The compiler
already [knows how] to change this directive, but it only passes that
argument when `-C rpath` is also passed. The rustbuild system, however,
explicitly [does not pass] this option explicitly and instead bakes its
own. This logic then also erroneously didn't pass `-Wl,-install_name`
like the compiler.

[knows how]: 4a008cccaa/src/librustc_trans/back/linker.rs (L210-L214)
[does not pass]: 4a008cccaa/src/bootstrap/bin/rustc.rs (L133-L158)

To fix this regression this patch introduces a new `-Z` flag, `-Z
osx-rpath-install-name` which basically just forces the compiler to take
the previous `-install_name` branch when creating a dynamic library.
Hopefully we can sort out a better rpath story in the future, but for
now this "hack" should suffice in getting our nightly builds back to the
same state as before.

Closes #38430
2016-12-17 16:14:11 -08:00
Aaron Turon
9a5cef4de5 Address fallout 2016-12-16 19:42:17 -08:00
Michael Woerister
77e659a6d3 Remove some more things that were only needed for inlined-HIR DefIds 2016-12-16 20:11:59 -05:00
Michael Woerister
45571f34aa definitions: Add some documentation. 2016-12-16 19:14:16 -05:00
Michael Woerister
70944c2b5f No need to have tcx::opt_def_path() now that we store all DefPaths 2016-12-16 19:14:16 -05:00
Michael Woerister
72f95aac1b Move retrace_path() implementation to DefPathTable 2016-12-16 19:14:16 -05:00
Michael Woerister
ea733b589c No need to store Definitions in RefCell within HIR map 2016-12-16 19:14:16 -05:00
Michael Woerister
e0d26294cd definitions: Add some timing stats for DefPathTable decoding. 2016-12-16 19:14:16 -05:00
Michael Woerister
ed5a88e3d0 definitions: Store DefPath data in separate table in metadata 2016-12-16 19:14:16 -05:00
Michael Woerister
aed0cdbfd2 definitions: Don't allocate DefIds for inlined HIR 2016-12-16 19:14:16 -05:00
Michael Woerister
8e34a8e422 Definitions: Extract DefPath interning into its own data structure. 2016-12-16 19:14:16 -05:00
Michael Woerister
87b407136b Definitions: Split out NodeId <-> DefIndex mapping 2016-12-16 19:13:18 -05:00
Austin Hicks
f22a22b286 Incorporate review comments. 2016-12-16 12:06:12 -05:00