summary refs log tree commit diff
path: root/src/libsyntax
AgeCommit message (Collapse)AuthorLines
2014-10-02rollup merge of #17666 : eddyb/take-garbage-outAlex Crichton-55/+4
Conflicts: src/libcollections/lib.rs src/libcore/lib.rs src/librustdoc/lib.rs src/librustrt/lib.rs src/libserialize/lib.rs src/libstd/lib.rs src/test/run-pass/issue-8898.rs
2014-10-02Revert "Use slice syntax instead of slice_to, etc."Aaron Turon-2/+2
This reverts commit 40b9f5ded50ac4ce8c9323921ec556ad611af6b7.
2014-10-02Revert "Put slicing syntax behind a feature gate."Aaron Turon-8/+1
This reverts commit 95cfc35607ccf5f02f02de56a35a9ef50fa23a82.
2014-10-02syntax: remove ObsoleteManaged{Type,Expr}.Eduard Burtescu-24/+0
2014-10-02syntax: mark the managed_boxes feature as Removed.Eduard Burtescu-1/+1
2014-10-02syntax: ast: remove TyBox and UnBox.Eduard Burtescu-31/+5
2014-10-02syntax: remove unused imports of Gc and GC.Eduard Burtescu-1/+0
2014-10-02Put slicing syntax behind a feature gate.Nick Cameron-1/+8
[breaking-change] If you are using slicing syntax you will need to add #![feature(slicing_syntax)] to your crate.
2014-10-02Use slice syntax instead of slice_to, etc.Nick Cameron-2/+2
2014-10-01Update some old references to rust.mdKeegan McAllister-1/+1
2014-10-01auto merge of #17678 : fhahn/rust/issue-17628-infinite-recursion, r=alexcrichtonbors-0/+12
This is a patch for #17628, thanks to @kmcallister for your helpful hints!
2014-10-01Limit recursion depth for macro expansions, closes #17628Florian Hahn-0/+12
2014-10-01auto merge of #17630 : sfackler/rust/cfg-warnings, r=brsonbors-9/+0
Closes #17490
2014-10-01auto merge of #17501 : pcwalton/rust/improve-method-lookup-autoderef, ↵bors-0/+5
r=nikomatsakis prefer `Deref` over `DerefMut` in all other circumstances. Because the compiler now prefers `Deref`, this can break code that looked like: let mut foo = bar.borrow_mut(); (*foo).call_something_that_requires_mutable_self(); Replace this code with: let mut foo = bar.baz(); (&mut *foo).call_something_that_requires_mutable_self(); Closes #12825. [breaking-change] r? @nikomatsakis
2014-10-01auto merge of #17584 : pcwalton/rust/range-patterns-dotdotdot, r=nick29581bors-9/+4
This breaks code that looks like: match foo { 1..3 => { ... } } Instead, write: match foo { 1...3 => { ... } } Closes #17295. r? @nick29581
2014-09-30auto merge of #17634 : jakub-/rust/if_let, r=kballardbors-22/+186
Continuation of https://github.com/rust-lang/rust/pull/16741.
2014-09-30librustc: Fix up mutability in method autoderefs if incorrect, andPatrick Walton-0/+5
prefer `Deref` over `DerefMut` in all other circumstances. Closes #12825.
2014-09-30Turn on cfg format warningsSteven Fackler-9/+0
2014-09-30Update after the fall out from the syntax::ptr changesJakub Wieczorek-30/+36
2014-09-30Update based on PR feedbackKevin Ballard-22/+20
2014-09-30Move `if let` behind a feature gateKevin Ballard-0/+6
2014-09-30Produce a better error for irrefutable `if let` patternsKevin Ballard-10/+17
Modify ast::ExprMatch to include a new value of type ast::MatchSource, making it easy to tell whether the match was written literally or produced via desugaring. This allows us to customize error messages appropriately.
2014-09-30Desugar 'if let' into the appropriate 'match'Kevin Ballard-1/+90
2014-09-30Teach libsyntax about `if let`Kevin Ballard-13/+71
2014-09-30librustc: Forbid `..` in range patterns.Patrick Walton-9/+4
This breaks code that looks like: match foo { 1..3 => { ... } } Instead, write: match foo { 1...3 => { ... } } Closes #17295. [breaking-change]
2014-09-30librustc: Stop looking in metadata in type contents.Patrick Walton-2/+2
4x improvement in pre-trans compile time for rustc.
2014-09-29rollup merge of #17592 : kmcallister/inline-asm-locAlex Crichton-6/+33
2014-09-29rollup merge of #17576 : kmcallister/hide-quotesAlex Crichton-67/+55
2014-09-29rollup merge of #17519 : pcwalton/unboxed-closure-move-syntaxAlex Crichton-33/+34
2014-09-29auto merge of #17409 : farcaller/rust/patch-1, r=huonwbors-2/+6
Parser.parse_method now has a second argument, I assume ast::Inherited is the correct visibility in this case.
2014-09-29Fixed quote_method!() implementationVladimir Pouzanov-2/+6
Parser.parse_method now has a second argument, I assume ast::Inherited is the correct visibility in this case.
2014-09-28Keep ExpnId abstract by providing conversionsKeegan McAllister-5/+18
2014-09-28auto merge of #17527 : sfackler/rust/cfg-syntax, r=alexcrichtonbors-35/+72
We'll need a snapshot before we can convert the codebase over and turn on the deprecation warnings. cc #17490 This is sitting on top of #17506
2014-09-27Convert cfg syntax to new systemSteven Fackler-35/+72
This removes the ability to use `foo(bar)` style cfgs. Switch them to `foo_bar` or `foo="bar"` instead. [breaking-change]
2014-09-27Translate inline assembly errors back to source locationsKeegan McAllister-5/+19
Fixes #17552.
2014-09-27auto merge of #17506 : sfackler/rust/cfg-attr, r=alexcrichtonbors-0/+66
cc #17490 Reopening of #16230
2014-09-26Hide the quote_*! macros when the feature gate is offKeegan McAllister-67/+55
This makes it easier to experiment with improved quasiquoting as an ordinary plugin library. The list of quote macros in feature_gate.rs was already out of sync; this commit also prevents that problem in the future.
2014-09-26librustc: Eliminate the `ref` syntax for unboxed closure capture clausesPatrick Walton-33/+34
in favor of `move`. This breaks code that used `move` as an identifier, because it is now a keyword. Change such identifiers to not use the keyword `move`. Additionally, this breaks code that was counting on by-value or by-reference capture semantics for unboxed closures (behind the feature gate). Change `ref |:|` to `|:|` and `|:|` to `move |:|`. Part of RFC #63; part of issue #12831. [breaking-change]
2014-09-25auto merge of #17378 : Gankro/rust/hashmap-entry, r=aturonbors-7/+9
Deprecates the `find_or_*` family of "internal mutation" methods on `HashMap` in favour of the "external mutation" Entry API as part of RFC 60. Part of #17320, but this still needs to be done on the rest of the maps. However they don't have any internal mutation methods defined, so they can be done without deprecating or breaking anything. Work on `BTree` is part of the complete rewrite in #17334. The implemented API deviates from the API described in the RFC in two key places: * `VacantEntry.set` yields a mutable reference to the inserted element to avoid code duplication where complex logic needs to be done *regardless* of whether the entry was vacant or not. * `OccupiedEntry.into_mut` was added so that it is possible to return a reference into the map beyond the lifetime of the Entry itself, providing functional parity to `VacantEntry.set`. This allows the full find_or_insert functionality to be implemented using this API. A PR will be submitted to the RFC to amend this. [breaking-change]
2014-09-24handling fallout from entry apiAlexis Beingessner-7/+9
2014-09-24Remove unused enum variantsJakub Wieczorek-8/+1
2014-09-24Use more descriptive names in dead code messagesJakub Wieczorek-0/+25
2014-09-24Fix rebase falloutSteven Fackler-14/+12
2014-09-23Deprecate `#[ignore(cfg(...))]`Steven Fackler-0/+6
Replace `#[ignore(cfg(a, b))]` with `#[cfg_attr(all(a, b), ignore)]`
2014-09-23Add a cfg_attr syntax extensionSteven Fackler-0/+62
This extends cfg-gating to attributes. ```rust #[cfg_attr(<cfg pattern>, <attr>)] ``` will expand to ```rust #[<attr>] ``` if the `<cfg pattern>` matches the current cfg environment, and nothing if it does not. The grammar for the cfg pattern has a simple recursive structure: * `value` and `key = "value"` are cfg patterns, * `not(<cfg pattern>)` is a cfg pattern and matches if `<cfg pattern>` does not. * `all(<cfg pattern>, ...)` is a cfg pattern and matches if all of the `<cfg pattern>`s do. * `any(<cfg pattern>, ...)` is a cfg pattern and matches if any of the `<cfg pattern>`s do. Examples: ```rust // only derive Show for assert_eq! in tests #[cfg_attr(test, deriving(Show))] struct Foo { ... } // only derive Show for assert_eq! in tests and debug builds #[cfg_attr(any(test, not(ndebug)), deriving(Show))] struct Foo { ... } // ignore a test in certain cases #[test] #[cfg_attr(all(not(target_os = "linux"), target_endian = "big"), ignore)] fn test_broken_thing() { ... } // Avoid duplication when fixing staging issues in rustc #[cfg_attr(not(stage0), lang="iter")] pub trait Iterator<T> { ... } ```
2014-09-23auto merge of #17402 : steveklabnik/rust/update_manual, r=brsonbors-1/+1
Because I'm still :mask: :mask: :mask: , I figured some mindless tasks would be better than trying to finish the ownership guide. The manual has long been waiting for some :heart: :heart: :heart: , and so I gave it a quick once-over. I made small commits in case any of the changes are a bit weird, I mostly did a few things: 1. changed 'manual' to 'reference.' I feel like this name is better. If it's not, It's not a huge deal. it shouldn't be `rust.md` though. 2. word wrapped everything appropriately. Changes 1&2 are in the first commit, so that its' easier to see the changes in the later ones. 3. fixed other small style issues 4. removed references to things that are in the standard library, and not the language itself There's still lots of gross in here, but I didn't want to pile on too too many changes. /cc @brson @nikomatsakis
2014-09-23auto merge of #17028 : pcwalton/rust/higher-rank-trait-lifetimes, r=pnkfelixbors-8/+53
They will ICE during typechecking if used, because they depend on trait reform. This is part of unboxed closures. r? @nikomatsakis
2014-09-22librustc: Parse and resolve higher-rank lifetimes in traits.Patrick Walton-8/+53
They will ICE during typechecking if used, because they depend on trait reform. This is part of unboxed closures.
2014-09-22librustc: Forbid private types in public APIs.Patrick Walton-0/+4
This breaks code like: struct Foo { ... } pub fn make_foo() -> Foo { ... } Change this code to: pub struct Foo { // note `pub` ... } pub fn make_foo() -> Foo { ... } The `visible_private_types` lint has been removed, since it is now an error to attempt to expose a private type in a public API. In its place a `#[feature(visible_private_types)]` gate has been added. Closes #16463. RFC #48. [breaking-change]
2014-09-22manual -> reference & formattingSteve Klabnik-1/+1
'reference' sounds better than 'manual' to me here, and rust.html is certainly wrong. I also wrapped everything to 80 cols.