summary refs log tree commit diff
path: root/src/libsyntax_ext/deriving
AgeCommit message (Collapse)AuthorLines
2018-10-29Remove redundant cloneShotaro Yamada-2/+2
2018-08-19mv (mod) codemap source_mapDonato Sciarra-4/+4
2018-08-16syntax_ext: remove leftover span_err_if_not_stage0 macro.Eduard-Mihai Burtescu-13/+2
2018-08-13Move SmallVec and ThinVec out of libsyntaxljedrz-2/+5
2018-08-09[nll] libsyntax_ext: remove unnecessary mut annotation on variablememoryruins-1/+1
Pointed out by nll. It is correct that the mut annotation is not needed.
2018-07-29Replace push loops with collect() and extend() where possibleljedrz-14/+12
2018-07-23libsyntax_ext: Prefer `Option::map` over `match` where applicableColin Wallace-8/+4
2018-07-14Remove most of `PartialEq` impls from AST and HIR structuresVadim Petrochenkov-11/+6
2018-07-12Deny bare trait objects in src/libsyntax_extljedrz-21/+21
2018-06-23hygiene: Merge `NameAndSpan` into `ExpnInfo`Vadim Petrochenkov-2/+2
2018-06-21Parse async fn header.Without Boats-5/+5
This is gated on edition 2018 & the `async_await` feature gate. The parser will accept `async fn` and `async unsafe fn` as fn items. Along the same lines as `const fn`, only `async unsafe fn` is permitted, not `unsafe async fn`.The parser will not accept `async` functions as trait methods. To do a little code clean up, four fields of the function type struct have been merged into the new `FnHeader` struct: constness, asyncness, unsafety, and ABI. Also, a small bug in HIR printing is fixed: it previously printed `const unsafe fn` as `unsafe const fn`, which is grammatically incorrect.
2018-06-20Fix additional commentsvarkor-1/+1
2018-06-20Rename ty_param_bound to trait_boundvarkor-5/+5
2018-06-20Rename ParamBound(s) to GenericBound(s)varkor-2/+2
2018-06-20Remove name from GenericParamKind::Lifetimevarkor-4/+4
2018-06-20Lift bounds into GenericParamvarkor-12/+10
2018-06-20Simply joint lifetime/type iterationvarkor-57/+21
2018-06-20Rename structures in astvarkor-24/+24
2018-06-20Remove all traces of lifetimes() and types() methodsvarkor-23/+21
2018-06-20Remove methods from ast::GenericParam and ast::Genericsvarkor-2/+8
2018-06-20Refactor ast::GenericParam as a structvarkor-31/+29
2018-06-20Refactor hir::GenericParam as a structvarkor-3/+7
2018-06-20Rename ast::GenericParam and ast::GenericArgvarkor-25/+25
It's so confusing to have everything having the same name, at least while refactoring.
2018-06-20Rename "parameter" to "arg"varkor-12/+12
2018-06-20Rename *Parameter to *Paramvarkor-12/+12
2018-06-20Consolidate PathParameters and AngleBracketedParameterDatavarkor-18/+32
2018-06-18Add ability to apply custom derive to union types.Steve Pentland-3/+4
The Union item type has been included in the allowed types for a custom derive. Closes #50223
2018-05-26Add `Ident::as_str` helperVadim Petrochenkov-1/+1
2018-05-23Rollup merge of #50846 - GuillaumeGomez:add-e0665, r=frewsxcvkennytm-2/+13
Add E0665
2018-05-21Remove rustc_serialize_exclude_nullManish Goregaokar-12/+2
2018-05-21Add E0665Guillaume Gomez-2/+13
2018-05-15Auto merge of #50011 - varkor:partialord-opt-ii, r=Manishearthbors-66/+101
Ensure derive(PartialOrd) is no longer accidentally exponential Previously, two comparison operations would be generated for each field, each of which could delegate to another derived PartialOrd. Now we use ordering and optional chaining to ensure each pair of fields is only compared once, addressing https://github.com/rust-lang/rust/issues/49650#issuecomment-379467572. Closes #49505. r? @Manishearth (sorry for changing it again so soon!) Close #50755
2018-05-02Remove Option from the return type of Attribute::name()Seiichi Uchida-6/+4
2018-04-26rustc_target: move in syntax::abi and flip dependency.Irina Popa-1/+1
2018-04-25Update comments to UFCS stylevarkor-11/+24
2018-04-25Use UFCSvarkor-11/+20
2018-04-25Fix handling of Nonevarkor-11/+11
2018-04-25Ensure derive(PartialOrd) is no longer accidentally exponentialvarkor-70/+83
Previously, two comparison operations would be generated for each field, each of which could delegate to another derived PartialOrd. Now we use ordering and optional chaining to ensure each pair of fields is only compared once.
2018-04-25Auto merge of #49986 - zofrex:better-derived-argument-names, r=Manishearthbors-32/+32
Provide better names for builtin deriving-generated attributes First attempt at fixing #49967 Not in love with any choices here, don't be shy if you aren't happy with anything :) I've tested that this produces nicer names in documentation, and that it no longer has issues conflicting with constants with the same name. (I guess we _could_ make a test for that... unsure if that would be valuable) In all cases I took the names from the methods as declared in the relevant trait. In some cases I had to prepend the names with _ otherwise there were errors about un-used variables. I'm uneasy with the inconsistency... do they all need to be like that? Is there a way to generate an alternate impl or use a different name (`_`?) in the cases where the arguments are not used? Lastly the gensym addition to Ident I implemented largely as suggested, but I want to point out it's a little circuitous (at least, as far as I understand it). `cx.ident_of(name)` is just `Ident::from_str`, so we create an Ident then another Ident from it. `Ident::with_empty_ctxt(Symbol::gensym(string))` may or may not be equivalent, I don't know if it's important to intern it _then_ gensym it. It seems like either we could use that, or if we do want a new method to make this convenient, it could be on Ident instead (`from_str_gensymed`?)
2018-04-19Fix some of the __names in the commentsJames Sanderson-13/+13
2018-04-19Gensym remaining identifiersJames Sanderson-5/+5
2018-04-19Don't prepend deriving-generated attributes with _James Sanderson-3/+3
2018-04-15Provide better names for builtin deriving-generated attributesJames Sanderson-14/+14
2018-04-15Auto merge of #49881 - varkor:partialord-opt, r=Manishearthbors-91/+212
Fix derive(PartialOrd) and optimise final field operation ```rust // Before (`lt` on 2-field struct) self.f1 < other.f1 || (!(other.f1 < self.f1) && (self.f2 < other.f2 || (!(other.f2 < self.f2) && (false) )) ) // After self.f1 < other.f1 || (!(other.f1 < self.f1) && self.f2 < other.f2 ) // Before (`le` on 2-field struct) self.f1 < other.f1 || (!(other.f1 < self.f1) && (self.f2 < other.f2 || (!(other.f2 < self.f2) && (true) )) ) // After self.f1 < other.f1 || (self.f1 == other.f1 && self.f2 <= other.f2 ) ``` (The big diff is mainly because of a past faulty rustfmt application that I corrected 😒) Fixes #49650 and fixes #49505.
2018-04-12Abstract cs_eq for partial_eqvarkor-50/+27
2018-04-12Improve the comment for cs_fold1varkor-2/+9
2018-04-12Update partial_ord codegen summaryvarkor-3/+10
2018-04-11Remove redundant operation in derive[PartialEq]varkor-28/+58
2018-04-11Optimise the last field operations in derive[PartialOrd]varkor-51/+72
2018-04-11Add cs_fold1 for better derivesvarkor-17/+92