about summary refs log tree commit diff
path: root/src/libsyntax/parse/parser.rs
AgeCommit message (Collapse)AuthorLines
2016-03-06Auto merge of #30884 - durka:inclusive-ranges, r=aturonbors-36/+49
This PR implements [RFC 1192](https://github.com/rust-lang/rfcs/blob/master/text/1192-inclusive-ranges.md), which is triple-dot syntax for inclusive range expressions. The new stuff is behind two feature gates (one for the syntax and one for the std::ops types). This replaces the deprecated functionality in std::iter. Along the way I simplified the desugaring for all ranges. This is my first contribution to rust which changes more than one character outside of a test or comment, so please review carefully! Some of the individual commit messages have more of my notes. Also thanks for putting up with my dumb questions in #rust-internals. - For implementing `std::ops::RangeInclusive`, I took @Stebalien's suggestion from https://github.com/rust-lang/rfcs/pull/1192#issuecomment-137864421. It seemed to me to make the implementation easier and increase type safety. If that stands, the RFC should be amended to avoid confusion. - I also kind of like @glaebhoerl's [idea](https://github.com/rust-lang/rfcs/pull/1254#issuecomment-147815299), which is unified inclusive/exclusive range syntax something like `x>..=y`. We can experiment with this while everything is behind a feature gate. - There are a couple of FIXMEs left (see the last commit). I didn't know what to do about `RangeArgument` and I haven't added `Index` impls yet. Those should be discussed/finished before merging. cc @Gankro since you [complained](https://www.reddit.com/r/rust/comments/3xkfro/what_happened_to_inclusive_ranges/cy5j0yq) cc #27777 #30877 rust-lang/rust#1192 rust-lang/rfcs#1254 relevant to #28237 (tracking issue)
2016-03-02Add `filename` to ParserJeffrey Seyfried-1/+6
2016-02-27fix fallout from libsyntax enumpocalypseAlex Burka-1/+1
2016-02-27libsyntax: parse inclusive rangesAlex Burka-37/+50
2016-02-25Rollup merge of #31362 - jseyfried:fix_extern_crate_visibility, r=nikomatsakisManish Goregaokar-7/+0
This PR changes the visibility of extern crate declarations to match that of items (fixes #26775). To avoid breakage, the PR makes it a `public_in_private` lint to reexport a private extern crate, and it adds the lint `inaccessible_extern_crate` for uses of an inaccessible extern crate. The lints can be avoided by making the appropriate `extern crate` declaration public.
2016-02-24Fix the visibility of extern crate declarations and stop warning on pub ↵Jeffrey Seyfried-7/+0
extern crate
2016-02-22Use associated functions for libsyntax SepSeq constructors.Corey Farwell-23/+23
2016-02-16Auto merge of #31534 - jseyfried:restrict_noninline_mod, r=nikomatsakisbors-7/+17
This PR disallows non-inline modules without path annotations that are either in a block or in an inline module whose containing file is not a directory owner (fixes #29765). This is a [breaking-change]. r? @nikomatsakis
2016-02-15RebasingNick Cameron-2/+2
2016-02-15Some error recovery in the parserNick Cameron-32/+150
2016-02-15Add some simple error recovery to the parser and fix testsNick Cameron-28/+63
Some tests just add the extra errors, others I fix by doing some simple error recovery. I've tried to avoid doing too much in the hope of doing something more principled later. In general error messages are getting worse at this stage, but I think in the long run they will get better.
2016-02-15error correction for missing or mismatched closing bracketsNick Cameron-28/+40
2016-02-15refactoring: inline some function in the parserNick Cameron-31/+28
2016-02-13Split ast::PatKind::Enum into tuple struct and path patternsVadim Petrochenkov-3/+3
2016-02-13Rename ast::Pat_ and its variantsVadim Petrochenkov-21/+20
2016-02-13Disallow non-inline modules without path annotations inside blocks and fix ↵Jeffrey Seyfried-4/+17
fallout
2016-02-13Only consider a module to be a directory owner if it is located within a ↵Jeffrey Seyfried-3/+0
directory owner
2016-02-12Use more autoderef in libsyntaxJonas Schievink-15/+15
2016-02-11Remove some unnecessary indirection from AST structuresVadim Petrochenkov-35/+48
2016-02-11[breaking-change] don't glob export ast::PathListItem_ variantsOliver 'ker' Schneider-2/+2
2016-02-11[breaking-change] don't glob export ast::StrStyle variantsOliver 'ker' Schneider-4/+6
2016-02-11[breaking-change] don't glob export ast::Visibility variantsOliver 'ker' Schneider-14/+14
2016-02-11[breaking-change] don't glob export ast::TraitItemKind variantsOliver 'ker' Schneider-7/+6
2016-02-11[breaking-change] don't glob export ast::Mutablity variantsOliver 'ker' Schneider-17/+23
2016-02-11[breaking-change] don't glob export ast::MacStmtStyleOliver 'ker' Schneider-7/+7
2016-02-11[breaking-change] don't glob export ast::KleeneOp variantsOliver 'ker' Schneider-2/+2
2016-02-11[breaking-change] don't glob export ast::Item_ variantsOliver 'ker' Schneider-24/+21
2016-02-11[breaking-change] don't glob export ast::ForeignItem_ variantsOliver 'ker' Schneider-3/+3
2016-02-11[breaking-change] don't pub export ast::Stmt_ variantsOliver Schneider-19/+16
2016-02-11[breaking-change] don't pub export ast::IntLitType variantsOliver Schneider-1/+1
2016-02-11[breaking-change] don't pub export ast::Lit_ variantsOliver Schneider-14/+13
2016-02-11[breaking-change] don't pub export ast::Ty_ variantsOliver Schneider-26/+24
2016-02-11[breaking-change] don't glob export ast::{UintTy, IntTy} variantsOliver Schneider-3/+3
2016-02-11[breaking-change] don't glob export ast::Expr_ variantsOliver Schneider-74/+68
2016-02-11[breaking-change] don't glob export ast::ExplicitSelf_ variantsOliver Schneider-18/+18
2016-02-11[breaking-change] don't glob export ast::Decl_ variantsOliver Schneider-4/+4
2016-02-11[breaking-change] don't glob export ast::CaptureClause variantsOliver Schneider-4/+4
2016-02-11[breaking-change] don't glob import/export syntax::abi enum variantsOliver Schneider-12/+12
2016-02-11[breaking-change] don't glob export ast::BlockCheckMode variantsOliver Schneider-7/+7
2016-02-11[breaking-change] don't glob import ast::FunctionRetTy variantsOliver Schneider-7/+7
2016-02-11[breaking-change] don't glob export ast::BinOp_Oliver Schneider-18/+19
2016-02-11[breaking-change] don't glob export ast::UnOp variantsOliver Schneider-7/+7
2016-02-08Breaking tokens into pieces should behave similar to Parser::bump.Tomasz Miąsko-11/+19
Previously when breaking tokens into smaller pieces, the replace_token function have been used. It replaced current token and updated span information, but it did not clear the list of expected tokens, neither did it update remaining info about last token. This could lead to incorrect error message, like one described in the issue #24780: expected one of ... `>` ... found `>`
2016-02-01Replace some aborts with ResultsNick Cameron-7/+3
Fixes #31207 by removing abort_if_new_errors
2016-01-27Auto merge of #31089 - fhahn:macro-ice, r=pnkfelixbors-30/+60
This is a work in progress PR that potentially should fix #29084, #28308, #25385, #28288, #31011. I think this may also adresse parts of #2887. The problem in this issues seems to be that when transcribing macro arguments, we just clone the argument Nonterminal, which still has to original spans. This leads to the unprintable spans. One solution would be to update the spans of the inserted argument to match the argument in the macro definition. So for [this testcase](https://github.com/rust-lang/rust/compare/master...fhahn:macro-ice?expand=1#diff-f7def7420c51621640707b6337726876R2) the error message would be displayed in the macro definition: src/test/compile-fail/issue-31011.rs:4:12: 4:22 error: attempted access of field `trace` on type `&T`, but no field with that name was found src/test/compile-fail/issue-31011.rs:4 if $ctx.trace { Currently I've added a very simple `update_span` function, which updates the span of the outer-most expression of a `NtExpr`, but this `update_span` function should be updated to handle all Nonterminals. But I'm pretty new to the macro system and would like to check if this approach makes sense, before doing that.
2016-01-27Avoid storing interolated token in Parser.last_tokenFlorian Hahn-7/+11
2016-01-27Turn interpolated_or_expr_span into a functionFlorian Hahn-28/+24
2016-01-26Rollup merge of #31211 - Manishearth:pr-30765, r=nrcManish Goregaokar-0/+6
r? @eddyb or @nrc
2016-01-26Push try! to call site of interpolated_or_expr_span!Florian Hahn-17/+18
2016-01-26Add interpolated_or_expr_span macro and pass lo to newly added parse_dot_suffixFlorian Hahn-30/+38