Commit graph

10746 commits

Author SHA1 Message Date
Niko Matsakis
db5f3bc65c Fix some merge conflicts 2015-07-03 19:42:55 -04:00
Niko Matsakis
65a456df43 Now that I made the warning smarter, these tests no longer require modification 2015-07-03 19:42:35 -04:00
Niko Matsakis
18e9007ac2 Adjust tests to silence warnings (or record them, as appropriate). 2015-07-03 19:42:35 -04:00
Niko Matsakis
1e7a6b880c After inferring regions, scan for any bounds that are due to a lifetime
bound that is likely to change. In that case, it will change to 'static,
so then scan down the graph to see whether there are any hard
constraints that would prevent 'static from being a valid value
here. Report a warning.
2015-07-03 19:42:35 -04:00
bors
f027bdc1c8 Auto merge of #26378 - arielb1:unused-mut, r=pnkfelix
This makes it somewhat more aggressive, so this is kind-of a [breaking-change] for these compiling with `#[deny(unused_mut)]`.

r? @pnkfelix
2015-07-03 21:31:46 +00:00
Björn Steinbrink
eaeede2126 Fix ICE caused by Drop implementations for unsized types
Fixes #26709
2015-07-03 14:44:51 +02:00
bors
fb379ef05c Auto merge of #26682 - posix4e:netbsd, r=alexcrichton
This is dependent on https://github.com/rust-lang/rust-installer/pull/38. Once it is merged we most likely need to update the commit.
2015-07-02 18:50:46 +00:00
bors
c4b4f07592 Auto merge of #26727 - remram44:coerceunsized-weak, r=eddyb
This is a simple addition, shouldn't change behavior.

Fixes #26704

I don't know if the coercion for `Rc` is tested, if it is this probably needs the same test with `Weak`.
2015-07-02 09:19:27 +00:00
Alex Newman
0b7c4f57f6 Add netbsd amd64 support 2015-07-01 19:09:14 -07:00
Remi Rampin
50421827ae Add test to dst-coerce-rc.rs 2015-07-01 17:54:54 -04:00
Nick Hamann
c9c5ea7c13 Add a regression test for #8640.
This doesn't add a test for the main problem in #8640 since it seems that
was already fixed (including a test) in PR #19522. This just adds a test
for a program mentioned in the comments that used to erroneously compile.

Closes #8640.
2015-07-01 12:22:42 -05:00
bors
bf3c979ec3 Auto merge of #26696 - steveklabnik:rollup, r=steveklabnik
- Successful merges: #26373, #26506, #26580, #26622, #26627, #26651, #26678, #26692
- Failed merges:
2015-06-30 23:46:57 +00:00
bors
dc309d79e9 Auto merge of #26686 - arielb1:associated-type-defaults-actually-work, r=eddyb
Fixes #26636.

r? @eddyb
2015-06-30 21:39:46 +00:00
Ariel Ben-Yehuda
a18d9842ed Make the unused_mut lint smarter with respect to locals.
Fixes #26332
2015-07-01 00:12:12 +03:00
bors
fdf219dd42 Auto merge of #26663 - Eljay:fix-repr-attribute, r=sanxiyn
Fixes #26646.

Loops over all `#[repr(..)]` attributes instead of stopping at the first one to make sure they are all marked as used. Previously it stopped after the first `#[repr(C)]` was found causing all other attributes to be skipped by the linter.
2015-06-30 20:07:18 +00:00
Steve Klabnik
cf1c5b22d8 Rollup merge of #26622 - tshepang:indents, r=sanxiyn 2015-06-30 15:37:44 -04:00
Ariel Ben-Yehuda
cebb118bff Actually encode default associated types
Fixes #26636
2015-06-30 22:03:25 +03:00
bors
080d5b74dd Auto merge of #26670 - frewsxcv:regression-test-13902, r=alexcrichton
Closes #13902
2015-06-30 08:04:11 +00:00
bors
e6596d0052 Auto merge of #26668 - frewsxcv:regression-test-17756, r=alexcrichton
Closes #17756
2015-06-30 03:18:45 +00:00
bors
27975c49a6 Auto merge of #26667 - arielb1:audit-walk, r=eddyb
This was originally motivated by checking for HRTB hygiene, but I found several other bugs on the way.

