Commit Graph

30650 Commits

Author SHA1 Message Date
Nick Cameron
b35d1a8368 Implement Index and IndexMut for Vec 2014-07-17 09:06:56 +12:00
bors
06c7ee9c56 auto merge of #15667 : treeman/rust/set-doc, r=alexcrichton
Example code for HashSet, similar to the [HashMap example](http://doc.rust-lang.org/std/collections/hashmap/struct.HashMap.html).
2014-07-16 18:56:18 +00:00
bors
175f113cba auto merge of #15573 : michaelwoerister/rust/lldb-tests-rebased-09-Jul, r=alexcrichton
This PR adds the LLDB autotests to the debuginfo test suite so I don't have to keep rebasing them locally. They are still disabled by default in `tests.mk`. One of the commits also contains a Python pretty printer which can make LLDB print values with Rust syntax. This was mainly added to deal with output format differences between LLDB versions but you can also use it for your normal LLDB debugging sessions.
```
// The following LLDB commands will load and activate the Rust printers
command script import ./src/etc/lldb_rust_formatters.py
type summary add --no-value --python-function lldb_rust_formatters.print_val -x .* --category Rust
type category enable Rust
```
Expect some rough edges with these, they have not been tested apart from there use in the autotests...
2014-07-16 17:16:20 +00:00
bors
316719e625 auto merge of #15476 : kballard/rust/more_vim_tweaks, r=chris
Tweak the text editing settings (softtabstop, textwidth, etc).

Add some settings to turn on folding and colorcolumn.

Add the undo_ftplugin changes that my previous patch forgot.
2014-07-16 15:36:21 +00:00
Jonas Hietala
80ef6b83ef Extend HashSet documentation.
Add main example and simple examples for the methods.
2014-07-16 17:26:57 +02:00
bors
058242141b auto merge of #15693 : steveklabnik/rust/guide_fix_cargo, r=cmr
Cargo now comes with Rust!
2014-07-16 12:06:15 +00:00
bors
efbbb51ec0 auto merge of #15691 : jbclements/rust/method-field-cleanup, r=alexcrichton
This patch applies the excellent suggestion of @pnkfelix to group the helper methods for method field access into a Trait, making the code much more readable, and much more similar to the way it was before.
2014-07-16 10:26:16 +00:00
Michael Woerister
3b336b20ce debuginfo: Make sure that only one LLDB test task is run at a time.
Some older versions of LLDB have problems with multiple instances running in parallel. This commit makes sure we don't do that.
2014-07-16 09:46:49 +02:00
Michael Woerister
c7f45a9458 debuginfo: Add LLDB autotests to debuginfo test suite.
This commit adds LLDB autotests to the test suite but does not activate them by default yet.
2014-07-16 09:46:31 +02:00
Michael Woerister
b56ef794a0 debuginfo: Remove atexit()-debugger shutdown from lldb_batchmode.py
The shutdown call would always result in an exception being printed to standard error.
2014-07-16 09:27:06 +02:00
Michael Woerister
ba287f6e31 debuginfo: Inject 'Rust-mode' LLDB prelude into debuginfo test scripts. 2014-07-16 09:27:06 +02:00
Michael Woerister
83fe455e3c debuginfo: Add python formatters that allow LLDB to print values with Rust syntax 2014-07-16 09:27:05 +02:00
bors
6c35d513ce auto merge of #15656 : nick29581/rust/index-bck, r=pnkfelix
Closes #15525

The important bit of this are the changes from line 445 in mem_categorization.rs. Most of the other changes are about adding an Implicit PointerKind, and this is only necessary for getting a decent error message :-s An alternative would have been to add an implciti/explicit flag to cat_deref, which could be mostly ignored and so would mean much fewer changes. However, the implicit state would only be valid if the PointerKind was BorrowedPtr, so it felt like it ought to be another kind of PointerKind. I still don't know which is the better design.
2014-07-16 04:31:12 +00:00
bors
c523d86552 auto merge of #15585 : bgamari/rust/subst-bug, r=pnkfelix
This branch has a fix for #15557 (a2bcef9) as well as a variety of patches I found useful while debugging this issue. These include adding `Show` impls to a variety of types, including the majority of `syntax::ast` and some of `middle::ty`.
2014-07-16 02:11:14 +00:00
bors
afbcbbc77f auto merge of #15695 : alexcrichton/rust/fix-snapshots, r=brson
This test seems to yield a different error message on cross compiles, so just
ignore it when cross compiling.
2014-07-16 00:31:15 +00:00
Ben Gamari
446f9373c0 Add test for crash in unsafe destructor check 2014-07-15 19:34:42 -04:00
Ben Gamari
d2c38aa6eb middle::typeck::collect: Add debug output for lifetimes 2014-07-15 19:34:42 -04:00
Ben Gamari
6867d91d20 middle::kind: Don't crash when checking safety of Drop
To verify that a type can satisfy Send
`check_struct_safe_for_destructor` attempts to construct a new `ty::t`
an empty substitution list.

Previously the function would verify that the function has no type
parameters before attempting this. Unfortunately this check would not
catch functions with only regions parameters. In this case, the type
would eventually find its way to the substition engine which would
attempt to perform a substitution on the region parameters. As the
constructed substitution list is empty, this would fail, leading to a
compiler crash.

We fix this by verifying that types have both no type and region
parameters.
2014-07-15 19:34:42 -04:00
Ben Gamari
c6c1a22c56 middle::subst: Better handling of parameter lookup failure 2014-07-15 19:34:41 -04:00
Ben Gamari
741bb1a57e typeck::check::_match: Better error handling
Previously this was an Option::unwrap() which failed for me.
Unfortunately I've since inadvertently worked around the bug and have
been unable to reproduce it. With this patch hopefully the next person
to encounter this will be in a slightly better position to debug it.
2014-07-15 19:34:41 -04:00
Ben Gamari
bdf5b6c3da middle: Derive Show impls
And change some uses of the `{:?}` format string to `{}`.
2014-07-15 18:54:47 -04:00
Ben Gamari
69ffcdcccf libsyntax::ast: Derive Show impls 2014-07-15 18:54:47 -04:00
bors
2692ae1ddd auto merge of #15619 : kwantam/rust/master, r=huonw
- `width()` computes the displayed width of a string, ignoring the width of control characters.
    - arguably we might do *something* else for control characters, but the question is, what?
    - users who want to do something else can iterate over chars()

- `graphemes()` returns a `Graphemes` struct, which implements an iterator over the grapheme clusters of a &str.
    - fully compliant with [UAX#29](http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries)
    - passes all [Unicode-supplied tests](http://www.unicode.org/reports/tr41/tr41-15.html#Tests29)

- added code to generate additionial categories in `unicode.py`
    - `Cn` aka `Not_Assigned`
    - categories necessary for grapheme cluster breaking

- tidied up the exports from libunicode
  - all exports are exposed through a module rather than directly at crate root.
  - std::prelude imports UnicodeChar and UnicodeStrSlice from std::char and std::str rather than directly from libunicode

closes #7043
2014-07-15 22:51:17 +00:00
John Clements
ca05828cb7 change to new trait style for method field refs
Per @pnkfelix 's suggestion, using a trait to make these
field accesses more readable (and vastly more similar
to the original code.

oops fix new ast_map fix
2014-07-15 14:46:32 -07:00
John Clements
154ca08388 use trait rather than fns
please note the snapshot-waiting unpleasantness. I'm
unable to use the traditional #[cfg(stage0)] mechanism
to swap the new style in for later compiler stages,
because macros invocations in method positions cause
the parser to choke before cfg can strip it out.

Parenthetical note: this problem wouldn't arise with
an interleaved parsing/expansion....
2014-07-15 14:33:14 -07:00
bors
de111e69a8 auto merge of #15615 : jakub-/rust/diagnostics, r=brson 2014-07-15 21:06:12 +00:00
Alex Crichton
d2a08e9011 test: Try to fix a failing snapshot test
This test seems to yield a different error message on cross compiles, so just
ignore it when cross compiling.
2014-07-15 14:00:37 -07:00
Steve Klabnik
167533972f Fix cargo install instructions
Cargo now comes with Rust
2014-07-15 16:26:22 -04:00
bors
b422373d86 auto merge of #15426 : aochagavia/rust/str, r=alexcrichton
* Deprecated `str::from_utf8_owned` in favor of `String::from_utf8`
* Deprecated `str::from_utf8_lossy` in favor of `String::from_utf8_lossy`
* Deprecated `str::from_utf16` in favor of `String::from_utf16`
* Deprecated `str::from_utf16_lossy` in favor of `String::from_utf16_lossy`
* Deprecated `str::from_chars` in favor of `String::from_chars`
* Deprecated `str::from_char` in favor of `String::from_char` and `.to_string()`
* Deprecated `str::from_byte` in favor of `String::from_byte`

[breaking-change]
2014-07-15 18:41:05 +00:00
Adolfo Ochagavía
584fbde5d1 Fix errors 2014-07-15 20:34:16 +02:00
Adolfo Ochagavía
c6b82c7566 Deprecate str::from_utf8_lossy
Use `String::from_utf8_lossy` instead

[breaking-change]
2014-07-15 19:55:21 +02:00
Adolfo Ochagavía
1900abdd9b Deprecate str::from_utf16_lossy
Use `String::from_utf16_lossy` instead.

[breaking-change]
2014-07-15 19:55:20 +02:00
Adolfo Ochagavía
6ac4fc7fc2 Deprecate str::from_utf16
Use `String::from_utf16` instead

[breaking-change]
2014-07-15 19:55:19 +02:00
Adolfo Ochagavía
173baac495 Deprecate str::from_byte
Replaced by `String::from_byte`

[breaking-change]
2014-07-15 19:55:19 +02:00
Adolfo Ochagavía
05baf9b10c Deprecate str::from_char
Use `String::from_char` or `.to_str` instead

[breaking-change]
2014-07-15 19:55:18 +02:00
Adolfo Ochagavía
20a6894830 Deprecate str::from_chars
Use `String::from_chars` instead

[breaking-change]
2014-07-15 19:55:18 +02:00
Adolfo Ochagavía
211f1caa29 Deprecate str::from_utf8_owned
Use `String::from_utf8` instead

[breaking-change]
2014-07-15 19:55:17 +02:00
bors
cd54321c08 auto merge of #15604 : mrmonday/rust/raw-socket-libc, r=alexcrichton
This pull request adds some necessary function definitions and types for doing low level networking with Rust.
2014-07-15 17:01:07 +00:00
bors
1704ebb798 auto merge of #15421 : catharsis/rust/doc-ffi-minor-fixes, r=alexcrichton
Signed-off-by: Anton Lofgren <alofgren@op5.com>
2014-07-15 14:26:11 +00:00
Robert Clipsham
e1fc3a6f44 Add low level support for polling with librustuv.
* Adds functions for using arbitrary sockets with libuv
 * Adds types and functions required to support this.
2014-07-15 15:17:03 +01:00
bors
d336c1a3d2 auto merge of #15371 : pnkfelix/rust/fsk-render-dataflow-on-dot, r=alexcrichton
Use one or more of the following `-Z` flag options to tell the
graphviz renderer to include the corresponding dataflow sets (after
the iterative constraint propagation reaches a fixed-point solution):

  * `-Z flowgraph-print-loans` : loans computed via middle::borrowck
  * `-Z flowgraph-print-moves` : moves computed via middle::borrowck::move_data
  * `-Z flowgraph-print-assigns` : assignments, via middle::borrowck::move_data
  * `-Z flowgraph-print-all` : all of the available sets are included.

Fix #15016.
2014-07-15 12:46:14 +00:00
Felix S. Klock II
e64f594f10 Extend --pretty flowgraph=ID to include dataflow results in output.
Use one or more of the following `-Z` flag options to tell the
graphviz renderer to include the corresponding dataflow sets (after
the iterative constraint propagation reaches a fixed-point solution):

  * `-Z flowgraph-print-loans` : loans computed via middle::borrowck
  * `-Z flowgraph-print-moves` : moves computed via middle::borrowck::move_data
  * `-Z flowgraph-print-assigns` : assignments, via middle::borrowck::move_data
  * `-Z flowgraph-print-all` : all of the available sets are included.

Fix #15016.

----

This also adds a module, `syntax::ast_map::blocks`, that captures a
common abstraction shared amongst code blocks and procedure-like
things.  As part of this, moved `ast_map.rs` to subdir
`ast_map/mod.rs`, to follow our directory layout conventions.

(incorporated review feedback from huon, acrichto.)
2014-07-15 12:26:56 +02:00
bors
b74562b0ae auto merge of #15534 : steveklabnik/rust/guide_stdin, r=brson 2014-07-15 07:36:17 +00:00
bors
5cef16e9b3 auto merge of #15531 : steveklabnik/rust/guide_looping, r=brson 2014-07-15 05:56:19 +00:00
bors
2eadfe42e5 auto merge of #15511 : brson/rust/extract-rustc-back, r=alexcrichton
This was my weekend project, to start breaking up rustc. It first pulls out LLVM into `rustc_llvm`, then parts of `rustc::back` and `rustc::util` to `rustc_back`. The immediate intent is just to reduce the size of rustc, to reduce memory pressure when building rustc, but this is also a good starting point for further refactoring.

The `rustc_back` crate is definitely misnamed (`rustc::back` was never a very cohesive module anyway) - it's mostly just somewhere to stuff parts of rustc that don't have many deps. Right now it's main dep is `syntax`; it has no dep on `rustc_llvm`.

Some next steps might be to split `rustc_back` into `rustc_util` (with no `syntax` dep), and `rustc_syntax_util` (with a syntax dep); move the rest of `rustc::util` into `rustc_syntax_util`; move all of `rustc::front` to a new crate, `rustc_front`. At that point the refactoring necessary to keep extracting crates will get harder.
2014-07-15 04:16:20 +00:00
bors
b1ae09e52a auto merge of #15434 : steveklabnik/rust/guide_match, r=brson 2014-07-15 01:21:22 +00:00
kwantam
cf432b8f8f add Graphemes iterator; tidy unicode exports
- Graphemes and GraphemeIndices structs implement iterators over
  grapheme clusters analogous to the Chars and CharOffsets for chars in
  a string. Iterator and DoubleEndedIterator are available for both.

- tidied up the exports for libunicode. crate root exports are now moved
  into more appropriate module locations:
  - UnicodeStrSlice, Words, Graphemes, GraphemeIndices are in str module
  - UnicodeChar exported from char instead of crate root
  - canonical_combining_class is exported from str rather than crate root

Since libunicode's exports have changed, programs that previously relied
on the old export locations will need to change their `use` statements
to reflect the new ones. See above for more information on where the new
exports live.

closes #7043
[breaking-change]
2014-07-14 19:53:46 -04:00
kwantam
c066a1ee9f add UnicodeStrSlice width() function 2014-07-14 19:53:46 -04:00
bors
b733592adb auto merge of #15227 : alexcrichton/rust/windows-unlink, r=brson
Currently when a read-only file has unlink() invoked on it on windows, the call
will fail. On unix, however, the call will succeed. In order to have a more
consistent behavior across platforms, this error is recognized on windows and
the file is changed to read-write before removal is attempted.
2014-07-14 23:36:23 +00:00
Alex Crichton
fe67d269a5 std: Make unlink() more consistent
Currently when a read-only file has unlink() invoked on it on windows, the call
will fail. On unix, however, the call will succeed. In order to have a more
consistent behavior across platforms, this error is recognized on windows and
the file is changed to read-write before removal is attempted.
2014-07-14 14:24:50 -07:00