about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2017-01-16Auto merge of #39071 - est31:master, r=GuillaumeGomezbors-9/+3
Mark safe_suggestion and pushpop_unsafe as removed in feature_gate.rs This removes two features from feature_gate.rs: `safe_suggestion` and `pushpop_unsafe`. Both had been removed in other places already, but were forgotten to be removed from feature_gate.rs. * `safe_suggestion` was added in commit 164f0105bb65f31b89e5fb7f368c9e6f5833a3f8 and then removed again in commit c11fe553df269d6f47b4c48f5c47c08efdd373dc both in the same PR #38099. * `pushpop_unsafe` was added in commit 1829fa5199bae5a192c771807c532badce14be37 and removed again in commit d399098fd82e0bf3ed61bbbbcdbb0b6adfa4c808 Removes two elements from the whitelist of non gate tested unstable lang features (issue #39059).
2017-01-16Auto merge of #39069 - GuillaumeGomez:missing_blank_space, r=Manishearthbors-3/+5
Fix missing blank space issue r? @Manishearth
2017-01-16Auto merge of #38806 - comex:lint-attr-fix, r=nrcbors-59/+43
Fix lint attributes on non-item nodes. Currently, late lint checking uses two HIR visitors: LateContext and IdVisitor. IdVisitor only overrides visit_id, and for each node searches for builtin lints previously added to the session; LateContext overrides a number of methods, and runs late lints. When LateContext encounters an item, it first has IdVisitor walk everything in it except nested items (OnlyBodies), then recurses into it itself - i.e. there are two separate walks. Aside from apparently being unnecessary, this separation prevents lint attributes (allow/deny/warn) on non-item HIR nodes from working properly. Test case: ```rust // generates warning without this change fn main() { #[allow(unreachable_code)] loop { break; break; } } ``` LateContext contains logic to merge attributes seen into the current lint settings while walking (with_lint_attrs), but IdVisitor does not. So such attributes will affect late lints (because they are called from LateContext), and if the node contains any items within it, they will affect builtin lints within those items (because that IdVisitor is run while LateContext is within the attributed node), but otherwise the attributes will be ignored for builtin lints. This change simply removes IdVisitor and moves its visit_id into LateContext itself. Hopefully this doesn't break anything... Also added walk calls to visit_lifetime and visit_lifetime_def respectively, so visit_lifetime_def will recurse into the lifetime and visit_lifetime will recurse into the name. In principle this could confuse lint plugins. This is "necessary" because walk_lifetime calls visit_id on the lifetime; of course, an alternative would be directly calling visit_id (which would require manually iterating over the lifetimes in visit_lifetime_def), but that seems less clean.
2017-01-15Auto merge of #39042 - alexcrichton:upload-more, r=brsonbors-53/+386
travis: Expand dist builder coverage This commit adds six new travis matrix entires for doing cross-compiled distribution builds of the compiler. The support added in #38731 allows us to quickly compile a complete suite of distribution artifacts for cross-compiled platforms, and currently each matrix entry (when fully cached) clocks in around an hour to finish. Note that a full test run typically takes about two hours right now. With further optimizations coming down the pike in #39026 this commit also starts doubling up cross-compiled distribution builders on each matrix entry. We initially planned to do one build per entry, but it's looking like we may be able to get by with more than one in each entry. Depending on how long these builds take we may even be able to up it to three, but we'll start with two first. This commit then completes the suite of cross-compiled compilers that we're going to compile, adding it for a whole litany of platforms detailed in the changes to the docker files here. The existing `cross` image is also trimmed down quite a bit to avoid duplicate work, and we'll eventually provision it for far more cross compilation as well. Note that the gcc toolchains installed to compile most of these compilers are inappropriate for actualy distribution. The glibc they pull in is much newer than we'd like, so before we turn nightlies off we'll need to tweak these docker files to custom build toolchains like the current `linux-cross` docker image does.
2017-01-15Auto merge of #38610 - djzin:master, r=sfacklerbors-77/+190
Implementation of plan in issue #27787 for btree_range Still some ergonomics to be worked on, the ::<str,_> is particularly unsightly
2017-01-15travis: Expand dist builder coverageAlex Crichton-53/+386
This commit adds six new travis matrix entires for doing cross-compiled distribution builds of the compiler. The support added in #38731 allows us to quickly compile a complete suite of distribution artifacts for cross-compiled platforms, and currently each matrix entry (when fully cached) clocks in around an hour to finish. Note that a full test run typically takes about two hours right now. With further optimizations coming down the pike in #39026 this commit also starts doubling up cross-compiled distribution builders on each matrix entry. We initially planned to do one build per entry, but it's looking like we may be able to get by with more than one in each entry. Depending on how long these builds take we may even be able to up it to three, but we'll start with two first. This commit then completes the suite of cross-compiled compilers that we're going to compile, adding it for a whole litany of platforms detailed in the changes to the docker files here. The existing `cross` image is also trimmed down quite a bit to avoid duplicate work, and we'll eventually provision it for far more cross compilation as well. Note that the gcc toolchains installed to compile most of these compilers are inappropriate for actualy distribution. The glibc they pull in is much newer than we'd like, so before we turn nightlies off we'll need to tweak these docker files to custom build toolchains like the current `linux-cross` docker image does.
2017-01-15Fix missing blank space issueGuillaume Gomez-3/+5
2017-01-15Auto merge of #39063 - ruuda:covered-switch, r=alexcrichtonbors-10/+4
Fix covered-switch-default warnings in RustWrapper These switch statements cover all possible values, so the default case is dead code (it contains an `llvm_unreachable anyway`), triggering a `-Wcovered-switch-default` warning that pollutes the build output. Moving the unreachable after the switch resolves these warnings. r? @rkruppe
2017-01-15Auto merge of #39052 - alexcrichton:fix-rebuild, r=brsonbors-4/+10
rustbuild: Skip the build_helper crate in tests I've been noticing some spurious recompiles of the final stage on Travis lately and in debugging them I found a case where we were a little to eager to update a stamp file due to the build_helper library being introduced during the testing phase. Part of the rustbuild system detects when libstd is recompiled and automatically cleans out future directories to ensure that dirtyness propagation works. To do this rustbuild doesn't know the artifact name of the standard library so it just probes everything in the target directory, looking to see if anything changed. The problem here happened where: * First, rustbuild would compile everything (a normal build) * Next, rustbuild would run all tests * During testing, the libbuild_helper library was introduced into the target directory, making it look like a change happened because a file is newer than the newest was before * Detecting a change, the next compilation would then cause rustbuild to clean out old artifacts and recompile everything again. This commit fixes this problem by correcting rustbuild to just not test the build_helper crate at all. This crate doesn't have any unit tests, nor is it intended to. That way the target directories should stay the same throughout testing after a previous build.
2017-01-15Auto merge of #39045 - redox-os:process_try_wait, r=brsonbors-0/+14
Add try_wait to Redox process This implements Process::try_wait on Redox
2017-01-15Auto merge of #39040 - estebank:relevant-impl-multiline, r=nikomatsakisbors-12/+41
Use multiline Diagnostic for "relevant impl" list Provide the following output: ``` error[E0277]: the trait bound `Bar: Foo<usize>` is not satisfied --> $DIR/issue-21659-show-relevant-trait-impls-2.rs:38:8 | 38 | f1.foo(1usize); | ^^^ the trait `Foo<usize>` is not implemented for `Bar` | = help: the following implementations were found: <Bar as Foo<i8>> <Bar as Foo<i16>> <Bar as Foo<i32>> <Bar as Foo<u8>> and 2 others error: aborting due to previous error ``` instead of ``` error[E0277]: the trait bound `Bar: Foo<usize>` is not satisfied --> $DIR/issue-21659-show-relevant-trait-impls-2.rs:38:8 | 38 | f1.foo(1usize); | ^^^ the trait `Foo<usize>` is not implemented for `Bar` | = help: the following implementations were found: = help: <Bar as Foo<i8>> = help: <Bar as Foo<i16>> = help: <Bar as Foo<i32>> = help: <Bar as Foo<u8>> = help: and 2 others error: aborting due to previous error ```
2017-01-15Mark the pushpop_unsafe feature as "removed"est31-5/+2
This marks the pushpop_unsafe feature as removed inside the feature_gate. It was added in commit 1829fa5199bae5a192c771807c532badce14be37 and then removed again in commit d399098fd82e0bf3ed61bbbbcdbb0b6adfa4c808 . Seems that the second commit forgot to mark it as removed in feature_gate.rs. This enables us to remove another element from the whitelist of non gate tested unstable lang features (issue #39059).
2017-01-15Remove the safe_suggestion featureest31-4/+1
This removes the safe_suggestion feature from feature_gate.rs. It was added in commit 164f0105bb65f31b89e5fb7f368c9e6f5833a3f8 and then removed again in commit c11fe553df269d6f47b4c48f5c47c08efdd373dc . As the removal was in the same PR #38099 as the addition, we don't move it to the "removed" section. Removes an element from the whitelist of non gate tested unstable lang features (issue #39059).
2017-01-15Auto merge of #39026 - alexcrichton:more-less-cross-stage0, r=aturonbors-1/+13
rustbuild: Actually don't build stage0 target rustc This was attempted in #38853 but erroneously forgot one more case of where the compiler was compiled. This commit fixes that up and adds a test to ensure this doesn't sneak back in.
2017-01-14Merge branch 'master' into lint-attr-fixcomex-5542/+9481
2017-01-14Auto merge of #39020 - michaelwoerister:dep-graph-dfs-caching, r=nikomatsakisbors-9/+317
incr.comp.: Add some caching to Predecessors construction. This speeds up the "serialize dep graph" pass for libsyntax from 45 secs to 15 secs on my machine. Still far from ideal, but things will get better when we change the metadata hashing strategy. The `CACHING_THRESHOLD` value of 60 has been arrived at experimentally. It seemed to give the best speedup. r? @nikomatsakis
2017-01-14Auto merge of #38992 - nagisa:i128-minvallit, r=eddybbors-14/+31
Fix two const-eval issues related to i128 negation First issue here was the fact that we’d only allow negating integers in i64 range in case the integer was not infered yes. While this is not the direct cause of the issue, its still good to fix it. The real issue here is the code handling specifically the `min_value` literals. While I128_OVERFLOW has the expected value (0x8000_..._0000), match using this value as a pattern is handled incorrectly by the stage1 compiler (it seems to be handled correctly, by the stage2 compiler). So what we do here is extract this pattern into an explicit `==` until the next snapshot. Fixes #38987
2017-01-14add required imports & featureDjzin-0/+2
2017-01-14Auto merge of #38982 - clarcharr:expect_err, r=aturonbors-0/+39
expect_err for Result. This adds an `expect_err` method to `Result`. Considering how `unwrap_err` already exists, this seems to make sense. Inconsistency noted in Manishearth/rust-clippy#1435.
2017-01-14update array_vec to use new rangeargumentdjzin-2/+10
2017-01-14update docs with new syntaxdjzin-9/+9
2017-01-14update docs with new syntaxdjzin-12/+18
2017-01-14fix warnings in doctestsdjzin-4/+3
2017-01-14shorten range syntaxdjzin-1/+1
2017-01-14make rangeargument methods non-default; simplify impldjzin-17/+18
2017-01-14simplify some rangesdjzin-2/+2
2017-01-14fix failing testdjzin-3/+3
2017-01-14add type annotations to doctestdjzin-1/+1
2017-01-14add test for range_mutdjzin-0/+19
2017-01-14use str range for string btreemap in testdjzin-2/+2
2017-01-14use rangeargument for range_mutdjzin-7/+6
2017-01-14allow unsized types in `RangeArgument`djzin-1/+19
2017-01-14fix up testsdjzin-13/+17
2017-01-14fix up testsdjzin-3/+17
2017-01-14change argument for btree_rangedjzin-12/+9
2017-01-14impl RangeArgument for (Bound<T>, Bound<T>)djzin-0/+18
2017-01-14have RangeArgument return a Bound<&T> from each of its methodsdjzin-18/+46
2017-01-14Auto merge of #38952 - nrc:save-impl-fix, r=eddybbors-8/+6
save-analysis: handle paths in type/trait context more correctly TBH, this is still not perfect, witness the FIXME, but it is an improvement. In particular it means we get information about trait references in impls.
2017-01-14Fix covered-switch-default warnings in RustWrapperRuud van Asseldonk-10/+4
These switch statements cover all possible values, so the default case is dead code (it contains an llvm_unreachable anyway), triggering a -Wcovered-switch-default warning. Moving the unreachable after the switch resolves these warnings. This keeps the build output clean.
2017-01-14Auto merge of #38944 - michaelwoerister:incr-generics-partitioning, ↵bors-187/+175
r=nikomatsakis trans: Treat generics like regular functions, not like #[inline] function, during CGU partitioning This PR makes generics be treated just like regular functions during CGU partitioning: + the function instantiation is placed in a codegen unit based on the function's DefPath, + unless it is marked with `#[inline]` -- which causes a private copy of the function to be placed in every referencing codegen unit. This has the following effects: + Multi codegen unit builds will become faster because code for generic functions is duplicated less. + Multi codegen unit builds might have lower runtime performance, since generics are not available for inlining automatically any more. + Single codegen unit builds are not affected one way or the other. This partitioning scheme is particularly good for incremental compilation as it drastically reduces the number of false positives during codegen unit invalidation. I'd love to have a benchmark suite for estimating the effect on runtime performance for changes like this one. r? @nikomatsakis cc @rust-lang/compiler
2017-01-14Auto merge of #38935 - redox-os:fix_path_redox, r=brsonbors-1/+2
Fix is_absolute on Redox Due to not using prefixes on Redox, yet, it must be added as an exception to Path::is_absolute.
2017-01-14Auto merge of #38927 - petrochenkov:leven, r=jseyfriedbors-19/+157
resolve: Levenshtein-based suggestions for non-import paths This patch addresses both items from https://github.com/rust-lang/rust/issues/30197#issuecomment-264846000 and therefore implements the largest part of https://github.com/rust-lang/rust/issues/30197. r? @jseyfried
2017-01-14Auto merge of #38914 - est31:tidy-gate-tests, r=nikomatsakisbors-20/+221
Make tidy check for lang gate tests Add gate tests to the checks that tidy performs. Excerpt from the commit message of the main commit: Require compile-fail tests for new lang features Its non trivial to test lang feature gates, and people forget to add such tests. So we extend the features lint of the tidy tool to ensure that all new lang features contain a new compile-fail test. Of course, one could drop this requirement and just grep all tests in run-pass for #![feature(abc)] and then run this test again, removing the mention, requiring that it fails. But this only tests for the existence of a compilation failure. Manual tests ensure that also the correct lines spawn the error, and also test the actual error message. For library features, it makes no sense to require such a test, as here code is used that is generic for all library features. The tidy lint extension now checks the compile-fail test suite for occurences of "gate-test-X" where X is a feature. Alternatively, it also accepts file names with the form "feature-gate-X.rs". If a lang feature is found that has no such check, we emit a tidy error. I've applied the markings to all tests I could find in the test suite. I left a small (20 elements) whitelist of features that right now have no gate test, or where I couldn't find one. Once this PR gets merged, I'd like to close issue #22820 and open a new one on suggestion of @nikomatsakis to track the removal of all elements from that whitelist (already have a draft). Writing such a small test can be a good opportunity for a first contribution, so I won't touch it (let others have the fun xD). cc @brson , @pnkfelix (they both discussed about this in the issue linked above).
2017-01-14Auto merge of #38854 - Mark-Simulacrum:immediate-refactor, r=eddybbors-47/+27
Simplify type_is_immediate and type_is_fat_ptr r? @eddyb
2017-01-13Auto merge of #39030 - GuillaumeGomez:rollup, r=GuillaumeGomezbors-74/+337
Rollup of 10 pull requests - Successful merges: #38362, #38636, #38877, #38946, #38965, #38986, #38994, #38995, #39024, #39027 - Failed merges:
2017-01-13Avoid using load/stores on first class aggregatesBjörn Steinbrink-2/+1
LLVM usually prefers using memcpys over direct loads/store of first class aggregates. The check in type_is_immediate to mark certain small structs was originally part of the code to handle such immediates in function arguments, and it had a counterpart in load_ty/store_ty to actually convert small aggregates to integers. But since then, the ABI handling has been refactored and takes care of converting small aggregates to integers. During that refactoring, the code to handle small aggregates in load_ty/store_ty has been removed, and so we accidentally started using loads/stores on FCA values. Since type_is_immediate() is no longer responsible for ABI-related conversions, and using a memcpy even for small aggregates is usually better than performing a FCA load/store, we can remove that code part and only handle simple types as immediates there. This integrates PR #38906 onto this branch. Fixes #38906.
2017-01-13rustbuild: Skip the build_helper crate in testsAlex Crichton-4/+10
I've been noticing some spurious recompiles of the final stage on Travis lately and in debugging them I found a case where we were a little to eager to update a stamp file due to the build_helper library being introduced during the testing phase. Part of the rustbuild system detects when libstd is recompiled and automatically cleans out future directories to ensure that dirtyness propagation works. To do this rustbuild doesn't know the artifact name of the standard library so it just probes everything in the target directory, looking to see if anything changed. The problem here happened where: * First, rustbuild would compile everything (a normal build) * Next, rustbuild would run all tests * During testing, the libbuild_helper library was introduced into the target directory, making it look like a change happened because a file is newer than the newest was before * Detecting a change, the next compilation would then cause rustbuild to clean out old artifacts and recompile everything again. This commit fixes this problem by correcting rustbuild to just not test the build_helper crate at all. This crate doesn't have any unit tests, nor is it intended to. That way the target directories should stay the same throughout testing after a previous build.
2017-01-13Add try_wait to Redox processJeremy Soller-0/+14
2017-01-13Fix is_absolute on RedoxJeremy Soller-1/+2
2017-01-13expect_err for Result.Clar Charr-0/+39