This does not fix the biggest user of ty_walk, which is dtorck - I would prefer to coordinate that with @pnkfelix.

r? @eddyb
2015-06-30 01:45:46 +00:00
Corey Farwell
6419acee34 Add regression test for #13902
Closes #13902
2015-06-29 17:28:21 -07:00
Corey Farwell
d8680f6534 Add regression test for #17756
Closes #17756
2015-06-29 17:10:53 -07:00
Huon Wilson
900af2c6d9 lint: default methods must be called on Self to unconditionally recur.
This catches the case when a trait defines a default method that calls
itself, but on a type that isn't necessarily `Self`, e.g. there's no
reason that `T = Self` in the following, so the call isn't necessarily
recursive (`T` may override the call).

    trait Bar {
        fn method<T: Bar>(&self, x: &T) {
            x.method(x)
        }
    }

Fixes #26333.
2015-06-29 16:00:54 -07:00
Huon Wilson
b1931e48a0 lint: only consider actual calls as unconditional recursion.
Specifically, just mentioning the function name as a value is fine, as
long as it isn't called, e.g. `fn main() { let _ = main; }`.

Closes #21705.
2015-06-29 15:59:37 -07:00
Ariel Ben-Yehuda
336f81215e Remove type_needs_unwind_cleanup
After the last @dinosaur went extinct, the check became redundant with
type_needs_drop, except for its bugginess.

Fixes #26655.
2015-06-30 01:34:17 +03:00
Ariel Ben-Yehuda
bf164bc6e3 Fix lifetime elision region accounting
This merges accumulate_regions_in_type with ty_fold::collect_regions.
Fixes #26638
2015-06-30 01:33:16 +03:00
Eljay
e8fe55f453 Add missing trailing newline. 2015-06-29 21:49:15 +01:00
Eljay
58ff6cc668 Add test for #26646. 2015-06-29 21:27:10 +01:00
Ariel Ben-Yehuda
a1110bc3a3 Fix off-by-one error in default-type-parameter checking
Fixes #18183
2015-06-29 21:27:33 +03:00
Tshepang Lekhonkhobe
7d0198d5d2 test: fix some indents 2015-06-27 15:45:48 +02:00
Alex Crichton
759a7f1f66 test: Use liblibc in lang-item-public
Makes this test case more robust by using standard libraries to ensure the
binary can be built.
2015-06-25 09:33:15 -07:00
bors
b213c947f8 Auto merge of #26558 - nham:fix_24357, r=alexcrichton
Fixes #24357.

Also adds a (totally separate) regression test, which

Closes #18119
2015-06-25 10:39:09 +00:00
Nick Hamann
db9af26d76 Add a regression test for #18119.
Closes #18119
2015-06-24 20:15:23 -05:00
Nick Hamann
0cc26b2058 Use correct type for "use of moved value" error with closures.
Fixes #24357
2015-06-24 20:15:11 -05:00
bors
e5a28bca77 Auto merge of #26547 - nham:test-19538, r=alexcrichton
Closes #19538.
2015-06-25 00:21:33 +00:00
bors
e2c273f1bb Auto merge of #26536 - frewsxcv:regression-test-22375, r=alexcrichton
Closes #22375
2015-06-24 18:11:39 +00:00
Nick Hamann
079bfad72d Add a regression test for #19538.
Closes #19538.
2015-06-24 12:42:05 -05:00
bors
43ad8d0bec Auto merge of #26533 - nham:test-23305, r=alexcrichton
Closes #23305.
2015-06-24 15:05:42 +00:00
bors
52f6318700 Auto merge of #26532 - dhuseby:fixing_bitrig_test_failure, r=alexcrichton
to get the bitrig builder working again.
2015-06-24 13:33:37 +00:00
Corey Farwell
425871bd90 Add regression test for #22375
Closes #22375
2015-06-24 00:56:53 -07:00
Nick Hamann
4982b23c22 Add a regression test for #23305.
Closes #23305.
2015-06-23 21:19:34 -05:00
bors
6fed735b22 Auto merge of #26061 - Gankro:inherit-dep, r=brson
Uncertain if this is the desired effect/strategy/testing.

