Commit Graph

1430 Commits

Author SHA1 Message Date
Björn Steinbrink 1720d9f663 Remove a bunch of unnecessary allocations and copies 2013-05-30 11:49:04 +02:00
Patrick Walton 206ab89629 librustc: Stop reexporting the standard modules from prelude. 2013-05-29 19:04:53 -07:00
Patrick Walton 4e3d4b36dc libsyntax: Stop parsing mutable fields 2013-05-29 19:04:51 -07:00
Patrick Walton 481d4ca43f libsyntax: Make drop no longer a keyword 2013-05-29 19:04:50 -07:00
Niko Matsakis 5851d3242c Move checking for moves and initialization of local variables and patterns into
borrow checker and generalize what moves are allowed. Fixes a nasty
bug or two in the pattern move checking code. Unifies dataflow code
used for initialization and other things. First step towards
once fns. Everybody wins.

Fixes #4384. Fixes #4715. cc once fns (#2202), optimizing local moves (#5016).
2013-05-28 20:22:14 -04:00
Alex Crichton ae7df57c5a Prevent refcount cycles during linting
Shaves off ~600MB of memory while compiling rustc
2013-05-27 22:22:09 -05:00
Seo Sanghyeon 8f80323f09 Remove unnecessary allocations flagged by lint 2013-05-28 03:14:44 +09:00
bors e2f8b51dc5 auto merge of #6722 : alexcrichton/rust/issue-4219-no-merge-hack, r=brson
Changes the int/uint modules to all use macros instead of using the `merge` attribute. It would be nice to have #4375 resolved as well for this, but that can probably come at a later date.

Closes #4219.
2013-05-25 15:13:54 -07:00
Björn Steinbrink 6c62d77830 Use an enum for keywords and intern them to improve parser performance
Currently, keywords are stored in hashsets that are recreated for every
Parser instance, which is quite expensive since macro expansion creates
lots of them. Additionally, the parser functions that look for a keyword
currently accept a string and have a runtime check to validate that they
actually received a keyword.

By creating an enum for the keywords and inserting them into the
ident interner, we can avoid the creation of the hashsets and get static
checks for the keywords.

For libstd, this cuts the parse+expansion part from ~2.6s to ~1.6s.
2013-05-25 17:57:22 +02:00
Alex Crichton 03ae629259 Remove the #[merge] hack from the parser 2013-05-24 15:32:06 -05:00
bors b5ab1012f1 auto merge of #6680 : ben0x539/rust/slashslashslash, r=graydon
There's currently a function in the lexer that rejects a line comment that is all slashes from being a doc comment. I think the intention was that you could draw boxes,

    /////////////
    // like so //
    /////////////

Since a line doc comment split up over multiple paragraphs will have a "blank" line that is just /// between the paragraphs, that would get mistaken for a box segment, lexed as a regular comment, and go missing from the sequence of doc comment attributes before they were reassembled by rustdoc into markdown input.

