Commit Graph

50946 Commits

Author SHA1 Message Date
bors
3029e0918d Auto merge of #31726 - jseyfried:improve_import_resolution, r=nikomatsakis
This PR improves the import resolution algorithm.

First, it records that an import succeeded or failed for one namespace (by calling `decrement_outstanding_references_for` and `try_define_child` if successful) even if it is still indeterminate in the other namespace, fixing #31444.

Second, it starts importing bindings from globs as soon as the glob path is determined.
It maintains links from imported modules to their importers so that when a resolution becomes successful in an imported module, a corresponding binding will be added to the importer module.
It also maintains links from importer modules to imported modules so that we can determine if an undefined name is indeterminate or failing by recursively checking this in the imported modules.
This allows, for example:
```rust
mod foo {
    pub mod baz {}
    pub use bar::baz::*;
}

mod bar {
    pub use foo::*;
}
```
It also allows cycles of pub glob imports, although by to the current shadowing rules, the only way for such a cycle to compile is if each participating module defines no names. Incidentally, this PR lays the groundwork for more permissive feature-gated shadowing rules.

Finally, this PR encapsulates almost all implementation details of import resolution in `resolve_imports` (some of which used to be in `lib.rs`) and refactors reexport recording, shadowed trait collecting, some duplicate checking, and the `private_in_public` lint out of the core import resolution algorithm and into a post-processing pass in `resolve_imports`.

