Commit graph

12104 commits

Author SHA1 Message Date
ggomez
eca0ab25d8 Add check on find_best_match_for_name and improve help message for undefined macro 2016-02-16 22:30:08 +01:00
bors
0bf6394801 Auto merge of #31669 - frewsxcv:llvm-function-pass-rmake-test, r=alexcrichton
Part of https://github.com/rust-lang/rust/issues/31185.

Similar to https://github.com/rust-lang/rust/pull/31391.
2016-02-16 09:07:37 +00:00
bors
17d284b4b5 Auto merge of #31530 - dirk:dirk/restrict-matching-of-cfg-opts, r=alexcrichton
Fixes #31497.
2016-02-15 19:30:37 +00:00
Corey Farwell
a60ec05fdc Add LLVM FunctionPass regression test using run-make.
Part of https://github.com/rust-lang/rust/issues/31185.

Similar to https://github.com/rust-lang/rust/pull/31391.
2016-02-15 10:08:04 -05:00
bors
4ce803837e Auto merge of #31648 - jseyfried:fix_diagnostics, r=nrc
This PR fixes two unrelated diagnostics bugs in resolve.

First, it reports privacy errors for an import only after the import resolution is determined, fixing #31402.

Second, it expands the per-module map from block ids to anonymous modules so that it also maps module declarations ids to modules, and it uses this map to in `with_scope` to fix #31644.

r? @nrc
2016-02-15 07:13:02 +00:00
bors
69ad91290d Auto merge of #31566 - jseyfried:fix_regression, r=nrc
This fixes a regression caused by #31461 allowing extern crates to be glob imported, and it fixes the test that was supposed to catch it.
r? @nrc
2016-02-15 05:19:29 +00:00
bors
f9543a9b74 Auto merge of #31555 - nrc:err-recover, r=pnkfelix
Recover from missing brackets in the parser
2016-02-15 03:17:35 +00: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
Nick Cameron
4e1a6f6b36 Tests 2016-02-15 09:33:21 +13:00
Nick Cameron
847a0d2150 Some error recovery in the parser 2016-02-15 09:33:21 +13:00
Nick Cameron
ffd2a0b9d7 Add some simple error recovery to the parser and fix tests
Some tests just add the extra errors, others I fix by doing some simple error recovery. I've tried to avoid doing too much in the hope of doing something more principled later.

In general error messages are getting worse at this stage, but I think in the long run they will get better.
2016-02-15 09:30:23 +13:00
Alex Crichton
cc719d2d7d trans: Don't link whole rlibs to executables
Back in 9bc8e6d14 the linking of rlibs changed to using the `link_whole_rlib`
function. This change, however was only intended to affect dylibs, not
executables. For executables we don't actually want to link entire rlibs because
we want the linker to strip out as much as possible.

This commit adds a conditional to this logic to only link entire rlibs if we're
creating a dylib, and otherwise an executable just links an rlib as usual. A
test is included which will fail to link if this behavior is reverted.
2016-02-14 11:45:59 -08:00
Eduard Burtescu
5d0a68d1d3 Do not expect blocks to have type str. 2016-02-14 15:38:48 +02:00
bors
083dc5b12d Auto merge of #31614 - mitaa:rdoc_locitem_extmac, r=alexcrichton
fixes #26606

r? @alexcrichton
2016-02-14 10:10:50 +00:00
Jeffrey Seyfried
81d5d02c37 Rename Module field anonymous_children to module_children, expand it to include both named an anonymous modules, and fix #31644 2016-02-14 09:05:37 +00:00
bors
86e6e3235e Auto merge of #31391 - frewsxcv:test, r=alexcrichton
Part of #31185
2016-02-14 08:25:39 +00:00
Corey Farwell
e5e2cdb9e3 Add LLVM ModulePass regression test using run-make.
Part of #31185
2016-02-13 22:04:51 -05:00
Manish Goregaokar
97a87ef509 Rollup merge of #31635 - semarie:grep-e, r=alexcrichton
The BSD grep for "basic regex" don't support \| as alternate operator (at least under OpenBSD).

Use multiple -e arguments for expressing alternative. I have checked it under Linux (Debian).
2016-02-14 05:06:36 +05:30
bors
6e446532e8 Auto merge of #31602 - mitaa:rdoc_doc_shorter, r=alexcrichton
fixes #25787
fixes #30366

r? @alexcrichton
2016-02-13 21:43:28 +00:00
bors
c438802aa7 Auto merge of #31596 - mitaa:rdoc_assoc_item, r=alexcrichton 2016-02-13 19:28:09 +00:00
Sébastien Marie
15e5cf383d use a compatible syntax for grep GNU/BSD
The BSD grep for "basic regex" don't support \| as alternate operator.
Use multiple -e arguments for expressing alternative.
2016-02-13 20:03:08 +01:00
bors
7fc4df6d23 Auto merge of #31570 - tomaka:ignore-emscripten, r=brson
Ignores 82 rpass tests that use threads.
I took care to only ignore tests that call `thread::spawn`. Some tests, for example `issue-16597`, also do fail because of lack of threads support, but for other reasons.

