about summary refs log tree commit diff
path: root/src/libsyntax/parse/parser.rs
AgeCommit message (Collapse)AuthorLines
2019-11-07move parse/parser.rs -> parse/parser/mod.rsMazdak Farrokhzad-1391/+0
2019-11-07Rollup merge of #65974 - Centril:matcher-friendly-gating, r=petrochenkovMazdak Farrokhzad-1/+1
A scheme for more macro-matcher friendly pre-expansion gating Pre-expansion gating will now avoid gating macro matchers that did not result in `Success(...)`. That is, the following is now OK despite `box 42` being a valid `expr` and that form being pre-expansion gated: ```rust macro_rules! m { ($e:expr) => { 0 }; // This fails on the input below due to `, foo`. (box $e:expr, foo) => { 1 }; // Successful matcher, we should get `2`. } fn main() { assert_eq!(1, m!(box 42, foo)); } ``` Closes https://github.com/rust-lang/rust/issues/65846. r? @petrochenkov cc @Mark-Simulacrum
2019-11-07parser: allow ABIs from literal macro fragmentsMazdak Farrokhzad-13/+27
2019-11-07parser: don't hardcode ABIs into grammarMazdak Farrokhzad-30/+8
2019-11-06revamp pre-expansion gating infraMazdak Farrokhzad-1/+1
2019-11-06Rollup merge of #66054 - petrochenkov:delspan, r=estebankMazdak Farrokhzad-2/+2
syntax: Avoid span arithmetic for delimiter tokens The +/-1 logic is from the time where the whole group had a single span and the delimiter spans had to be calculated from it. Now the delimiters have their own spans which are constructed by lexer or proc macro API and can be used directly. If those spans are not perfect, then it should be fixed by tweaking the corresponding lexer logic rather than by trying to add or substract `1` from the span boundaries. Fixes https://github.com/rust-lang/rust/issues/62524 r? @estebank
2019-11-03syntax: Avoid span arithmetics for delimiter tokensVadim Petrochenkov-2/+2
2019-10-30Do not complain about missing `fn main()` in some casesEsteban Küber-6/+7
2019-10-30Reduce ammount of errors given unclosed delimiterEsteban Küber-15/+24
When in a file with a non-terminated item, catch the error and consume the block instead of trying to recover it more granularly in order to reduce the amount of unrelated errors that would be fixed after adding the missing closing brace. Also point out the possible location of the missing closing brace.
2019-10-25Rollup merge of #65790 - Centril:move-report-invalid, r=davidtwcoMazdak Farrokhzad-19/+0
move report_invalid_macro_expansion_item to item.rs From https://github.com/rust-lang/rust/pull/65324. r? @Mark-Simulacrum
2019-10-25move report_invalid_macro_expansion_item to item.rsMazdak Farrokhzad-19/+0
2019-10-24pre-expansion gate crate_visibility_modifierMazdak Farrokhzad-0/+1
2019-10-23Rollup merge of #65686 - yjhmelody:yjhmelody-patch-1, r=CentrilYuki Okushi-7/+0
refactor and move `maybe_append`
2019-10-22refactor maybe_appendyjhmelody-7/+0
2019-10-18Remove two no-op `into()` calls.Nicholas Nethercote-2/+2
2019-10-16ui-fulldeps: make them pass again?Mazdak Farrokhzad-1/+1
2019-10-16move SeqSep to parser.rsMazdak Farrokhzad-1/+25
2019-10-16move syntax::ext to new crate syntax_expandMazdak Farrokhzad-7/+7
2019-10-16syntax: reduce visibilitiesMazdak Farrokhzad-31/+29
2019-10-16move diagnostics.rs into parser/Mazdak Farrokhzad-1/+2
2019-10-16move parse::attr -> parse::parser::attrMazdak Farrokhzad-0/+1
2019-10-15syntax::parse::sess -> syntax::sessMazdak Farrokhzad-1/+2
2019-10-15move parse_lit to expr.rsMazdak Farrokhzad-6/+2
2019-10-15syntax: extract sess.rs for ParseSessMazdak Farrokhzad-1/+1
2019-10-14Rollup merge of #65261 - nnethercote:rm-Option-from-TokenStream, r=petrochenkovTyler Mandry-2/+2
Remove `Option` from `TokenStream` A code simplification. r? @petrochenkov
2019-10-14Rollup merge of #65363 - Centril:less-pprust, r=Mark-SimulacrumMazdak Farrokhzad-2/+4
Remove implicit dependencies on syntax::pprust Part of https://github.com/rust-lang/rust/pull/65324. The main goal here is to facilitate the eventual move of pprust out from libsyntax and because an AST definition typically should not depend on its pretty printer. r? @estebank
2019-10-14Use `TokenStream::default()` in more places.Nicholas Nethercote-2/+2
2019-10-13syntax: consolidate function parsing in `item.rs`Mazdak Farrokhzad-281/+4
2019-10-13ast: remove implicit pprust dependency via Display.Mazdak Farrokhzad-2/+4
Instead just use `pprust::path_to_string(..)` where needed. This has two benefits: a) The AST definition is now independent of printing it. (Therefore we get closer to extracting a data-crate.) b) Debugging should be easier as program flow is clearer.
2019-10-07syntax: unify and simplify fn signature parsing.Mazdak Farrokhzad-58/+38
2019-10-07Auto merge of #64906 - Aaron1011:feature/extern-const-fn, r=Centrilbors-0/+9
Add support for `const unsafe? extern fn` This works just as you might expect - an `const extern fn` is a `const fn` that is callable from foreign code. Currently, panicking is not allowed in `const`s. When https://github.com/rust-lang/rfcs/pull/2345 (https://github.com/rust-lang/rust/issues/51999) is stabilized, then panicking in an `const extern fn` will produce a compile-time error when invoked at compile time, and an abort when invoked at runtime. Since this is extending the language (we're allowing the `const` keyword in a new context), I believe that this will need an FCP. However, it's a very minor change, so I didn't think that filing an RFC was necessary. This will allow libc (and other FFI crates) to make many functions `const`, without having to give up on making them `extern` as well. Tracking issue: https://github.com/rust-lang/rust/issues/64926.
2019-10-02syntax: improve parameter without type suggestionsDavid Wood-0/+1
This commit improves the suggestions provided when function parameters do not have types: - A new suggestion is added for arbitrary self types, which suggests adding `self: ` before the type. - Existing suggestions are now provided when a `<` is found where a `:` was expected (previously only `,` and `)` or trait items), this gives suggestions in the case where the unnamed parameter type is generic in a free function. - The suggestion that a type name be provided (e.g. `fn foo(HashMap<u32>)` -> `fn foo(HashMap: TypeName<u32>)`) will no longer occur when a `<` was found instead of `:`. - The ident will not be used for recovery when a `<` was found instead of `:`. Signed-off-by: David Wood <david@davidtw.co>
2019-10-02Add support for 'extern const fn'Aaron Hill-0/+9
This works just as you might expect - an 'extern const fn' is a 'const fn' that is callable from foreign code. Currently, panicking is not allowed in consts. When RFC 2345 is stabilized, then panicking in an 'extern const fn' will produce a compile-time error when invoked at compile time, and an abort when invoked at runtime. Since this is extending the language (we're allowing the `const` keyword in a new context), I believe that this will need an FCP. However, it's a very minor change, so I didn't think that filing an RFC was necessary. This will allow libc (and other FFI crates) to make many functions `const`, without having to give up on making them `extern` as well.
2019-10-01syntax: de-closure-ify `check_or_expected`.Mazdak Farrokhzad-7/+7
2019-10-01syntax: merge things back into `parse_visibility`.Mazdak Farrokhzad-37/+25
2019-10-01syntax: put helpers of `parse_self_param` in the method.Mazdak Farrokhzad-58/+57
2019-10-01syntax: document some methods.Mazdak Farrokhzad-2/+6
2019-09-30syntax: extract `error_on_invalid_abi`.Mazdak Farrokhzad-14/+17
2019-09-30syntax: cleanup `parse_visibility`.Mazdak Farrokhzad-53/+69
2019-09-30syntax: misc cleanupMazdak Farrokhzad-44/+30
2019-09-30syntax: reorder param parsing to make more sense.Mazdak Farrokhzad-153/+153
2019-09-30syntax refactor `parse_self_param` (5)Mazdak Farrokhzad-22/+21
2019-09-30syntax refactor `parse_self_param` (4)Mazdak Farrokhzad-24/+35
2019-09-30syntax refactor `parse_self_param` (3)Mazdak Farrokhzad-28/+20
2019-09-30syntax refactor `parse_self_param` (2)Mazdak Farrokhzad-11/+16
2019-09-30syntax refactor `parse_self_param` (1)Mazdak Farrokhzad-12/+13
2019-09-30syntax refactor `parse_fn_params`Mazdak Farrokhzad-28/+29
2019-09-30syntax: `is_named_argument` -> `is_named_param`.Mazdak Farrokhzad-2/+2
2019-09-29Rollup merge of #64894 - Centril:fix-64682, r=petrochenkovMazdak Farrokhzad-50/+23
syntax: fix dropping of attribute on first param of non-method assocated fn Fixes #64682. The general idea is that we bake parsing of `self` into `parse_param_general` and then we just use standard list parsing. Overall, this simplifies the parsing and makes it more consistent. r? @petrochenkov cc @c410-f3r
2019-09-29syntax: fix #64682.Mazdak Farrokhzad-50/+23
Fuse parsing of `self` into `parse_param_general`.