r? @nrc
2016-03-05 20:11:37 +00:00
bors
07a1803dd3 Auto merge of #31700 - oli-obk:skip_double_ended, r=alexcrichton
[Playground Example](https://play.rust-lang.org/?gist=66fdb4fe1cf4d8aa2ad4&version=stable)
2016-03-05 16:58:20 +00:00
bors
da0ccd8cc9 Auto merge of #32046 - steveklabnik:rollup, r=steveklabnik
- Successful merges: #32002, #32017, #32027, #32035, #32036
- Failed merges:
2016-03-04 21:01:14 +00:00
Jeffrey Seyfried
b3572ae15a Finish encapsulating the details of import resolution in resolve_imports 2016-03-04 20:48:55 +00:00
Jeffrey Seyfried
51ca449f74 Refactor away define 2016-03-04 20:48:54 +00:00
Jeffrey Seyfried
20b99d303d Start importing bindings from globs as soon as the glob path is known. 2016-03-04 20:48:51 +00:00
Jeffrey Seyfried
fb4710ce21 Add a field in Module for the ResolverArenas 2016-03-04 20:48:50 +00:00
Jeffrey Seyfried
6b94bc345c Add an arena for import directives 2016-03-04 20:48:49 +00:00
Jeffrey Seyfried
064f17c6a3 Record that an import succeeded or failed in one namespace even while it is indeterminate in the other namespace (fixes #31444) 2016-03-04 20:48:43 +00:00
Steve Klabnik
d5aeb769e9 Rollup merge of #32036 - Seeker14491:patch-1, r=steveklabnik
To me it was unclear whether 'it' referred to the fold function, or the closure.
2016-03-04 14:17:29 -05:00
Steve Klabnik
b99354f07f Rollup merge of #32035 - ubsan:master, r=bluss
Just take out the `NOTE` and the `#[allow(improper_ctypes)]`
2016-03-04 14:17:29 -05:00
Steve Klabnik
1f0d928de8 Rollup merge of #32027 - japaric:rustbuild-mips, r=alexcrichton
These targets don't link statically to libunwind or libc

---

r? @alexcrichton
2016-03-04 14:17:29 -05:00
Steve Klabnik
805daa11b0 Rollup merge of #32017 - brson:ignoretest, r=nikomatsakis 2016-03-04 14:17:28 -05:00
Steve Klabnik
55bc488db4 Rollup merge of #32002 - srinivasreddy:vector_doc, r=Manishearth
Issue here : https://github.com/rust-lang/rust/issues/31991
2016-03-04 14:17:28 -05:00
bors
d31d8a9a91 Auto merge of #32039 - arielb1:pat-enum, r=nagisa
Fixes #32004

r? @eddyb
2016-03-04 17:19:40 +00:00
bors
c97524bef9 Auto merge of #32032 - arielb1:load-const, r=eddyb
Fixes #30891

r? @eddyb
2016-03-04 15:33:10 +00:00
Ariel Ben-Yehuda
f40d12f180 don't treat unit patterns as wildcard patterns
Fixes #32004
2016-03-04 15:50:55 +02:00
bors
85ad61c583 Auto merge of #32022 - gohyda:master, r=alexcrichton
- Empty `.sidebar .location` caused "grey line" on top of the documentation page (under 700px) fixed.
- `.sidebar .location` appearance improvement in responsive mode.
2016-03-04 13:47:02 +00:00
Ariel Ben-Yehuda
af55b4189f clean up check_pat_enum 2016-03-04 15:24:28 +02:00
Oliver Schneider
25e5de3f7e make skip a double ended iterator 2016-03-04 10:22:55 +01:00
Brian Bowman
84e6e04d83 Clarify ambiguous wording in fold() docs
To me it was unclear whether 'it' referred to the fold function, or the closure.
2016-03-04 01:09:23 -06:00
bors
5b5e521869 Auto merge of #32006 - jseyfried:fix_expanded_mod_path, r=nikomatsakis
This PR changes the search paths for macro-expanded non-inline modules so that they match ordinary non-inline modules (fixes #31624). This is a [breaking-change].

Right now, the search paths for a macro-expanded non-inline module are computed as if the module were declared in the top level of the file in which the macro was defined.
For example, consider `./foo/mod.rs`:
```rust
mod inconsequential { // moving the macro outside this module wouldn't change anything
    macro_rules! mod_decl {
        ($i:ident) => { mod $i; }
    }
}
```
and `./lib.rs`:
```rust
mod foo;

mod bar {
    mod_decl!(baz);
    //^ Now, rustc expects `./foo/baz.rs` (or `./foo/baz/mod.rs`)
    //| After this PR, rustc will expect `./bar/baz.rs` (or `./bar/baz/mod.rs`)
}
```
r? @alexcrichton
2016-03-04 06:55:11 +00:00
bors
8e261d12e3 Auto merge of #31945 - sfackler:net2, r=alexcrichton
I have these tagged as stable in 1.9, so this shouldn't merge until the 1.8 beta's cut.
2016-03-04 04:19:30 +00:00
ubsan
633cd84821 usize is now a proper ctype, so fix cmp_slice 2016-03-03 19:53:31 -08:00
Ariel Ben-Yehuda
cf29344c63 truncate i8-s to i1-s when loading constants
Fixes #30891
2016-03-04 01:16:23 +02:00
bors
e91f889ed3 Auto merge of #31671 - ranma42:printcfg, r=alexcrichton
Show `cfg` as possible argument to `--print` and make it so that `--print cfg` also outputs the `target_feature`s.

Should I also extend `src/test/run-make/print-cfg/Makefile` to check that `target_feature`s are actually printed?
2016-03-03 21:37:18 +00:00
bors
809b14acf1 Auto merge of #31797 - apasel422:issue-28950, r=alexcrichton
Closes #28950.

r? @eddyb
2016-03-03 19:52:11 +00:00
Jorge Aparicio
ddd2e99d02 [rustbuild] fix cross compilation of std for mips(el)-linux-musl
These targets don't link statically to libunwind or libc
2016-03-03 14:50:28 -05:00
Steven Fackler
e4aa513139 Fix netbsd 2016-03-03 09:54:15 -08:00
bors
493d999ffa Auto merge of #32007 - nikomatsakis:compiletest-incremental, r=alexcrichton
This PR extends compiletest to support **test revisions** and with a preliminary **incremental testing harness**. run-pass, compile-fail, and run-fail tests may be tagged with

```
// revisions: a b c d
```

This will cause the test to be re-run four times with `--cfg {a,b,c,d}` in turn. This means you can write very closely related things using `cfg`. You can also configure the headers/expected-errors by writing `//[foo] header: value` or `//[foo]~ ERROR bar`, where `foo` is the name of your revision. See the changes to `coherence-cow.rs` as a proof of concept.

The main point of this work is to support the incremental testing harness. This PR contains an initial, unused version. The code that uses it will land later. The incremental testing harness compiles each revision in turn, and requires that the revisions have particular names (e.g., `rpass2`, `cfail3`), which tell it whether a particular revision is expected to compile or not.

Two questions:

- Is there compiletest documentation anywhere I can update?
- Should I hold off on landing the incremental testing harness until I have the code to exercise it? (That will come in a separate PR, still fixing a few details)

r? @alexcrichton
cc @rust-lang/compiler <-- new testing capabilities
2016-03-03 17:41:13 +00:00
srinivasreddy
d2df5514c0 added ignore 2016-03-03 21:54:21 +05:30
Steven Fackler
ee62aab2ed Fix android build 2016-03-03 08:19:30 -08:00
Niko Matsakis
fc4d0ecf20 mention caveat about should-fail in docs 2016-03-03 11:18:42 -05:00
Niko Matsakis
aa19b41f25 make pretty printer tests understand revisions, and make them ignore the
should-fail annotation
2016-03-03 11:17:32 -05:00
bors
f6e125f04a Auto merge of #31979 - jseyfried:rename_ctxt, r=eddyb
r? @eddyb
2016-03-03 10:22:41 +00:00
Niko Matsakis
9601e6f252 Do not assert revisions list is empty for pretty printing tests 2016-03-03 04:17:39 -05:00
Andrea Canciani
4e46eee110 Hide gated cfg attributes from the output of --print cfg
Gated cfg attributes are not available on the stable and beta release
channels, therefore they should not be presented to users of those
channels in order to avoid confusion.
2016-03-03 10:06:09 +01:00
bors
4aa913cd23 Auto merge of #32012 - bluss:more-drop-in-place, r=alexcrichton
Use `drop_in_place` in Vec and VecDeque

We can use drop_in_place's DST capabilities directly in Vec::drop and similarly in VecDeque::drop. I verfied this has the same effect as the previous `needs_drop` code; `drop_in_place` it itself an intrinsic.

The VecDeque replacement should be more efficient too, even in release mode (slice iteration makes a more efficient loop than the deque iterator).
2016-03-03 08:35:51 +00:00
Jeffrey Seyfried
37ba66a66e Rename middle::ty::ctxt to TyCtxt 2016-03-03 07:37:56 +00:00
Steven Fackler
631fa2b8c0 Fix comments and OSX build 2016-03-02 22:05:14 -08:00
gohyda
311ff0367d Responsive layout correction. 2016-03-03 04:46:30 +01:00
bors
7cee8b9ffb Auto merge of #31824 - jseyfried:privacy_in_resolve, r=nikomatsakis
This PR privacy checks paths as they are resolved instead of in `librustc_privacy` (fixes #12334 and fixes #31779). This removes the need for the `LastPrivate` system introduced in PR #9735, the limitations of which cause #31779.

This PR also reports privacy violations in paths to intra- and inter-crate items the same way -- it always reports the first inaccessible segment of the path.

Since it fixes #31779, this is a [breaking-change]. For example, the following code would break:
```rust
mod foo {
    pub use foo::bar::S;
    mod bar { // `bar` should be private to `foo`
        pub struct S;
    }
}

impl foo::S {
    fn f() {}
}

fn main() {
    foo::bar::S::f(); // This is now a privacy error
}
```

r? @alexcrichton
2016-03-03 02:21:28 +00:00
Brian Anderson
d3ae29d9c1 Ignore a rustdoc test that does not work on beta 2016-03-03 00:40:34 +00:00
Jeffrey Seyfried
e2aa90e780 Add test 2016-03-02 23:50:19 +00:00
Jeffrey Seyfried
472fcb5973 Fix the search paths for macro-expanded non-inline modules 2016-03-02 23:50:19 +00:00
Jeffrey Seyfried
cccc0880d9 Add filename to Parser 2016-03-02 23:50:13 +00:00
bors
7b0b80ae21 Auto merge of #32005 - vegai:31686, r=Manishearth
Fix note for type alias in trait position

Fixes #31686
2016-03-02 22:15:51 +00:00
Andrea Canciani
c984cbd939 Build the same configuration when compiling and for --print cfg
The configuration returned by `config::build_configuration` needs to
be modified with `target_features::add_configuration` in order to also
contain the target features. This is already done for the
configuration used when compiling and when creating the documentation,
but was missing in the `cfg` printing code.
2016-03-02 22:07:03 +01:00
Andrea Canciani
01daf90d5d Add usage documentation for --print cfg
The `--print` flag was extended in #31278 to accept `cfg`, but the
usage message was not updated.
2016-03-02 21:58:59 +01:00
vegai
01a6e8653b Type defined here note added to test 2016-03-02 22:29:54 +02:00