Commit Graph

58810 Commits

Author SHA1 Message Date
bors
49d3fd3b38 Auto merge of #37787 - michaelwoerister:macro-def-ich, r=nikomatsakis
ICH: Handle MacroDef HIR instances.

As of recently, `hir::MacroDef` instances are exported in crate metadata, which means we also store their ICH when doing incremental compilation. Even though exported macro definitions should not (yet) interact with incremental compilation, the ICH is also used for the general purpose crate hash, where macros should be included.

This PR implements ICH computation for `MacroDef`. In theory, the ICH of these MacroDefs is less stable than that of other HIR items, since I opted to just call the compiler-generated `Hash::hash()` for `Token::Interpolated` variants. `Token::Interpolated` contains AST data structures and it would have been a lot of effort to expand ICH computation to the AST too. Since quasi-quoting is rarely used *and* it would only make a difference if incremental compilation was extended to macros, the simpler implementation seemed like a good idea.

This fixes the problem reported in https://github.com/rust-lang/rust/issues/37756. The test still fails because of broken codegen-unit support though.

r? @nikomatsakis
2016-11-18 19:21:47 -08:00
bors
ac635aa95b Auto merge of #37867 - brson:no-lexer-verify, r=alexcrichton
Don't build the lexer verifier during tidy

Tidy is not the right place to do this. Tidy is for running lints.
We should instead be running the lexer/grammar tests as part of the test
suite.

This may fix nightly breakage, but I don't understand why.

https://buildbot.rust-lang.org/builders/nightly-dist-rustc-linux/builds/715/steps/distcheck/logs/stdio

r? @alexcrichton

cc @dns2utf8
2016-11-18 15:04:27 -08:00
Michael Woerister
c722a1eb99 Add span to warning about incr. comp. vs Token::Interpolated. 2016-11-18 16:45:59 -05:00
Michael Woerister
52d250efab Add test case for exported macros vs incremental compilation. 2016-11-18 16:45:59 -05:00
Michael Woerister
e6b30bda49 Remove outdated comment about SVH. 2016-11-18 16:45:59 -05:00
Michael Woerister
a5137afe8c ICH: Hash MacroDefs in a mostly stable way. 2016-11-18 16:45:59 -05:00
Michael Woerister
003b1699c0 Add error message when not finding the ICH of a DepNode. 2016-11-18 16:45:17 -05:00
Brian Anderson
d3b050c308 Don't build the lexer verifier during tidy
Tidy is not the right place to do this. Tidy is for running lints.
We should instead be running the lexer/grammar tests as part of the test
suite.

This may fix nightly breakage, but I don't know why.
2016-11-18 20:37:27 +00:00
bors
b7dfc2bd12 Auto merge of #37776 - nrc:save-double-angle, r=@brson
save-analysis: handle << and >> operators inside [] in types

Fixes #37700
2016-11-18 11:45:53 -08:00
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
Nick Cameron
8a949dfea2 save-analysis: handle << and >> operators inside [] in types
Fixes #37700
2016-11-18 13:06:16 +13: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 NameBindings instead of DefIds. 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