I figure the best plan here is to just declare that a comment that is exactly `///` is a doc comment after all, and to only omit comments with four slashes or more, which is what this commit implements. Can't really draw boxes that narrow, anyway.
2013-05-24 05:34:45 -07:00
Erick Tryzelaar a4df35f2bc cleanup warnings from libsyntax 2013-05-23 17:57:07 -07:00
Erick Tryzelaar 1965d72957 core: remove iter_bytes helper functions 2013-05-23 17:48:16 -07:00
Patrick Walton 3a66d732bb libsyntax: Fix more merge fallout. 2013-05-22 21:57:11 -07:00
Patrick Walton 18df18c817 libstd: Fix merge fallout. 2013-05-22 21:57:11 -07:00
Patrick Walton c10e0cb9c9 syntax: Change syntax extensions to expand to std::foo instead of core::foo 2013-05-22 21:57:08 -07:00
Patrick Walton c532e033c9 librustc: Change std to extra throughout libsyntax and librustc 2013-05-22 21:57:08 -07:00
Patrick Walton f3723cf7c4 libextra: Rename the actual metadata names of libcore to libstd and libstd to libextra 2013-05-22 21:57:07 -07:00
bors f517ed0b08 auto merge of #6686 : cmr/rust/fix-6596, r=catamorphism
The error message is extremely unideal.
2013-05-22 16:22:35 -07:00
Corey Richardson 7ccc97e5b4 Fix ICE in macros 2013-05-22 19:18:50 -04:00
Benjamin Herr 5a42481366 declare that "///" is still a doc comment, just not "////+" (fixes #5838) 2013-05-22 15:53:26 +02:00
Jihyun Yu 6c33f5044b Fix #6342 2013-05-22 16:11:48 +09:00
bors 0252c30443 auto merge of #6658 : sanxiyn/rust/static-string-2, r=thestinger 2013-05-21 12:49:33 -07:00
Seo Sanghyeon 743e4b044c Use static strings 2013-05-22 02:48:56 +09:00
bors 64963d6cba auto merge of #6611 : huonw/rust/syntax-ext-no-dup, r=jbclements
Fixes https://github.com/mozilla/rust/issues/6578 by merging the 3 different ways to build an AST into a single `AstBuilder` trait, creating a more uniform and briefer interface.

Also, converts the `ext_ctxt` trait-object to be a plain struct, as well as renaming it to `ExtCtxt`.

Seems to make expansion slightly faster for the normal case (e.g. `libcore` and `libstd`), but slower for `librustc` (slightly) and `libsyntax` (0.3s -> 0.8s! I'm investigating this, but I'd prefer this patch to land relatively quickly.).

`git blame` suggests maybe @graydon or @erickt are familiar with this area of the code. r?
2013-05-21 10:43:17 -07:00
Seo Sanghyeon 6b525ecbda Take string slices 2013-05-22 02:32:29 +09:00
Huon Wilson a59bec43e3 syntax/ext: convert all AstBuilder methods to a uniform syntax. 2013-05-22 00:30:52 +10:00
Huon Wilson 6e50515530 syntax/ext: migrate build.rs functions to AstBuilder methods. 2013-05-22 00:15:36 +10:00
Huon Wilson 8c15a0ec4c syntax/ext: collect the ast building traits into a single trait. 2013-05-22 00:04:10 +10:00
Huon Wilson 4045da9f4f syntax/ext: modernise ext_ctxt to be CamelCase and use new. 2013-05-22 00:04:10 +10:00
Huon Wilson eea265ea16 syntax/ext: Remove the trait-object indirection of the ext_ctxt object. 2013-05-22 00:02:37 +10:00
Huon Wilson 8e9eba8013 syntax/ext: remove the ~str dependence of the deriving code. 2013-05-21 23:33:58 +10:00
Seo Sanghyeon 9390cdaa8b Correct span for expr_vec 2013-05-21 19:08:34 +09:00
Alex Crichton 82fa0018c8 Remove all unnecessary allocations (as flagged by lint) 2013-05-20 16:10:40 -05:00
Alex Crichton 074799b4c5 Implement a lint mode to detect unnecessary allocations 2013-05-20 16:08:50 -05:00
John Clements 999f692645 getting rid of interner_key! macro 2013-05-20 11:49:21 -07:00
John Clements fc4f304ef9 hygiene infrastructure.
- added a hash table to memoize rename and mark operations.
- added rename, mark, and resolve fold fns
2013-05-20 11:49:21 -07:00
John Clements b621820dc4 detect unused attrs in one more place, allow parsing to continue for all
changed a bunch of fatal()'s into err()'s, to allow parsing to proceed.
2013-05-20 11:49:20 -07:00
John Clements 05ab83eea8 parser comment 2013-05-20 11:49:20 -07:00
John Clements 975f264983 refactoring test functions 2013-05-20 11:49:20 -07:00
bors 2e6cda254a auto merge of #6635 : brson/rust/snapshot, r=brson 2013-05-20 02:46:36 -07:00
Brian Anderson 66319b0278 Register snapshots 2013-05-19 23:34:32 -07:00
Steve Klabnik d3f70b141a Fix many warnings. 2013-05-19 21:32:32 -07:00
Corey Richardson cc57ca012a Use assert_eq! rather than assert! where possible 2013-05-19 08:16:02 -04:00
bors 99c7750ca6 auto merge of #6603 : thestinger/rust/whitespace, r=thestinger 2013-05-18 22:55:34 -07:00
Daniel Micay 20ef4238bb reduce the usage of explicit version markers 2013-05-19 00:21:41 -04:00
Daniel Micay 1789174541 minor automated whitespace fixes 2013-05-18 22:40:12 -04:00
Marvin Löbel 7a2afb7288 Made bytes!() accept a list of string, integer or char literals 2013-05-18 00:26:04 +02:00
Alex Crichton 030c666cc1 Re-implement lint with less emphasis on item ids
This way it's much easier to add lints throughout compilation correctly, and
functions on impls can alter the way lints are emitted.
2013-05-17 00:49:16 -04:00
Niko Matsakis 035c01af93 Add BuiltinBounds to closure type: parse and handle subtyping,
but do not integrate with kindck etc (requires a snapshot first)
2013-05-16 14:21:02 -04:00