Commit Graph

37502 Commits

Author SHA1 Message Date
bors
4e4e8cff16 Auto merge of #21452 - bleibig:bison-grammar, r=nikomatsakis
This adds a new lexer/parser combo for the entire Rust language can be generated with with flex and bison, taken from my project at https://github.com/bleibig/rust-grammar. There is also a testing script that runs the generated parser with all *.rs files in the repository (except for tests in compile-fail or ones that marked as "ignore-test" or "ignore-lexer-test"). If you have flex and bison installed, you can run these tests using the new "check-grammar" make target.

This does not depend on or interact with the existing testing code in the grammar, which only provides and tests a lexer specification.

OS X users should take note that the version of bison that comes with the Xcode toolchain (2.3) is too old to work with this grammar, they need to download and install version 3.0 or later.

The parser builds up an S-expression-based AST, which can be displayed by giving the "-v" argument to parser-lalr (normally it only gives output on error). It is only a rough approximation of what is parsed and doesn't capture every detail and nuance of the program.

Hopefully this should be sufficient for issue #2234, or at least a good starting point.
2015-01-24 22:14:14 +00:00
bors
bb7cc4eb26 Auto merge of #21488 - aturon:os-str, r=alexcrichton
Per [RFC 517](https://github.com/rust-lang/rfcs/pull/575/), this commit introduces platform-native strings. The API is essentially as described in the RFC.

The WTF-8 implementation is adapted from @SimonSapin's [implementation](https://github.com/SimonSapin/rust-wtf8). To make this work, some encodign and decoding functionality in `libcore` is now exported in a "raw" fashion reusable for WTF-8. These exports are *not* reexported in `std`, nor are they stable.
2015-01-24 19:39:52 +00:00
Aaron Turon
c5369ebc7f Add ffi::OsString and OsStr
Per [RFC 517](https://github.com/rust-lang/rfcs/pull/575/), this commit
introduces platform-native strings. The API is essentially as described
in the RFC.

The WTF-8 implementation is adapted from @SimonSapin's
[implementation](https://github.com/SimonSapin/rust-wtf8). To make this
work, some encodign and decoding functionality in `libcore` is now
exported in a "raw" fashion reusable for WTF-8. These exports are *not*
reexported in `std`, nor are they stable.
2015-01-24 10:21:30 -08:00
bors
76fbb35831 Auto merge of #21079 - huonw:chained-cmp-tweaks, r=pnkfelix
First commit is mindless groundwork for the second one, to make the spans (arguably) nicer.

### before

```
require-parens-for-chained-comparison.rs:14:20: 14:22 error: Chained comparison operators require parentheses
require-parens-for-chained-comparison.rs:14     false == false == false;
                                                               ^~
require-parens-for-chained-comparison.rs:17:16: 17:17 error: Chained comparison operators require parentheses
require-parens-for-chained-comparison.rs:17     false == 0 < 2;
                                                           ^
require-parens-for-chained-comparison.rs:20:8: 20:9 error: Chained comparison operators require parentheses
require-parens-for-chained-comparison.rs:20     f<X>();
                                                   ^
require-parens-for-chained-comparison.rs:20:8: 20:9 help: Use ::< instead of < if you meant to specify type arguments.
require-parens-for-chained-comparison.rs:20     f<X>();
                                                   ^
```

### after

```
require-parens-for-chained-comparison.rs:14:11: 14:22 error: chained comparison operators require parentheses
require-parens-for-chained-comparison.rs:14     false == false == false;
                                                      ^~~~~~~~~~~
require-parens-for-chained-comparison.rs:17:11: 17:17 error: chained comparison operators require parentheses
require-parens-for-chained-comparison.rs:17     false == 0 < 2;
                                                      ^~~~~~
require-parens-for-chained-comparison.rs:20:6: 20:9 error: chained comparison operators require parentheses
require-parens-for-chained-comparison.rs:20     f<X>();
                                                 ^~~
require-parens-for-chained-comparison.rs:20:6: 20:9 help: use `::<...>` instead of `<...>` if you meant to specify type arguments
require-parens-for-chained-comparison.rs:20     f<X>();
                                                 ^~~
```
2015-01-24 17:07:43 +00:00
Huon Wilson
ec790d6fcc Tweak chained comparison errors.
Lower case and give a more precise span: from operator to operator, not
just the last one.
2015-01-25 00:35:06 +11:00
Huon Wilson
2e888d0341 Add the span of the operator itself to ast::BinOp. 2015-01-25 00:33:50 +11:00
bors
0430a43d63 Auto merge of #21542 - vadimcn:fix-exported-macro-paths, r=alexcrichton
... so that `super::foo` gets serialized as `super:: foo`, rather than `super :: foo`.
2015-01-24 13:04:39 +00:00
bors
796d00948a Auto merge of #21537 - tbu-:pr_coretest_fmt, r=alexcrichton
r? @alexcrichton 

Part of #20792 that wasn't done in your commit.
2015-01-24 07:45:55 +00:00
bors
e5c1f166a8 Auto merge of #21458 - alexcrichton:remove-some-code, r=brson
The base64 support can be trivially removed (there are no in-tree users) and the regex support is a whopping 4k lines of code to maintain for a few non-critical uses in-tree. This commit migrates all current users in-tree away from regexes to custom matching code.

The most critical application affected by this migration is that the testing framework no longer considers filter arguments as regexes, but rather just a substring matching. It is expected that more featureful testing frameworks can evolve outside of the in-tree libtest version over time which can properly depend on libregex from crates.io.

[breaking-change]
2015-01-24 05:12:15 +00:00
Alex Crichton
6c29708bf9 regex: Remove in-tree version
The regex library was largely used for non-critical aspects of the compiler and
various external tooling. The library at this point is duplicated with its
out-of-tree counterpart and as such imposes a bit of a maintenance overhead as
well as compile time hit for the compiler itself.

The last major user of the regex library is the libtest library, using regexes
for filters when running tests. This removal means that the filtering has gone
back to substring matching rather than using regexes.
2015-01-23 21:04:10 -08:00
Alex Crichton
494896f2dd serialize: Remove base64 support
This is not used in-tree and is available out-of-tree
2015-01-23 21:03:54 -08:00
Vadim Chugunov
f09c680b4c Fix tidy. 2015-01-23 18:32:00 -08:00
bors
4be79d6acd Auto merge of #21503 - ahmedcharles:remove-test-features, r=alexcrichton
I think this is all of the remaining code to be removed. Let me know if I've missed anything.

Closes #19145
2015-01-23 16:08:14 +00:00
bors
86fbdbfbcd Auto merge of #21453 - Stebalien:exactsize, r=alexcrichton
Specifically:
 * Peekable
 * ByRef
 * Skip
 * Take
 * Fuse

Fixes  #20547
2015-01-23 12:02:27 +00:00
Tobias Bucher
d909dad066 Clean up isize, usize. Don't bench allocation but formatting. 2015-01-23 12:35:52 +01:00
bors
aedcbb9d82 Auto merge of #21382 - tshepang:improve-iter-docs, r=alexcrichton 2015-01-23 09:26:34 +00:00
Vadim Chugunov
5c344d3ea8 Added test. 2015-01-22 23:05:02 -08:00
bors
e9285f9e81 Auto merge of #21374 - dgrunwald:range-notation-fixes, r=nikomatsakis
This PR is intended as alternative to #20958. It fixes the same grammar inconsistencies, but does not increase the operator precedence of `..`, leaving it at the same level as the assignment operator.
For previous discussion, see #20811 and #20958.

Grammar changes:
* allow `for _ in 1..i {}` (fixes #20241)
* allow `for _ in 1.. {}` as infinite loop
* prevent use of range notation in contexts where only operators of high precedence are expected (fixes #20811)

Parser code cleanup:
* remove `RESTRICTION_NO_DOTS`
* make `AS_PREC` const and follow naming convention
* make `min_prec` inclusive

r? nikomatsakis
2015-01-23 06:53:09 +00:00
bors
d8d5e4d217 Auto merge of #20221 - liigo:rustdoc-sidebar-tooltips-v3, r=alexcrichton
This pull request add tooltips to most links of sidebar.
The tooltips display "summary line" of items' document.

Some lengthy/annoying raw markdown code are eliminated, such as links and headers.
- `[Rust](http://rust-lang.org)` displays as `Rust` (no URLs)
- `# header` displays as `header` (no `#`s)

Some inline spans, e.g. ``` `code` ``` and ```*emphasis*```, are kept as they are, for better readable.

I've make sure `&` `'` `"` `<` and `>` are properly displayed in tooltips, for example, `&'a Option<T>`.

Online preview: http://liigo.com/tmp/tooltips/std/index.html

@alexcrichton @steveklabnik since you have reviewed my previous ([v1](https://github.com/rust-lang/rust/pull/13014),[v2](https://github.com/rust-lang/rust/pull/16448)) PRs of this serise, which have been closed for technical reasons. Thank you.
2015-01-23 02:53:50 +00:00
Vadim Chugunov
27a261be3e Suppress space after idents with "ModName" style in serialization of exported macros.
Fixes issue #20701
2015-01-22 17:45:43 -08:00
bors
4874ca36f6 Auto merge of #21530 - steveklabnik:rollup, r=steveklabnik
- Successful merges: #21056, #21091, #21217, #21325, #21373, #21450, #21471, #21472, #21477, #21479, #21484, #21496, #21500, #21516, #21517
- Failed merges:
2015-01-23 00:18:57 +00:00
Tshepang Lekhonkhobe
9091e047e3 iter: miscellaneous improvements
There are doc improvements as well as these conversions:

- int/uint -> isize/usize
- u/i -> us/is
2015-01-23 01:40:18 +02:00
Steve Klabnik
9fb672b094 Rollup merge of #21517 - SeanTAllen:master, r=steveklabnik
Lifetime elision documentation was reference a previously existing function
that doesn't exist. After talking with Steve Klabnik, I confirmed the correct
function to be referenced and updated documentation accordingly.
2015-01-22 18:10:01 -05:00
Steve Klabnik
b994a3ecfe Rollup merge of #21516 - steveklabnik:document_box, r=alexcrichton 2015-01-22 18:10:00 -05:00
Steve Klabnik
bb80310070 Rollup merge of #21500 - richo:power-fixups, r=alexcrichton
When I wrote this code, my janky shim to verify the constants didn't
work as intended.

This fixes everything I've run into since merge, which is hopefully
everything.
2015-01-22 18:10:00 -05:00
Steve Klabnik
dc27d29297 Rollup merge of #21496 - ColonelJ:paatch, r=alexcrichton
Make compiletest set an environment variable so that on Windows 32-bit test executables containing certain substrings (e.g. 'install', 'setup', 'update', 'patch') are not blocked by UAC's Installer Detection Technology.
2015-01-22 18:10:00 -05:00
Steve Klabnik
acd044c255 Rollup merge of #21484 - steveklabnik:connect_docs, r=alexcrichton 2015-01-22 18:10:00 -05:00
Steve Klabnik
aa874abc0d Rollup merge of #21479 - steveklabnik:rustdoc_to_book, r=alexcrichton
Fixes #21430
2015-01-22 18:09:59 -05:00
Steve Klabnik
22ed381ada Rollup merge of #21477 - steveklabnik:gh21440, r=alexcrichton
Fixes #21440"
2015-01-22 18:09:59 -05:00
Steve Klabnik
0b793ea619 Rollup merge of #21472 - steveklabnik:gh21469, r=huonw
Fixes #21469.
2015-01-22 18:09:59 -05:00
Steve Klabnik
07fb31a099 Rollup merge of #21471 - michaelwoerister:associated-types, r=alexcrichton
This should fix issue #20797 (but I don't want to close it automatically).
As the actual fix is very small this would be a perfect candidate for a rollup.
2015-01-22 18:09:59 -05:00
Steve Klabnik
1644978616 Rollup merge of #21450 - alfie:book2, r=steveklabnik
Compiling won't produce an executable just yet because (as stated in the next
paragraph) there are errors. By removing this sentance, the reader won't get
confused when they expect a successful compile i.e. if they don't read ahead one
paragraph, they are going to be checking their code and wondering why it's not
compiling.
2015-01-22 18:09:58 -05:00
Steve Klabnik
5f71c22d87 Rollup merge of #21373 - angst7:pointer_doc_1, r=steveklabnik
Updated incorrect error messages, and removed explicit return statements from example code.
2015-01-22 18:09:58 -05:00
Steve Klabnik
3364d41282 Rollup merge of #21325 - nagisa:thread-panicking, r=steveklabnik
Previous wording wasn’t clear about its actual behaviour. It could be
interpreted as answering either:

* Can current thread panic?
* Is current thread unwinding because of panic?

r? @steveklabnik
2015-01-22 18:09:58 -05:00
Steve Klabnik
4db64bd824 Rollup merge of #21217 - Gankro:docadoca, r=steveklabnik
Not sure on what *exactly* should be said here, but I think this is the most important bit. This PR also establishes conventions for describing performance minimally.

I suggest to describe preformance for individual methods we use a `# Performance` heading. Not sure if we should have 

```
# Performance: O(1)
details details
```
or

```
# Performance:
O(1)
details details
```

Since I think most methods don't need discussion, the former seems more resonable. But it's kind of weird to have info "in" the heading.

r? @steveklabnik
2015-01-22 18:09:58 -05:00
Steve Klabnik
c76ce8c36c Rollup merge of #21091 - steveklabnik:add_attribute_docs, r=huonw
Fixes #6444

I need some help with the macro docs here, as I couldn't figure it out. @kmcallister @eddyb  or someone else?
2015-01-22 18:09:57 -05:00
Steve Klabnik
d1c7ae476b Rollup merge of #21056 - steveklabnik:return_strings, r=sfackler
When we moved over to the book, we lost this.
2015-01-22 18:09:57 -05:00
Steve Klabnik
4a6af11c34 Document remaining attributes and macros
Fixes #6444
2015-01-22 18:05:15 -05:00
Steve Klabnik
5a3bdedd77 Beef up docs for Box<T> 2015-01-22 17:30:23 -05:00
Daniel Grunwald
db013f9f45 Fix some grammar inconsistencies for the '..' range notation.
Grammar changes:
* allow 'for _ in 1..i {}' (fixes #20241)
* allow 'for _ in 1.. {}' as infinite loop
* prevent use of range notation in contexts where only operators of high
  precedence are expected (fixes #20811)

Parser code cleanup:
* remove RESTRICTION_NO_DOTS
* make AS_PREC const and follow naming convention
* make min_prec inclusive
2015-01-22 19:55:15 +01:00
Steve Klabnik
cef82952b2 Return the String guide to its former glory.
When we moved over to the book, we lost this.
2015-01-22 13:33:44 -05:00
Sean T Allen
42cbd7a9bd Reference correct fn during lifetime ellision 2015-01-22 13:17:23 -05:00
bors
8160fc4786 Auto merge of #21078 - js-ojus:master, r=steveklabnik
* Include an illustration of a function that accepts two closures.
2015-01-22 16:50:17 +00:00
bors
b7930d93d9 Auto merge of #21187 - oli-obk:feature/hint_struct_field_access, r=alexcrichton
rebase and fix of #19267
2015-01-22 12:09:02 +00:00
Ahmed Charles
cb020db55a Remove remaining stats and boxplot code. 2015-01-22 00:58:50 -08:00
Ahmed Charles
989fbfde39 Make fmt_metrics() part of the impl. 2015-01-22 00:56:10 -08:00
Ahmed Charles
8a6a129aec Remove save() and load(). 2015-01-22 00:56:10 -08:00
Ahmed Charles
27b3e14d7f Cleanup write_run_finish(). 2015-01-22 00:56:10 -08:00
Richo Healey
48aa068286 powerpc: Fix liblibc
When I wrote this code, my janky shim to verify the constants didn't
work as intended.

This fixes everything I've run into since merge, which is hopefully
everything.
2015-01-21 22:46:16 -08:00
bors
5d2056a7e3 Auto merge of #21473 - alexcrichton:rollup, r=alexcrichton 2015-01-22 06:12:46 +00:00