Commit Graph

58800 Commits

Author SHA1 Message Date
bors 195c42c426 Auto merge of #37749 - keeperofdakeys:should-panic, r=alexcrichton
Improvements to the #[should_panic] feature

Add more error checking for the `#[should_panic]` attribute, and print the expected panic string when it does not match.

Fixes https://github.com/rust-lang/rust/issues/29000

Eg:
```running 3 tests
test test2 ... ok
test test1 ... FAILED
: Panic did not include expected string 'foo'
test test3 ... FAILED

failures:

---- test1 stdout ----
	thread 'test1' panicked at 'bar', test.rs:7
note: Run with `RUST_BACKTRACE=1` for a backtrace.

---- test3 stdout ----
	thread 'test3' panicked at 'bar', test.rs:18

```
2016-11-18 08:24:00 -08:00
bors 2a6d02e092 Auto merge of #37769 - alexcrichton:rustbuild-python, r=brson
rustbuild: Allow configuration of python interpreter

Add a configuration key to `config.toml`, read it from `./configure`, and add
auto-detection if none of those were specified.

Closes #35760
2016-11-18 05:03:03 -08:00
Josh Driver fb5ccf80fe Warn when a #[should_panic] test has an unexpected message 2016-11-18 21:01:19 +10:30
bors 01d061fdc0 Auto merge of #37763 - liigo:rustdoc-playground, r=alexcrichton
rustdoc: add cli argument `--playground-url`

Add a new cli argument `--playground-url` for rustdoc:

`rustdoc lib.rs --playground-url="https://play.rust-lang.org/"`

`rustdoc book.md --playground-url="https://play.rust-lang.org/"`

This makes it possible for tools like https://docs.rs to generate crate docs that can submit samples code to run at https://play.rust-lang.org, even if the crate's author *forgot* putting `#![doc(html_playground_url = "https://play.rust-lang.org/")]` to crate root. By the way, I'd like to say, many crate authors are not aware of existing of `#![doc(html_playground_url = "https://play.rust-lang.org/")]`.

`--playground-url` may be reset by `--markdown-playground-url` or `#![doc(html_playground_url=...)]`, so it's backward compatible.

@alexcrichton since you implemented playground-url related features.
2016-11-18 01:47:01 -08:00
bors 509d14fc70 Auto merge of #37846 - jseyfried:fix_proc_macro_dep, r=alexcrichton
Fix bug in proc_macro dependency loading

Fixes #37839.
r? @alexcrichton
2016-11-17 20:56:03 -08:00
bors 35e8924dc5 Auto merge of #37660 - nikomatsakis:incremental-36349, r=eddyb
Separate impl items from the parent impl