With this PR, we're down to 49 failures.

r? @brson
2016-02-13 12:03:38 +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
mitaa
a31d63320f Omit src-links for items from extern macros
If the span of a local item points into an external macro
its source-file will be bogus.
2016-02-12 22:45:17 +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
Jorge Aparicio
0bb4209b88 rustc: add a --print target-list command 2016-02-12 10:39:19 -05:00
bors
c7640aa2aa Auto merge of #31583 - petrochenkov:indi_ast, r=Manishearth
cc #31487
plugin-[breaking-change]

The AST part of https://github.com/rust-lang/rust/pull/30087

r? @Manishearth
2016-02-12 14:56:20 +00:00
mitaa
5c98ae34a6 Shorten docstrings after Markdown rendering 2016-02-12 14:12:27 +01:00
bors
9257e8956e Auto merge of #31541 - tomaka:more-emscripten, r=brson
r? @brson
2016-02-12 12:51:12 +00:00
mitaa
938202c81f Fix associated item identifiers
Search results use the mapping found in `ItemType::to_static_str` for
the identifier, which could not be found on the page in the case of
associated items.
2016-02-12 10:26:46 +01: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
98ec51a4dd Auto merge of #31545 - dotdash:no_noalias, r=alexcrichton
LLVM's memory dependence analysis doesn't properly account for calls
that could unwind and thus effectively act as a branching point. This
can lead to stores that are only visible when the call unwinds being
removed, possibly leading to calls to drop() functions with b0rked
memory contents.

As there is no fix for this in LLVM yet and we want to keep
compatibility to current LLVM versions anyways, we have to workaround
this bug by omitting the noalias attribute on &mut function arguments.
Benchmarks suggest that the performance loss by this change is very
small.

Thanks to @RalfJung for pushing me towards not removing too many
noalias annotations and @alexcrichton for helping out with the test for
this bug.

Fixes #29485
2016-02-11 22:22:54 +00:00
Vadim Petrochenkov
77cc5764b9 Remove some unnecessary indirection from AST structures 2016-02-11 23:33:09 +03:00
bors
aa1dc0975a Auto merge of #31532 - tomaka:fix-emscripten, r=brson
Before this PR:

> test result: FAILED. 2039 passed; 327 failed; 2 ignored; 0 measured

After:

> test result: FAILED. 2232 passed; 134 failed; 2 ignored; 0 measured

r? @brson
2016-02-11 16:49:20 +00:00
bors
a91ff1c9d1 Auto merge of #31527 - danlrobertson:i15735, r=alexcrichton
After some digging I couldn't find a test for #15735, so I added a simplified version to `run-pass` and tested it against 80a3f45 to ensure it fails.
2016-02-11 14:51:47 +00:00
Oliver 'ker' Schneider
14e09ad468 [breaking-change] don't glob export ast::MetaItem_ 2016-02-11 12:34:48 +01:00
Oliver 'ker' Schneider
019614f03d [breaking-change] don't glob export ast::Item_ variants 2016-02-11 12:34:48 +01:00
Oliver Schneider
05e25de4f0 [breaking-change] don't glob export ast::BinOp_ 2016-02-11 12:34:48 +01:00
Pierre Krieger
ee91c25b04 Ignore tests that use threads on emscripten 2016-02-11 12:34:41 +01:00
Johan Lorenzo
274f27a476 Add -C link-dead-code option r=alexcrichton
Turning gc-sections off improves code coverage based for tools which
use DWARF debugging information (like kcov). Otherwise dead code is
stripped and kcov returns a coverage percentage that doesn't reflect
reality.
2016-02-11 11:14:32 +01:00
Jeffrey Seyfried
91894631d0 Fix regression from #31461 and fix the test that was supposed to catch it. 2016-02-11 07:27:12 +00:00
bors
1de70d33f7 Auto merge of #31461 - jseyfried:remove_import_resolutions, r=nrc
This PR adds to `NameBinding` so it can more fully represent bindings from imports as well from items, refactors away `Target`, generalizes `ImportResolution` to a simpler type `NameResolution`, and uses a single `NameResolution`-valued map in place the existing maps `children` and `import_resolutions` (of `NameBinding`s and `ImportResolution`s, respectively), simplifying duplicate checking and name resolution.

