about summary refs log tree commit diff
path: root/src/libsyntax/fold.rs
AgeCommit message (Collapse)AuthorLines
2016-05-27Rollup merge of #33644 - petrochenkov:selfast, r=nrcManish Goregaokar-32/+1
The AST part of https://github.com/rust-lang/rust/pull/33505. https://github.com/rust-lang/rust/pull/33505 isn't landed yet, so this PR is based on top of it. r? @nrc plugin-[breaking-change] cc #31645 @Manishearth
2016-05-27Rollup merge of #33639 - petrochenkov:dotdot, r=nmatsakisManish Goregaokar-3/+5
cc https://github.com/rust-lang/rust/issues/33627 r? @nikomatsakis plugin-[breaking-change] cc https://github.com/rust-lang/rust/issues/31645 @Manishearth
2016-05-26Implement `..` in tuple (struct) patternsVadim Petrochenkov-3/+5
2016-05-25Add a new AST-only type variant `ImplicitSelf`Vadim Petrochenkov-2/+1
2016-05-25Remove ExplicitSelf from ASTVadim Petrochenkov-31/+1
2016-05-24syntax/hir: give loop labels a spanGeorg Brandl-4/+8
This makes the "shadowing labels" warning *not* print the entire loop as a span, but only the lifetime. Also makes #31719 go away, but does not fix its root cause (the span of the expanded loop is still wonky, but not used anymore).
2016-04-25Rollup merge of #33041 - petrochenkov:path, r=nrc,ManishearthManish Goregaokar-14/+7
Paths are mostly parsed without taking whitespaces into account, e.g. `std :: vec :: Vec :: new ()` parses successfully, however, there are some special cases involving keywords `super`, `self` and `Self`. For example, `self::` is considered a path start only if there are no spaces between `self` and `::`. These restrictions probably made sense when `self` and friends weren't keywords, but now they are unnecessary. The first two commits remove this special treatment of whitespaces by removing `token::IdentStyle` entirely and therefore fix https://github.com/rust-lang/rust/issues/14109. This change also affects naked `self` and `super` (which are not tightly followed by `::`, obviously) they can now be parsed as paths, however they are still not resolved correctly in imports (cc @jseyfried, see `compile-fail/use-keyword.rs`), so https://github.com/rust-lang/rust/issues/29036 is not completely fixed. The third commit also makes `super`, `self`, `Self` and `static` keywords nominally (before this they acted as keywords for all purposes) and removes most of remaining \"special idents\". The last commit (before tests) contains some small improvements - some qualified paths with type parameters are parsed correctly, `parse_path` is not used for parsing single identifiers, imports are sanity checked for absence of type parameters - such type parameters can be generated by syntax extensions or by macros when https://github.com/rust-lang/rust/issues/10415 is fixed (~~soon!~~already!). This patch changes some pretty basic things in `libsyntax`, like `token::Token` and the keyword list, so it's a plugin-[breaking-change]. r? @eddyb
2016-04-24syntax: Merge keywords and remaining special idents in one listVadim Petrochenkov-2/+2
Simplify the macro used for generation of keywords Make `Keyword::ident` private
2016-04-24syntax: Make static/super/self/Self keywords + special ident cleanupVadim Petrochenkov-1/+1
2016-04-24syntax: Get rid of token::IdentStyleVadim Petrochenkov-12/+5
2016-04-24thread tighter span for closures aroundNiko Matsakis-3/+4
Track the span corresponding to the `|...|` part of the closure.
2016-04-14Visit visibilities in the ast visitor's `walk_*` functionsJeffrey Seyfried-1/+1
2016-04-06Rollup merge of #32570 - eddyb:tis-but-a-front, r=nikomatsakisManish Goregaokar-8/+0
r? @nikomatsakis Conflicts: src/librustc_save_analysis/lib.rs src/libsyntax/ast_util.rs
2016-04-06Move span into `StructField`Vadim Petrochenkov-9/+7
2016-04-06Get rid of ast::StructFieldKindVadim Petrochenkov-6/+6
2016-04-06syntax: dismantle ast_util.Eduard Burtescu-8/+0
2016-04-02Add `Crate` and `Restricted` variants to `ast::Visibility`Jeffrey Seyfried-3/+17
2016-03-14Add `default` as contextual keyword, and parse it for impl items.Aaron Turon-0/+1
2016-03-07implement the `?` operatorJorge Aparicio-1/+2
The `?` postfix operator is sugar equivalent to the try! macro, but is more amenable to chaining: `File::open("foo")?.metadata()?.is_dir()`. `?` is accepted on any *expression* that can return a `Result`, e.g. `x()?`, `y!()?`, `{z}?`, `(w)?`, etc. And binds more tightly than unary operators, e.g. `!x?` is parsed as `!(x?)`. cc #31436
2016-02-27libsyntax: parse inclusive rangesAlex Burka-2/+3
2016-02-13Split ast::PatKind::Enum into tuple struct and path patternsVadim Petrochenkov-2/+5
2016-02-13Rename ast::Pat_ and its variantsVadim Petrochenkov-18/+18
2016-02-12Use more autoderef in libsyntaxJonas Schievink-1/+1
2016-02-11Remove some unnecessary indirection from AST structuresVadim Petrochenkov-65/+65
2016-02-11[breaking-change] don't glob export ast::PathListItem_ variantsOliver 'ker' Schneider-4/+4
2016-02-11[breaking-change] don't glob export ast::Visibility variantsOliver 'ker' Schneider-1/+1
2016-02-11[breaking-change] don't glob export ast::TraitItemKind variantsOliver 'ker' Schneider-6/+6
2016-02-11[breaking-change] don't glob export ast::MetaItem_Oliver 'ker' Schneider-4/+4
2016-02-11[breaking-change] don't glob export ast::Item_ variantsOliver 'ker' Schneider-31/+31
2016-02-11[breaking-change] don't glob export ast::ForeignItem_ variantsOliver 'ker' Schneider-4/+4
2016-02-11[breaking-change] don't pub export ast::Stmt_ variantsOliver Schneider-10/+10
2016-02-11[breaking-change] don't pub export ast::Ty_ variantsOliver Schneider-21/+21
2016-02-11[breaking-change] don't glob export ast::Expr_ variantsOliver Schneider-63/+63
2016-02-11[breaking-change] don't glob export ast::ExplicitSelf_ variantsOliver Schneider-10/+10
2016-02-11[breaking-change] don't glob export ast::Decl_ variantsOliver Schneider-4/+4
2016-02-11[breaking-change] don't glob import ast::FunctionRetTy variantsOliver Schneider-3/+3
2015-12-22Stop re-exporting PathParameters's variants.Ms2ger-4/+4
2015-12-19Auto merge of #30184 - petrochenkov:ascr, r=nikomatsakisbors-0/+3
This PR is a rebase of the original PR by @eddyb https://github.com/rust-lang/rust/pull/21836 with some unrebasable parts manually reapplied, feature gate added + type equality restriction added as described below. This implementation is partial because the type equality restriction is applied to all type ascription expressions and not only those in lvalue contexts. Thus, all difficulties with detection of these contexts and translation of coercions having effect in runtime are avoided. So, you can't write things with coercions like `let slice = &[1, 2, 3]: &[u8];`. It obviously makes type ascription less useful than it should be, but it's still much more useful than not having type ascription at all. In particular, things like `let v = something.iter().collect(): Vec<_>;` and `let u = t.into(): U;` work as expected and I'm pretty happy with these improvements alone. Part of https://github.com/rust-lang/rust/issues/23416
2015-12-18Deprecate name `OwnedSlice` and don't use itVadim Petrochenkov-10/+9
2015-12-16Implement type ascription.Eduard Burtescu-0/+3
2015-12-16Rollup merge of #30388 - DanielJCampbell:macro-ident-spans, r=nrcManish Goregaokar-1/+2
r? @nrc
2015-12-15Generated code spans now point to callsite parameters (where applicable)Daniel Campbell-1/+2
2015-12-05Use a struct instead of a tuple for inline asm output operandsAmanieu d'Antras-2/+7
2015-12-05Add proper support for indirect output constraints in inline asmAmanieu d'Antras-2/+2
2015-11-26Some TLC for the MoveMap traitMarvin Löbel-35/+13
2015-11-26Fixed macro expander not folding attributes (though I'm not sure if that is ↵Marvin Löbel-1/+5
actually neccessary)
2015-11-26Moved and refactored ThinAttributesMarvin Löbel-3/+4
2015-11-26Add syntax support for attributes on expressions and all syntaxMarvin Löbel-19/+48
nodes in statement position. Extended #[cfg] folder to allow removal of statements, and of expressions in optional positions like expression lists and trailing block expressions. Extended lint checker to recognize lint levels on expressions and locals.
2015-11-16rename `ast::ImplItem_::*ImplItem` to `ast::ImplItemKind::*`Oliver Schneider-6/+6
2015-11-11libsyntax: Add more quasiquoting macrosKyle Mayes-0/+1