This change separates impl item bodies out of the impl itself. This gives incremental more resolution. In so doing, it refactors how the visitors work, and cleans up a bit of the collect/check logic (mostly by moving things out of collect that didn't really belong there, because they were just checking conditions).

However, this is not as effective as I expected, for a kind of frustrating reason. In particular, when invoking `foo.bar()` you still wind up with dependencies on private items. The problem is that the method resolution code scans that list for methods with the name `bar` -- and this winds up touching *all* the methods, even private ones.

I can imagine two obvious ways to fix this:

- separating fn bodies from fn sigs (#35078, currently being pursued by @flodiebold)
- a more aggressive model of incremental that @michaelwoerister has been advocating, in which we hash the intermediate results (e.g., the outputs of collect) so that we can see that the intermediate result hasn't changed, even if a particular impl item has changed.

So all in all I'm not quite sure whether to land this or not. =) It still seems like it has to be a win in some cases, but not with the test cases we have just now. I can try to gin up some test cases, but I'm not sure if they will be totally realistic. On the other hand, some of the early refactorings to the visitor trait seem worthwhile to me regardless.

cc #36349 -- well, this is basically a fix for that issue, I guess

r? @michaelwoerister

NB: Based atop of @eddyb's PR https://github.com/rust-lang/rust/pull/37402; don't land until that lands.
2016-11-17 17:31:01 -08:00
Jeffrey Seyfried 8918ddf0ed Add regression test. 2016-11-18 01:13:10 +00:00
Jeffrey Seyfried 04886f2c98 Fix bug in loading proc macro dependencies. 2016-11-18 00:03:10 +00:00
bors c3565372c3 Auto merge of #37424 - shiver:issue-37131, r=alexcrichton
Improved error reporting when target sysroot is missing.

Attempts to resolve #37131.
This is my first pull request on rust, so I would greatly appreciate any feedback you have on this.

Thanks!
2016-11-17 14:16:27 -08:00
Niko Matsakis c938007f90 add test for hashing trait impls 2016-11-17 15:12:43 -05:00
bors 89386d62ab Auto merge of #37837 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 8 pull requests

- Successful merges: #37752, #37757, #37759, #37766, #37772, #37799, #37806, #37821
- Failed merges: #37442
2016-11-17 10:57:08 -08:00
Niko Matsakis ab79438d68 canonicalize base incremental path on windows
This sidesteps problems with long paths because the canonical path
includes the "magic long path prefix" on Windows.
2016-11-17 13:44:22 -05:00
Niko Matsakis 4e844ad1e5 fix change_private_impl_method_cc test 2016-11-17 13:44:22 -05:00
Niko Matsakis b8116dabda fix oversight in closure translation
(Unrelated to this PR series)
2016-11-17 13:44:22 -05:00
Niko Matsakis b10b98169f hash the contents of impl-item-ref by adding them to visitor
Also simplify some of the `ty::AssociatedItem` representation,
in particular by folding `has_value` into `hir::Defaultness`
2016-11-17 13:44:22 -05:00
Niko Matsakis c17be9ea11 move impl wf check so they occur earlier
Needed to keep coherence from freaking out.
2016-11-17 13:44:21 -05:00
Niko Matsakis 34c361cfb2 when creating an AssociatedItem, read data from impl, not impl item
Before, when we created an AssociatedItem for impl item X, we would read
the impl item itself. Now we instead load up the impl I that contains X
and read the data from the `ImplItemRef` for X; actually, we do it for
all impl items in I pre-emptively.

This kills the last source of edges between a method X and a call to a
method Y defined in the same impl.

Fixes #37121
2016-11-17 13:44:21 -05:00
Guillaume Gomez 850e355d28 Rollup merge of #37821 - tshepang:nits, r=steveklabnik
doc: nits and typos on comments
2016-11-17 19:40:58 +01:00
Guillaume Gomez 214bcc5290 Rollup merge of #37806 - GuillaumeGomez:net_examples, r=frewsxcv
Net examples

r? @steveklabnik
2016-11-17 19:40:58 +01:00
Guillaume Gomez e88e13d311 Rollup merge of #37799 - michaelwoerister:ich-type-def-tests, r=nikomatsakis
ICH: Add test case for type alias definitions

r? @nikomatsakis
2016-11-17 19:40:58 +01:00
Guillaume Gomez 5426143f6a Rollup merge of #37772 - durka:patch-32, r=petrochenkov
add test for #37765

Adds a test for #37765, a path parsing fix which removes the need for a parenthesis workaround.

Closes #37765.
cc #37290 @withoutboats
r? @petrochenkov
2016-11-17 19:40:58 +01:00
Guillaume Gomez 369b996d5f Rollup merge of #37766 - tarka:book-testing-concurrency-capture, r=steveklabnik
Add sections about testing concurrency and stdout/err capture
2016-11-17 19:40:57 +01:00
Guillaume Gomez b633767b10 Rollup merge of #37759 - robinst:trait-use-message-add-semicolon, r=eddyb
Add semicolon to "perhaps add a `use` for one of them" help

Similar to pull request #37430, this makes the message more copy-paste
friendly and aligns it with other messages like:

    help: you can import it into scope: use foo::Bar;

r? @eddyb
2016-11-17 19:40:57 +01:00
Guillaume Gomez 5c8824da07 Rollup merge of #37757 - rust-lang:E0002-precision, r=brson
Uncomment some long error explanation

Retry of #37058.

r? @steveklabnik
cc @brson
2016-11-17 19:40:57 +01:00
Guillaume Gomez 9ed3797fb6 Rollup merge of #37752 - arielb1:incoherent-error, r=nikomatsakis
coherence: skip impls with an erroneous trait ref

Impls with a erroneous trait ref are already ignored in the first part
of coherence, so ignore them in the second part too. This avoids
cascading coherence errors when 1 impl of a trait has an error.

r? @nikomatsakis
2016-11-17 19:40:57 +01:00
bors c57b826149 Auto merge of #37732 - jseyfried:use_extern_macros, r=nrc
Support `use`ing externally defined macros behind `#![feature(use_extern_macros)]`

With `#![feature(use_extern_macros)]`,
 - A name collision between macros from different upstream crates is much less of an issue since we can `use` the macros in different submodules or rename with `as`.
 - We can reexport macros with `pub use`, so `#![feature(macro_reexport)]` is no longer needed.
 - These reexports are allowed in any module, so crates can expose a macro-modular interface.

If a macro invocation can resolve to both a `use` import and a `macro_rules!` or `#[macro_use]`, it is an ambiguity error.

r? @nrc
2016-11-17 07:43:50 -08:00
bors 5bd1e7f59f Auto merge of #37793 - jseyfried:fix_proc_macro_def_ids, r=nrc
Fix proc macro def ids

Update some `CStore` methods to also work correctly with proc macro def ids.
Fixes #37788.
r? @nrc
2016-11-17 04:38:08 -08:00
bors 29181b3f0c Auto merge of #37717 - nikomatsakis:region-obligations-pre, r=eddyb
Refactoring towards region obligation

Two refactorings towards the intermediate goal of propagating region obligations through the `InferOk` structure (which in turn leads to the possibility of lazy normalization).

1. Remove `TypeOrigin` and add `ObligationCause`
    - as we converge subtyping and obligations and so forth, the ability to keep these types distinct gets harder
2. Propagate obligations from `InferOk` into the surrounding fulfillment context

After these land, I have a separate branch (which still needs a bit of work) that can make the actual change to stop directly adding subregion edges and instead propagate obligations. (This should also make it easier to fix the unsoundness in specialization around lifetimes.)

r? @eddyb
2016-11-17 01:18:51 -08:00
Jeffrey Seyfried 6cb33a089f Cleanup formatting. 2016-11-17 08:16:32 +00:00
Jeffrey Seyfried d8722f3fe1 Add tests. 2016-11-17 08:08:11 +00:00
Jeffrey Seyfried 9c88650080 Add feature `use_extern_macros`. 2016-11-17 08:08:06 +00:00
Jeffrey Seyfried b25c063caa Refactor out `PerNS`. 2016-11-17 08:07:47 +00:00
Jeffrey Seyfried 1bbf7a43d3 Add field `expansion: Mark` to `NameBinding`. 2016-11-17 08:07:46 +00:00
Jeffrey Seyfried 83aac43f52 Refactor `Resolver::builtin_macros` to use `NameBinding`s instead of `DefId`s. 2016-11-17 08:07:45 +00:00
Jeffrey Seyfried 641274f907 Resolve imports during expansion. 2016-11-17 08:07:44 +00:00
Jeffrey Seyfried 907120637e Add field `module.unresolved_invocations`. 2016-11-17 08:07:41 +00:00
Tshepang Lekhonkhobe 99b1f9c9c8 doc: nits and typos on comments 2016-11-17 08:32:17 +02:00
Robert Vally 66de87ffb2 Improved error reporting when target sysroot is missing. 2016-11-17 13:59:38 +08:00
bors 6cd5be81cc Auto merge of #37607 - dns2utf8:doc_grammar, r=alexcrichton
Fix grammar verification

 * Use make check-lexer to verify the grammar.
 * Extend grammar/README
 * Add make clean-grammar rule
 * Add target check-build-lexer-verifier to make tidy, so it will build the verifier with every build and catch future errors

This is the continuation of #34994

r? @steveklabnik @jonathandturner @alexcrichton
2016-11-16 21:02:55 -08:00
bors f22fdb03eb Auto merge of #37375 - GuillaumeGomez:cast_message, r=arielb1
Improve reference cast help message

Fixes #37338.
2016-11-16 16:30:27 -08:00
Brian Anderson ba872f2707 Revert "Bump the bootstrap cargo to match the one paired with 1.13"
This reverts commit 5ad235c8c0.
2016-11-17 00:11:10 +00:00
Brian Anderson beb9a0dfc5 Merge pull request #37635 from brson/bootstrap
Bump the bootstrap cargo to match the one paired with 1.13
2016-11-16 16:08:41 -08:00
Stefan Schindler 0e1828ab03 Fix grammar verification
* Use `make check-lexer` to verify the grammar.
 * Extend grammar/README
 * Add make clean-grammar rule
 * Add target `check-build-lexer-verifier` to `make tidy`, so it will build the verifier with every build and catch future errors
 * Search for antlr4 with configure and find
2016-11-16 22:42:07 +01:00
Guillaume Gomez 37903bfcf6 Improve reference cast help message 2016-11-16 22:40:55 +01:00
Jeffrey Seyfried 0172e463b0 Add regression test. 2016-11-16 21:29:56 +00:00
Guillaume Gomez 976bfc0322 Add examples for Ipv4Addr 2016-11-16 21:13:44 +01:00
Niko Matsakis 629f5ffb23 include a Name and Span for each item in the HIR of the impl 2016-11-16 13:57:47 -05:00
Niko Matsakis 26d1500e13 add a `nested_visit_map` method
This allows you to enable *all* nested visits in a future-compatible
sort of way. Moreover, if you choose to override the `visit_nested`
methods yourself, you can "future-proof" against omissions by overriding
`nested_visit_map` to panic.
2016-11-16 13:57:47 -05:00
Niko Matsakis 4df5288971 move duplicate checking into TypeCheck
This completes the effort to not touch the impl-items during
`Collect(Impl)`.
2016-11-16 13:57:46 -05:00
Niko Matsakis 29a39ab834 move `convert_impl_item` into the main loop
This is better because the edges will be accounted to
the impl item itself
2016-11-16 13:57:46 -05:00