about summary refs log tree commit diff
path: root/src/libsyntax/parse
AgeCommit message (Collapse)AuthorLines
2014-10-06Remove the #[allow(non_uppercase_statics)] attr from bitflags!P1start-19/+19
2014-10-04Changed `extern crate foo as bar;` error messageFelix Raimundo-5/+14
Closes #17709
2014-10-03rollup merge of #17729 : alexcrichton/issue-17718-startAlex Crichton-3/+21
2014-10-03Correct error message for invalid `ref`/`mut` bindingsP1start-3/+4
Closes #15914.
2014-10-03Set the `non_uppercase_statics` lint to warn by defaultP1start-2/+5
2014-10-02syntax: Enable parsing of `const` globalsAlex Crichton-3/+21
This rewrites them to the current `ItemStatic` production of the compiler, but I want to get this into a snapshot. It will be illegal to use a `static` in a pattern of a `match` statement, so all those current uses will need to be rewritten to `const` once it's implemented. This requires that the stage0 snapshot is able to parse `const`. cc #17718
2014-10-02syntax: remove ObsoleteManaged{Type,Expr}.Eduard Burtescu-24/+0
2014-10-02syntax: ast: remove TyBox and UnBox.Eduard Burtescu-5/+4
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-30Update based on PR feedbackKevin Ballard-1/+3
2014-09-30Produce a better error for irrefutable `if let` patternsKevin Ballard-2/+2
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-30Teach libsyntax about `if let`Kevin Ballard-9/+27
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-26librustc: Eliminate the `ref` syntax for unboxed closure capture clausesPatrick Walton-31/+32
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-22librustc: Parse and resolve higher-rank lifetimes in traits.Patrick Walton-3/+23
They will ICE during typechecking if used, because they depend on trait reform. This is part of unboxed closures.
2014-09-21auto merge of #17415 : jakub-/rust/issue-17383, r=huonwbors-5/+7
Fixes #17383.
2014-09-21Fix the span for discriminators in non-C-like enumsJakub Wieczorek-5/+7
Fixes #17383.
2014-09-20libsyntax: Explicit error message for sugared doc comments.Mike Boutin-11/+28
Display an explicit message about items missing after sugared doc comment attributes. References #2789.
2014-09-19rollup merge of #17379 : pcwalton/keywords-followed-by-double-colonAlex Crichton-35/+48
2014-09-19rollup merge of #17318 : nick29581/sliceAlex Crichton-9/+96
2014-09-19rollup merge of #17314 : eddyb/span-no-gcAlex Crichton-6/+6
2014-09-18librustc: Implement the syntax in the RFC for unboxed closure sugar.Patrick Walton-49/+27
Part of issue #16640. I am leaving this issue open to handle parsing of higher-rank lifetimes in traits. This change breaks code that used unboxed closures: * Instead of `F:|&: int| -> int`, write `F:Fn(int) -> int`. * Instead of `F:|&mut: int| -> int`, write `F:FnMut(int) -> int`. * Instead of `F:|: int| -> int`, write `F:FnOnce(int) -> int`. [breaking-change]
2014-09-18libsyntax: Disallow keywords followed by `::`.Patrick Walton-35/+48
This breaks code that looked like: mymacro!(static::foo); ... where `mymacro!` expects a path or expression. Change such macros to not accept keywords followed by `::`. Closes #17298. [breaking-change]
2014-09-19Implement slicing syntax.Nick Cameron-9/+96
`expr[]`, `expr[expr..]`, `expr[..expr]`,`expr[expr..expr]` Uses the Slice and SliceMut traits. Allows ... as well as .. in range patterns.
2014-09-18Fix fallout in tests from removing the use of Gc in ExpnInfo.Eduard Burtescu-5/+5
2014-09-18syntax: use an index in CodeMap instead of Gc for ExpnInfo.Eduard Burtescu-1/+1
2014-09-17librustc: Implement associated types behind a feature gate.Patrick Walton-94/+150
The implementation essentially desugars during type collection and AST type conversion time into the parameter scheme we have now. Only fully qualified names--e.g. `<T as Foo>::Bar`--are supported.
2014-09-17auto merge of #17343 : alexcrichton/rust/rollup, r=alexcrichtonbors-34/+31
2014-09-17auto merge of #16836 : P1start/rust/closure_ret_bang, r=alexcrichtonbors-10/+10
Fixes #13490.
2014-09-17rollup merge of #17290 : bkoropoff/issue-17283Alex Crichton-34/+31
2014-09-17rebasing fixesNick Cameron-1/+1
2014-09-17move most of front to libsyntaxNick Cameron-0/+19
2014-09-16Propagate restrictions against struct literals to the RHS of assignmentsBrian Koropoff-2/+3
This prevents confusing errors when accidentally using an assignment in an `if` expression. For example: ```rust fn main() { let x = 1u; if x = x { println!("{}", x); } } ``` Previously, this yielded: ``` test.rs:4:16: 4:17 error: expected `:`, found `!` test.rs:4 println!("{}", x); ^ ``` With this change, it now yields: ``` test.rs:3:8: 3:13 error: mismatched types: expected `bool`, found `()` (expected bool, found ()) test.rs:3 if x = x { ^~~~~ ``` Closes issue #17283
2014-09-16Convert restriction enum into bitflagsBrian Koropoff-32/+28
This makes having multiple restrictions at once cleaner. Also drop NO_DOUBLEBAR restriction since it is never used.
2014-09-17auto merge of #17223 : retep998/rust/into_string, r=huonwbors-41/+41
Replaces some usage of `.to_string()` with `.into_string()`
2014-09-16Fallout from renamingAaron Turon-11/+11
2014-09-14auto merge of #17163 : pcwalton/rust/impls-next-to-struct, r=alexcrichtonbors-0/+1
type they provide an implementation for. This breaks code like: mod foo { struct Foo { ... } } impl foo::Foo { ... } Change this code to: mod foo { struct Foo { ... } impl Foo { ... } } Closes #17059. RFC #155. [breaking-change] r? @brson
2014-09-14Add help diagnostic messagesP1start-0/+3
This adds ‘help’ diagnostic messages to rustc. This is used for anything that provides help to the user, particularly the `--explain` messages that were previously integrated into the relevant error message.
2014-09-14syntax: tests: fix fallout from using ptr::P.Eduard Burtescu-8/+8
2014-09-14syntax: fix fallout from using ptr::P.Eduard Burtescu-304/+323
2014-09-13librustc: Forbid inherent implementations that aren't adjacent to thePatrick Walton-0/+1
type they provide an implementation for. This breaks code like: mod foo { struct Foo { ... } } impl foo::Foo { ... } Change this code to: mod foo { struct Foo { ... } impl Foo { ... } } Additionally, if you used the I/O path extension methods `stat`, `lstat`, `exists`, `is_file`, or `is_dir`, note that these methods have been moved to the the `std::io::fs::PathExtensions` trait. This breaks code like: fn is_it_there() -> bool { Path::new("/foo/bar/baz").exists() } Change this code to: use std::io::fs::PathExtensions; fn is_it_there() -> bool { Path::new("/foo/bar/baz").exists() } Closes #17059. RFC #155. [breaking-change]
2014-09-13Improve memory usage of libsyntaxPeter Atashian-41/+41
Replaces some usage of `.to_string()` with `.into_string()` Signed-off-by: Peter Atashian <retep998@gmail.com>
2014-09-11auto merge of #16866 : P1start/rust/tuple-indexing, r=brsonbors-1/+41
This allows code to access the fields of tuples and tuple structs behind the feature gate `tuple_indexing`: ```rust #![feature(tuple_indexing)] let x = (1i, 2i); assert_eq!(x.1, 2); struct Point(int, int); let origin = Point(0, 0); assert_eq!(origin.0, 0); assert_eq!(origin.1, 0); ``` Implements [RFC 53](https://github.com/rust-lang/rfcs/blob/master/active/0053-tuple-accessors.md). Closes #16950.
2014-09-09librustc: Obsolete the old external crate renaming syntax.Patrick Walton-5/+6
Instead of `extern crate foo = bar`, write `extern crate bar as foo`. Instead of `extern crate baz = "quux"`, write `extern crate "quux" as baz`. Closes #16461. [breaking-change]
2014-09-10Implement tuple and tuple struct indexingP1start-1/+41
This allows code to access the fields of tuples and tuple structs: let x = (1i, 2i); assert_eq!(x.1, 2); struct Point(int, int); let origin = Point(0, 0); assert_eq!(origin.0, 0); assert_eq!(origin.1, 0);
2014-09-08librustc: Change the syntax of subslice matching to use postfix `..`Patrick Walton-31/+42
instead of prefix `..`. This breaks code that looked like: match foo { [ first, ..middle, last ] => { ... } } Change this code to: match foo { [ first, middle.., last ] => { ... } } RFC #55. Closes #16967. [breaking-change]
2014-09-07Fix deprecate warning "extern crate ... as ..."Sebastien Martini-1/+1
Its arguments were inverted.
2014-09-05Fix documentation typo.jamesluke-1/+1
2014-09-04auto merge of #16982 : jbcrail/rust/comment-and-string-corrections, ↵bors-1/+1
r=alexcrichton I corrected spelling and capitalization errors in comments and strings.
2014-09-04auto merge of #16923 : wickerwaka/rust/crate-as-fixup, r=alexcrichtonbors-3/+8
Changed occurances of: extern crate foo = "bar"; to: extern crate "bar" as foo; Added warning for old deprecated syntax