r? @aturon
2015-06-23 20:30:56 +00:00
Dave Huseby
c6944fa9d7 this fixes a bitrig break in the parallel codegen closures test 2015-06-23 11:08:56 -07:00
Nick Cameron
19645c4e21 Test for a particular parallel codegen corner case 2015-06-22 23:08:44 -07:00
Gulshan Singh
a006a82724 Suggest missing trait bounds when a method exists but the bounds aren't satisfied 2015-06-22 20:28:46 -04:00
bors
5c5753e876 Auto merge of #26500 - sanxiyn:dead-field, r=alexcrichton
Fix #26353.
2015-06-22 18:42:31 +00:00
bors
4e2a898afc Auto merge of #25784 - geofft:subprocess-signal-masks, r=alexcrichton
UNIX specifies that signal dispositions and masks get inherited to child processes, but in general, programs are not very robust to being started with non-default signal dispositions or to signals being blocked. For example, libstd sets `SIGPIPE` to be ignored, on the grounds that Rust code using libstd will get the `EPIPE` errno and handle it correctly. But shell pipelines are built around the assumption that `SIGPIPE` will have its default behavior of killing the process, so that things like `head` work:

```
geofft@titan:/tmp$ for i in `seq 1 20`; do echo "$i"; done | head -1
1
geofft@titan:/tmp$ cat bash.rs
fn main() {
        std::process::Command::new("bash").status();
}
geofft@titan:/tmp$ ./bash
geofft@titan:/tmp$ for i in `seq 1 20`; do echo "$i"; done | head -1
1
bash: echo: write error: Broken pipe
bash: echo: write error: Broken pipe
bash: echo: write error: Broken pipe
bash: echo: write error: Broken pipe
bash: echo: write error: Broken pipe
[...]
```

Here, `head` is supposed to terminate the input process quietly, but the bash subshell has inherited the ignored disposition of `SIGPIPE` from its Rust grandparent process. So it gets a bunch of `EPIPE`s that it doesn't know what to do with, and treats it as a generic, transient error. You can see similar behavior with `find / | head`, `yes | head`, etc.

This PR resets Rust's `SIGPIPE` handler, as well as any signal mask that may have been set, before spawning a child. Setting a signal mask, and then using a dedicated thread or something like `signalfd` to dequeue signals, is one of two reasonable ways for a library to process signals. See carllerche/mio#16 for more discussion about this approach to signal handling and why it needs a change to `std::process`. The other approach is for the library to set a signal-handling function (`signal()` / `sigaction()`): in that case, dispositions are reset to the default behavior on exec (since the function pointer isn't valid across exec), so we don't have to care about that here.

As part of this PR, I noticed that we had two somewhat-overlapping sets of bindings to signal functionality in `libstd`. One dated to old-IO and probably the old runtime, and was mostly unused. The other is currently used by `stack_overflow.rs`. I consolidated the two bindings into one set, and double-checked them by hand against all supported platforms' headers. This probably means it's safe to enable `stack_overflow.rs` on more targets, but I'm not including such a change in this PR.

r? @alexcrichton
cc @Zoxc for changes to `stack_overflow.rs`
2015-06-22 16:11:38 +00:00
Seo Sanghyeon
6f7b4ce65a Do not consider fields matched by wildcard patterns to be used 2015-06-22 21:36:14 +09:00
Geoffrey Thomas
cae005162d sys/unix/process: Reset signal behavior before exec
Make sure that child processes don't get affected by libstd's desire to
ignore SIGPIPE, nor a third-party library's signal mask (which is needed
to use either a signal-handling thread correctly or to use signalfd /
kqueue correctly).
2015-06-22 00:55:42 -04:00
bors
ba7f79e9f8 Auto merge of #26481 - nham:test-18655, r=arielb1
These issues are fixed but still open.

Closes #18655.
Closes #18988.
2015-06-22 01:43:02 +00:00