It also unifies the `resolve_name_in_module` in `lib.rs` with its namesake in `resolve_imports.rs`, clarifying and improving the core logic (fixes #31403 and fixes #31404) while maintaining clear future-comparability with shadowable globs (i.e., never reporting that a resolution is a `Success` or is `Failing` unless this would also be knowable with shadowable globs).

Since it fixes #31403, this is technically a [breaking-change], but it is exceedingly unlikely to cause breakage in practice. The following is an example of code that would break:
```rust
mod foo {
    pub mod bar {} // This defines bar in the type namespace
    pub use alpha::bar; // This defines bar in the value namespace

    // This should define baz in both namespaces, but it only defines baz in the type namespace.
    pub use self::bar as baz;
    pub fn baz() {} // This should collide with baz, but now it does not.
}

pub fn f() {}
mod alpha {
    pub use self::f as bar; // Changing this to `pub fn bar() {}` causes the collision right now.
    pub use super::*;
}
```

r? @nrc
2016-02-11 04:27:13 +00:00
bors
3f4227af13 Auto merge of #31409 - alexcrichton:command-exec, r=aturon
These commits are an implementation of https://github.com/rust-lang/rfcs/pull/1359 which is tracked via https://github.com/rust-lang/rust/issues/31398. The `before_exec` implementation fit easily with the current process spawning framework we have, but unfortunately the `exec` implementation required a bit of a larger refactoring. The stdio handles were all largely managed as implementation details of `std::process` and the `exec` function lived in `std::sys`, so the two didn't have access to one another.

I took this as a sign that a deeper refactoring was necessary, and I personally feel that the end result is cleaner for both Windows and Unix. The commits should be separated nicely for reviewing (or all at once if you're feeling ambitious), but the changes made here were:

* The process spawning on Unix was refactored in to a pre-exec and post-exec function. The post-exec function isn't allowed to do any allocations of any form, and management of transmitting errors back to the parent is managed by the pre-exec function (as it's the one that actually forks).
* Some management of the exit status was pushed into platform-specific modules. On Unix we must cache the return value of `wait` as the pid is consumed after we wait on it, but on Windows we can just keep querying the system because the handle stays valid.
* The `Stdio::None` variant was renamed to `Stdio::Null` to better reflect what it's doing.
* The global lock on `CreateProcess` is now correctly positioned to avoid unintended inheritance of pipe handles that other threads are sending to their child processes. After a more careful reading of the article referenced the race is not in `CreateProcess` itself, but rather the property that handles are unintentionally shared.
* All stdio management now happens in platform-specific modules. This provides a cleaner implementation/interpretation for `FromFraw{Fd,Handle}` for each platform as well as a cleaner transition from a configuration to what-to-do once we actually need to do the spawn.

With these refactorings in place, implementing `before_exec` and `exec` ended up both being pretty trivial! (each in their own commit)
2016-02-10 22:51:43 +00:00
Björn Steinbrink
a17fb64fce Workaround LLVM optimizer bug by not marking &mut pointers as noalias
LLVM's memory dependence analysis doesn't properly account for calls
that could unwind and thus effectively act as a branching point. This
can lead to stores that are only visible when the call unwinds being
removed, possibly leading to calls to drop() functions with b0rked
memory contents.

As there is no fix for this in LLVM yet and we want to keep
compatibility to current LLVM versions anyways, we have to workaround
this bug by omitting the noalias attribute on &mut function arguments.
Benchmarks suggest that the performance loss by this change is very
small.

Thanks to @RalfJung for pushing me towards not removing too many
noalias annotations and @alexcrichton for helping out with the test for
this bug.

Fixes #29485
2016-02-10 23:09:47 +01:00
bors
5d771cd5b3 Auto merge of #31455 - tmiasko:expected-tokens, r=alexcrichton
Previously when breaking tokens into smaller pieces, the replace_token
function have been used. It replaced current token and updated span
information, but it did not clear the list of expected tokens, neither
did it update remaining info about last token. This could lead to
incorrect error message, like one described in the issue #24780:

    expected one of ... `>` ...  found `>`
2016-02-10 20:55:53 +00:00
Pierre Krieger
974ba28add More emscripten test fixes 2016-02-10 20:29:19 +01:00
Alex Crichton
b37477c03e std: Implement CommandExt::exec
This commit implements the `exec` function proposed in [RFC 1359][rfc] which is
a function on the `CommandExt` trait to execute all parts of a `Command::spawn`
without the `fork` on Unix. More details on the function itself can be found in
the comments in the commit.

[rfc]: https://github.com/rust-lang/rfcs/pull/1359

cc #31398
2016-02-10 09:28:49 -08:00
Alex Crichton
b1898db0f1 std: Implement CommandExt::before_exec
This is a Unix-specific function which adds the ability to register a closure to
run pre-exec to configure the child process as required (note that these
closures are run post-fork).

cc #31398
2016-02-10 09:28:48 -08:00
bors
052b3fd4a0 Auto merge of #31499 - kamalmarhubi:cfg-flag-invalid-cfgs, r=brson
A spec like `#[cfg(foo(bar))]` is not allowed as an attribute. This
makes the same spec be rejected by the compiler if passed in as a
`--cfg` argument.

Fixes #31495
2016-02-10 14:24:41 +00:00
Pierre Krieger
657f1cf0e0 Fix x86stdcall test with emscripten 2016-02-10 10:37:02 +01:00