about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2016-11-19Auto merge of #37822 - cuviper:llvm-link-shared, r=alexcrichtonbors-11/+39
rustbuild: allow dynamically linking LLVM The makefiles and `mklldeps.py` called `llvm-config --shared-mode` to find out if LLVM defaulted to shared or static libraries, and just went with that. But under rustbuild, `librustc_llvm/build.rs` was assuming that LLVM should be static, and even forcing `--link-static` for 3.9+. Now that build script also uses `--shared-mode` to learn the default, which should work better for pre-3.9 configured for dynamic linking, as it wasn't possible back then to choose differently via `llvm-config`. Further, the configure script now has a new `--enable-llvm-link-shared` option, which allows one to manually override `--link-shared` on 3.9+ instead of forcing static. Update: There are now four static/shared scenarios that can happen for the supported LLVM versions: - 3.9+: By default use `llvm-config --link-static` - 3.9+ and `--enable-llvm-link-shared`: Use `--link-shared` instead. - 3.8: Use `llvm-config --shared-mode` and go with its answer. - 3.7: Just assume static, maintaining the status quo.
2016-11-19Auto merge of #37814 - japaric:aapcs, r=alexcrichtonbors-1/+2
fix `extern "aapcs" fn` to actually use the AAPCS calling convention closes #37810 This is technically a [breaking-change] because it changes the ABI of `extern "aapcs"` functions that (a) involve `f32`/`f64` arguments/return values and (b) are compiled for arm-eabihf targets from "aapcs-vfp" (wrong) to "aapcs" (correct). Appendix: What these ABIs mean? - In the "aapcs-vfp" ABI or "hard float" calling convention: Floating point values are passed/returned through FPU registers (s0, s1, d0, etc.) - Whereas, in the "aapcs" ABI or "soft float" calling convention: Floating point values are passed/returned through general purpose registers (r0, r1, etc.) Mixing these ABIs can cause problems if the caller assumes that the routine is using one of these ABIs but it's actually using the other one. --- r? @alexcrichton We are going this `extern "aapcs" fn` thing to implement some intrinsics (floatundidf) for the eabihf targets in order to comply with LLVM's calling convention of intrinsics. Oh, and the value of the enum came from [here](http://llvm.org/docs/doxygen/html/namespacellvm_1_1CallingConv.html). cc @TimNN @parched
2016-11-19Auto merge of #37797 - arielb1:inline-closure, r=michaelwoeristerbors-0/+7
instantiate closures on demand this should fix compilation with `-C codegen-units=4` - tested locally with `RUSTFLAGS='-C codegen-units=4' ../x.py test` r? @michaelwoerister
2016-11-18Auto merge of #37853 - TimNN:fix-travis, r=alexcrichtonbors-0/+1
fix travis: update Cargo.lock
2016-11-18Auto merge of #37787 - michaelwoerister:macro-def-ich, r=nikomatsakisbors-9/+174
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-18Add span to warning about incr. comp. vs Token::Interpolated.Michael Woerister-4/+6
2016-11-18Add test case for exported macros vs incremental compilation.Michael Woerister-0/+23
2016-11-18Remove outdated comment about SVH.Michael Woerister-5/+0
2016-11-18ICH: Hash MacroDefs in a mostly stable way.Michael Woerister-3/+143
2016-11-18Add error message when not finding the ICH of a DepNode.Michael Woerister-1/+6
2016-11-18Auto merge of #37776 - nrc:save-double-angle, r=@brsonbors-14/+48
save-analysis: handle << and >> operators inside [] in types Fixes #37700
2016-11-18Auto merge of #37749 - keeperofdakeys:should-panic, r=alexcrichtonbors-20/+151
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-18Auto merge of #37769 - alexcrichton:rustbuild-python, r=brsonbors-8/+38
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-18update Cargo.lockTim Neumann-0/+1
2016-11-18Warn when a #[should_panic] test has an unexpected messageJosh Driver-13/+68
2016-11-18instantiate closures on demandAriel Ben-Yehuda-0/+7
this should fix compilation with `-C codegen-units=4` - tested locally with `RUSTFLAGS='-C codegen-units=4' ../x.py test`
2016-11-18Auto merge of #37763 - liigo:rustdoc-playground, r=alexcrichtonbors-4/+10
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-17rustbuild: update the llvm link logic furtherJosh Stone-26/+32
There are now four static/shared scenarios that can happen for the supported LLVM versions: - 3.9+: By default use `llvm-config --link-static` - 3.9+ and `--enable-llvm-link-shared`: Use `--link-shared` instead. - 3.8: Use `llvm-config --shared-mode` and go with its answer. - 3.7: Just assume static, maintaining the status quo.
2016-11-17Auto merge of #37846 - jseyfried:fix_proc_macro_dep, r=alexcrichtonbors-4/+47
Fix bug in proc_macro dependency loading Fixes #37839. r? @alexcrichton
2016-11-17Auto merge of #37660 - nikomatsakis:incremental-36349, r=eddybbors-630/+1765
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-18Add regression test.Jeffrey Seyfried-0/+43
2016-11-18save-analysis: handle << and >> operators inside [] in typesNick Cameron-14/+48
Fixes #37700
2016-11-18Fix bug in loading proc macro dependencies.Jeffrey Seyfried-4/+4
2016-11-17Auto merge of #37424 - shiver:issue-37131, r=alexcrichtonbors-3/+36
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-17add test for hashing trait implsNiko Matsakis-0/+404
2016-11-17Auto merge of #37837 - GuillaumeGomez:rollup, r=GuillaumeGomezbors-37/+522
Rollup of 8 pull requests - Successful merges: #37752, #37757, #37759, #37766, #37772, #37799, #37806, #37821 - Failed merges: #37442
2016-11-17canonicalize base incremental path on windowsNiko Matsakis-0/+13
This sidesteps problems with long paths because the canonical path includes the "magic long path prefix" on Windows.
2016-11-17fix change_private_impl_method_cc testNiko Matsakis-3/+1
2016-11-17fix oversight in closure translationNiko Matsakis-7/+2
(Unrelated to this PR series)
2016-11-17hash the contents of impl-item-ref by adding them to visitorNiko Matsakis-55/+234
Also simplify some of the `ty::AssociatedItem` representation, in particular by folding `has_value` into `hir::Defaultness`
2016-11-17move impl wf check so they occur earlierNiko Matsakis-69/+92
Needed to keep coherence from freaking out.
2016-11-17when creating an AssociatedItem, read data from impl, not impl itemNiko Matsakis-90/+129
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-17Rollup merge of #37821 - tshepang:nits, r=steveklabnikGuillaume Gomez-17/+17
doc: nits and typos on comments
2016-11-17Rollup merge of #37806 - GuillaumeGomez:net_examples, r=frewsxcvGuillaume Gomez-6/+144
Net examples r? @steveklabnik
2016-11-17Rollup merge of #37799 - michaelwoerister:ich-type-def-tests, r=nikomatsakisGuillaume Gomez-0/+249
ICH: Add test case for type alias definitions r? @nikomatsakis
2016-11-17Rollup merge of #37772 - durka:patch-32, r=petrochenkovGuillaume Gomez-0/+23
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-17Rollup merge of #37766 - tarka:book-testing-concurrency-capture, r=steveklabnikGuillaume Gomez-0/+42
Add sections about testing concurrency and stdout/err capture
2016-11-17Rollup merge of #37759 - robinst:trait-use-message-add-semicolon, r=eddybGuillaume Gomez-9/+9
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-17Rollup merge of #37757 - rust-lang:E0002-precision, r=brsonGuillaume Gomez-4/+6
Uncomment some long error explanation Retry of #37058. r? @steveklabnik cc @brson
2016-11-17Rollup merge of #37752 - arielb1:incoherent-error, r=nikomatsakisGuillaume Gomez-1/+32
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-17Auto merge of #37732 - jseyfried:use_extern_macros, r=nrcbors-386/+618
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-17Auto merge of #37793 - jseyfried:fix_proc_macro_def_ids, r=nrcbors-11/+79
Fix proc macro def ids Update some `CStore` methods to also work correctly with proc macro def ids. Fixes #37788. r? @nrc
2016-11-17Auto merge of #37717 - nikomatsakis:region-obligations-pre, r=eddybbors-465/+470
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-17Cleanup formatting.Jeffrey Seyfried-23/+28
2016-11-17Add tests.Jeffrey Seyfried-0/+70
2016-11-17Add feature `use_extern_macros`.Jeffrey Seyfried-135/+238
2016-11-17Refactor out `PerNS`.Jeffrey Seyfried-178/+186
2016-11-17Add field `expansion: Mark` to `NameBinding`.Jeffrey Seyfried-43/+68
2016-11-17Refactor `Resolver::builtin_macros` to use `NameBinding`s instead of `DefId`s.Jeffrey Seyfried-12/+20
2016-11-17Resolve imports during expansion.Jeffrey Seyfried-24/+26