Commit Graph

31940 Commits

Author SHA1 Message Date
Steve Klabnik
263d65cb01 Fix lies in the concurrency guide.
This cleans up blatant lies in the concurrency guide, and modernizes it
a bit. There's a lot more to do, but until I get to it, let's make it a
little bit better.
2014-08-27 16:42:24 -04:00
bors
f2b87e9ff0 auto merge of #16797 : nikomatsakis/rust/remove-invalid-spsc_queue-test, r=alexcrichton
This test seems to read freed memory -- the peeked variable points into the queue, but then the pop operation removes the node from the queue and moves the enclosing `T` elsewhere, invalidating the `peeked` pointer.

r? @alexcrichton
2014-08-27 19:46:14 +00:00
Niko Matsakis
5c82f484db Remove invalid test -- this test reads freed memory, from what I can tell 2014-08-27 15:06:44 -04:00
bors
3ee047ae1f auto merge of #16766 : kevinmehall/rust/issue-15976, r=alexcrichton
As of 8876ce44, `is_sugared_doc` is encoded in metadata, so there is no
need to assume that all `doc` attributes came from sugared comments.

Fixes #15976
2014-08-27 17:11:11 +00:00
bors
18d6eefadb auto merge of #16761 : mrmonday/rust/patch-1, r=alexcrichton
This question comes up relatively frequently on IRC - "what do tx and rx mean?". This change adds a short explanation.
2014-08-27 14:01:18 +00:00
Manish Goregaokar
2b312eca89 Allow *-pointers in PtrTy (fixes #16781) 2014-08-27 18:49:17 +05:30
Michael Woerister
e72e4dfc74 debuginfo: Improve GDB version handling in compiletest tool 2014-08-27 15:19:14 +02:00
Michael Woerister
849ae5d881 debuginfo: Emit different autotest debugger scripts depending on GDB version. 2014-08-27 15:19:14 +02:00
Michael Woerister
6974b4f1b5 debuginfo: Add GDB pretty printers for structs and enums. 2014-08-27 15:19:14 +02:00
Michael Woerister
ee25b6bdeb debuginfo: Allow to activate GDB pretty printers in autotests. 2014-08-27 15:19:14 +02:00
bors
9669c6dc1a auto merge of #16752 : MatejLach/rust/more_cargorun, r=steveklabnik
Use cargo run as much as possible...
2014-08-27 11:16:12 +00:00
bors
c73ab0c10b auto merge of #16751 : luqmana/rust/tr, r=alexcrichton
Fixes #15562.
2014-08-27 09:31:14 +00:00
bors
d860a667e7 auto merge of #16724 : tshepang/rust/misleading, r=brson
We have to specify the module and the function name in the example where
the module shares a crate with the executable as well, so remove the
redundant (and potentially confusing) mention.
2014-08-27 07:46:17 +00:00
bors
5550edef46 auto merge of #16689 : wickerwaka/rust/crate-as, r=pcwalton
For review. Not sure about the link_attrs stuff. Will work on converting all the tests.

extern crate "foobar" as foo;
extern crate foobar as foo;

Implements remaining part of RFC #47.
Addresses issue #16461.

Removed link_attrs from rust.md, they don't appear to be supported by
the parser.
2014-08-27 06:01:18 +00:00
mdinger
48a2876c2c Fix sorting order. Change sync to share 2014-08-27 00:26:50 -04:00
bors
566b470e13 auto merge of #16685 : alexcrichton/rust/remove-glob, r=brson
This library has been moved out to a cargo package in rust-lang.
2014-08-27 02:31:20 +00:00
SiegeLord
0db6f4cb57 Add a simple test for rustdoc search index contents 2014-08-26 22:03:39 -04:00
Alex Crichton
118f481dbf glob: Deprecate the library in favor of cargo
This library has been moved out to a cargo package in rust-lang.
2014-08-26 17:54:58 -07:00
Robert Gawdzik ☢
c09c038e11 Added a note for usage of abs with ::MIN. 2014-08-26 20:45:02 -04:00
bors
e61ec99af2 auto merge of #16704 : flugsio/rust/fix-rustc-ice-lint-underscores-only, r=brson
Fix for type identifiers with only underscores (two or more), I assume they doesn't count as camel case.

```rust
type __ = int;

fn main() {
}
```

```
error: internal compiler error: unexpected failure
note: the compiler hit an unexpected failure path. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
task 'rustc' failed at 'index out of bounds: the len is 0 but the index is 0', /home/rustbuild/src/rust-buildbot/slave/nightly-linux/build/src/librustc/lib.rs:1

stack backtrace:
   1: 0xb603f5d0 - rt::backtrace:👿:write::ha55f265f6626471dmxr
   2: 0xb6042620 - failure::on_fail::h4d2c6d42b67e94803Sr
   3: 0xb640a180 - unwind::begin_unwind_inner::h484879fa7cc3611fZhe
   4: 0xb6409e50 - unwind::begin_unwind_fmt::hd14e5c64bc9006capfe
   5: 0xb6409df0 - rust_begin_unwind
   6: 0xb6454580 - failure::begin_unwind::h9ab1fc5753bd08f3YDk
   7: 0xb6458cb0 - failure::fail_bounds_check::h88167bad36865909aCk
   8: 0xb6f685d0 - lint::builtin::NonCamelCaseTypes.LintPass::check_item::check_case::he854eeffd105cb0f40E
   9: 0xb6f68050 - lint::builtin::NonCamelCaseTypes.LintPass::check_item::hc35b45d248e41cd43XE
  10: 0xb6f7b760 - lint::context::Context<'a>.Visitor<(*>::visit_item::closure.139262
  11: 0xb6f79510 - lint::context::Context<'a>::with_lint_attrs::hb9efe321fa321ce6spG
  12: 0xb6f81d30 - lint::context::Context<'a>.Visitor<(*>::visit_mod::he4593c831936b308ZMG
  13: 0xb6f8f2f0 - lint::context::check_crate::closure.139319
  14: 0xb6f79510 - lint::context::Context<'a>::with_lint_attrs::hb9efe321fa321ce6spG
  15: 0xb6efda70 - lint::context::check_crate::ha9e64328726b9579q1G
  16: 0xb6efda20 - driver::driver::phase_3_run_analysis_passes::closure.136263
  17: 0xb659d640 - util::common::time::h2837683151147173214
  18: 0xb6e7d130 - driver::driver::phase_3_run_analysis_passes::h7079eff53afc4de3Jfz
  19: 0xb6e783f0 - driver::driver::compile_input::h0ec84a550e24779cP1y
  20: 0xb6f26250 - driver::run_compiler::h7e7c01ecbfd0ad87JzC
  21: 0xb6f26150 - driver::main_args::closure.137215
  22: 0xb6f380d0 - task::TaskBuilder<S>::try_future::closure.138376
  23: 0xb6f37ec0 - task::TaskBuilder<S>::spawn_internal::closure.138353
  24: 0xb774bdd0 - task::spawn_opts::closure.8325
  25: 0xb6409c10 - unwind::try::try_fn::h91f00772748cf73eD8d
  26: 0xb6468ae0 - rust_try_inner
  27: 0xb6468aa0 - rust_try
  28: 0xb6407880 - unwind::try::h78a4fc0e85c326aef6d
  29: 0xb6407640 - task::Task::run::hb6f2d9484116e3d8xcd
  30: 0xb774bba0 - task::spawn_opts::closure.8271
  31: 0xb6409350 - thread::thread_start::h8c02fef9f651da5cjBd
  32: 0xb5ed3fc0 - start_thread
  33: 0xb62e8a32 - __clone
  34:        0x0 - <unknown>
```
2014-08-27 00:31:25 +00:00
Christoph Burgdorf
7fb3aa5eea add missing ! char to feature gate hint 2014-08-26 22:44:53 +02:00
nham
7b31058873 libcollections: In tests, remove some uses of deprecated methods and
unused imports.
2014-08-26 16:11:40 -04:00
SiegeLord
bcb07175ce Always insert methods into the search index, even if we're currently in a private module.
Previously, this caused methods of re-exported types to not be inserted into
the search index. This fix may introduce some false positives, but in my
testing they appear as orphaned methods and end up not being inserted into the
final search index at a later stage.

Fixes issue #11943
2014-08-26 14:41:25 -04:00
Matej Lach
7bfcace03b Use cargo run in more places 2014-08-26 19:40:11 +01:00
Kevin Mehall
ef13555ad1 rustdoc: Don't assume that a doc attribute was sugared: Fixes #15976
As of 8876ce44, `is_sugared_doc` is encoded in metadata, so there is no
need to assume that doc attributes came from sugared comments.
2014-08-26 09:39:26 -07:00
bors
80b45ddbd3 auto merge of #16742 : vhbit/rust/ios-ffi-fix, r=alexcrichton 2014-08-26 15:56:08 +00:00
Robert Clipsham
c56aa8bfcc Clarify what tx and rx mean
Add a short explanation of what tx and rx mean in terms of channels.
2014-08-26 15:39:22 +01:00
bors
3ae1059632 auto merge of #16720 : tshepang/rust/trailing-prompt, r=alexcrichton
because eyesore
2014-08-26 14:11:08 +00:00
bors
7932b719ec auto merge of #14397 : nick29581/rust/coerce, r=pnkfelix
DST coercions and DST fields in structs

The commits are not quite stand alone, I should probably squash them together before landing. In particular if you review the individual commits, then you'll see some scrappy stuff that gets fixed in later commits. But reading the commits in order might be easier to get an overall idea of what is going on.

The first commit includes putting back time zone into our time library - @pcwalton removed that as part of his de-~str'ing, but I had already converted it to use StrBuf, so we may as well leave it in. Update: no longer, this is removed in a later commit.
2014-08-26 10:31:06 +00:00
bors
1cad4089ba auto merge of #16753 : luqmana/rust/typer-ty, r=nikomatsakis
We shouldn't be making calls directly to `ty::node_id_to_type` since the typer may be bcx which also has to monomorphize the type.

Fixes #16643.
2014-08-26 04:41:10 +00:00
Nick Cameron
08364a4cac Optimise a particularly clown shoes example of DST codegen 2014-08-26 16:07:33 +12:00
Nick Cameron
52ef46251e Rebasing changes 2014-08-26 16:07:32 +12:00
Nick Cameron
3e626375d8 DST coercions and DST structs
[breaking-change]

1. The internal layout for traits has changed from (vtable, data) to (data, vtable). If you were relying on this in unsafe transmutes, you might get some very weird and apparently unrelated errors. You should not be doing this! Prefer not to do this at all, but if you must, you should use raw::TraitObject rather than hardcoding rustc's internal representation into your code.

2. The minimal type of reference-to-vec-literals (e.g., `&[1, 2, 3]`) is now a fixed size vec (e.g., `&[int, ..3]`) where it used to be an unsized vec (e.g., `&[int]`). If you want the unszied type, you must explicitly give the type (e.g., `let x: &[_] = &[1, 2, 3]`). Note in particular where multiple blocks must have the same type (e.g., if and else clauses, vec elements), the compiler will not coerce to the unsized type without a hint. E.g., `[&[1], &[1, 2]]` used to be a valid expression of type '[&[int]]'. It no longer type checks since the first element now has type `&[int, ..1]` and the second has type &[int, ..2]` which are incompatible.

3. The type of blocks (including functions) must be coercible to the expected type (used to be a subtype). Mostly this makes things more flexible and not less (in particular, in the case of coercing function bodies to the return type). However, in some rare cases, this is less flexible. TBH, I'm not exactly sure of the exact effects. I think the change causes us to resolve inferred type variables slightly earlier which might make us slightly more restrictive. Possibly it only affects blocks with unreachable code. E.g., `if ... { fail!(); "Hello" }` used to type check, it no longer does. The fix is to add a semicolon after the string.
2014-08-26 12:38:51 +12:00
Nick Cameron
37a94b80f2 Use temp vars for implicit coercion to ^[T] 2014-08-26 12:37:45 +12:00
Nick Cameron
34d607f9c9 Use the slice repr for ~[T] 2014-08-26 12:37:45 +12:00
Luqman Aden
2ab4486cbb Add test. 2014-08-25 13:37:40 -07:00
Luqman Aden
1660c3be93 librustc: Use Typer's node_ty method instead of free function in ExprUseVisitor. 2014-08-25 13:30:49 -07:00
Luqman Aden
395ef8ba1c Add tests to make sure intrinsicck doesn't apply to non-intrinsic fn's. 2014-08-25 12:48:35 -07:00
Luqman Aden
6ad0346f0b librustc: Restrict transmute intrinsicck to just rust-intrinsic fn's. 2014-08-25 12:48:35 -07:00
Simon Sapin
666d566eec Replace mention of ~T by Box<T> in the FFI guide. 2014-08-25 20:14:36 +01:00
bors
5fb2dfaa20 auto merge of #16740 : alexcrichton/rust/issue-16725, r=pcwalton
Closes #16725
2014-08-25 12:10:56 +00:00
Alex Crichton
1c76d559c3 rustc: Encode the visibility of foreign items
The privacy pass of the compiler was previously not taking into account the
privacy of foreign items, or bindings to external functions. This commit fixes
this oversight by encoding the visibility of foreign items into the metadata for
each crate.

Any code relying on this will start to fail to  compile and the bindings must be
marked with `pub` to indicate that they can be used externally.

Closes #16725
[breaking-change]
2014-08-25 05:01:51 -07:00
Valerii Hiora
ff7b58f98c Adopting FFI changes for iOS 2014-08-25 14:31:53 +03:00
bors
0b3e43d2a4 auto merge of #16699 : treeman/rust/issue-8492, r=alexcrichton
Closes #8492.

I did not find this suggestion in the [guidelines][] but it's mentioned in the [old style guide][].

[guidelines]: https://github.com/rust-lang/rust-guidelines
[old style guide]: 73c864a10a
2014-08-25 03:30:54 +00:00
bors
83804f9085 auto merge of #15704 : alexcrichton/rust/issue-15595, r=brson
If a task is spinning in an accept loop, there is currently no method of gracefully shutting it down. This PR introduces a way to do so by cloning the acceptor and implementing a close_accept method to unblocking any pending acceptor.

As with other I/O methods like this, it is `#[experimental]` from the start and sadly carries with it a good deal of code to support it. Much of the complication is from the fact that you can now concurrently accept on the same socket.

I tried to add a good deal of tests for this change, but another set of eyes is always appreciated!
2014-08-25 01:45:57 +00:00
Alex Crichton
fd763a5b1e native: clone/close_accept for win32 pipes
This commits takes a similar strategy to the previous commit to implement
close_accept and clone for the native win32 pipes implementation.

Closes #15595
2014-08-24 17:08:14 -07:00
Alex Crichton
c301db20a4 native: Add some documentation for accept
Document the new code for how close_accept and timeouts are implemented.
2014-08-24 17:08:14 -07:00
Alex Crichton
7441d4f3f3 native: TCP close/close_accept for windows
This commit implements TcpAcceptor::{close, close_accept} for windows via
WSAEVENT types.
2014-08-24 17:08:14 -07:00
Alex Crichton
cb8df7a8e3 rustuv: Implement clone/close_accept
This commits implements {Tcp,Unix}Acceptor::{clone,close_accept} methods for
all of librustuv.

This implementation rewrites much of Access, AccessTimeout, and AcceptTimeout to
have type parameter for shared state that all acceptors share (a shared queue of
sockets). The incoming/outgoing channels have been removed as all timeouts and
such are now managed on the event loop rather than concurrently.
2014-08-24 17:08:14 -07:00
Alex Crichton
110168de2a native: Implement clone/close_accept for unix
This commits implements {Tcp,Unix}Acceptor::{clone,close_accept} methods for
unix. A windows implementation is coming in a later commit.

The clone implementation is based on atomic reference counting (as with all
other clones), and the close_accept implementation is based on selecting on a
self-pipe which signals that a close has been seen.
2014-08-24 17:08:14 -07:00