485 Commits

Author SHA1 Message Date
Irina Popa
b63d7e2b1c Rename trans to codegen everywhere. 2018-05-17 15:08:30 +03:00
kennytm
39129a5492
Rollup merge of #50752 - GuillaumeGomez:more-error-code-in-libsyntax-ext, r=frewsxcv
Add missing error codes in libsyntax-ext asm
2018-05-17 05:18:12 +08:00
Guillaume Gomez
30d950231e Add missing error codes in libsyntax-ext asm 2018-05-15 14:29:57 +02:00
bors
d711dc9d57 Auto merge of #50011 - varkor:partialord-opt-ii, r=Manishearth
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-15 03:14:46 +00:00
Esteban Küber
3f6b3bbace Improve format string errors
- Point at format string position inside the formatting string
 - Explain that argument names can't start with an underscore
2018-05-10 09:09:58 -07:00
Andre Bogus
e333725664 use fmt::Result where applicable 2018-05-09 02:01:37 +02:00
Shotaro Yamada
39df2231bb Fix assertion message generation 2018-05-06 12:13:32 +09:00
bors
e82261dfbb Auto merge of #50413 - kennytm:rollup, r=kennytm
Rollup of 12 pull requests

Successful merges:

 - #50302 (Add query search order check)
 - #50320 (Fix invalid path generation in rustdoc search)
 - #50349 (Rename "show type declaration" to "show declaration")
 - #50360 (Clarify wordings of the `unstable_name_collision` lint.)
 - #50365 (Use two vectors in nearest_common_ancestor.)
 - #50393 (Allow unaligned reads in constants)
 - #50401 (Revert "Implement FromStr for PathBuf")
 - #50406 (Forbid constructing empty identifiers from concat_idents)
 - #50407 (Always inline simple BytePos and CharPos methods.)
 - #50416 (check if the token is a lifetime before parsing)
 - #50417 (Update Cargo)
 - #50421 (Fix ICE when using a..=b in a closure.)

Failed merges:
2018-05-03 20:45:54 +00:00
Michael Lamparski
cd54b3e448 forbid empty identifiers from concat_idents 2018-05-02 22:58:28 -04:00
Seiichi Uchida
9b3aea602c
Remove Option from the return type of Attribute::name() 2018-05-02 11:32:34 +02:00
Irina Popa
04fa0e7bb3 rustc_target: move in syntax::abi and flip dependency. 2018-04-26 17:49:16 +03:00
varkor
6805e5abd2 Update comments to UFCS style 2018-04-25 11:26:47 +01:00
varkor
98e3e82ece Use UFCS 2018-04-25 11:26:47 +01:00
varkor
6330bf24fe Fix handling of None 2018-04-25 11:26:47 +01:00
varkor
6eb4f0f7fd 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.
2018-04-25 11:26:47 +01:00
bors
0c5740feb2 Auto merge of #49986 - zofrex:better-derived-argument-names, r=Manishearth
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-25 01:50:56 +00:00
James Sanderson
27b0f1e193 Gensym arguments for format macro 2018-04-24 21:31:22 +01:00
James Sanderson
1a72d6dcd1 Fix some of the __names in the comments 2018-04-19 20:17:06 +01:00
James Sanderson
b9b650c412 Gensym remaining identifiers 2018-04-19 20:06:35 +01:00
James Sanderson
a3241d1350 Don't prepend deriving-generated attributes with _ 2018-04-19 13:57:43 +01:00
James Sanderson
4ae9488ce8 Provide better names for builtin deriving-generated attributes 2018-04-15 20:51:10 +01:00
bors
bc001fa07f Auto merge of #49881 - varkor:partialord-opt, r=Manishearth
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-15 03:54:15 +00:00
Guillaume Gomez
5d52ef5091 Add tests and longer error explanation 2018-04-14 17:25:35 +02:00
Guillaume Gomez
44c686113f Add error codes for libsyntax_ext 2018-04-14 17:25:35 +02:00
varkor
105c518094 Abstract cs_eq for partial_eq 2018-04-12 01:53:21 +01:00
varkor
60dc4f8ec8 Improve the comment for cs_fold1 2018-04-12 01:33:52 +01:00
varkor
88a9c69121 Update partial_ord codegen summary 2018-04-12 00:51:08 +01:00
varkor
1ce06d0932 Remove redundant operation in derive[PartialEq] 2018-04-11 16:12:28 +01:00
varkor
3238e0d098 Optimise the last field operations in derive[PartialOrd] 2018-04-11 16:12:28 +01:00
varkor
44efb05edf Add cs_fold1 for better derives 2018-04-11 16:12:23 +01:00
varkor
59ee333a0e Fix derive(PartialOrd) implementation 2018-04-11 13:19:10 +01:00
Cameron Hart
15d1c4d213 Implementation of #[repr(packed(n))] RFC 1399. 2018-04-11 22:13:13 +10:00
Mark Simulacrum
c115cc655c Move deny(warnings) into rustbuild
This permits easier iteration without having to worry about warnings
being denied.

Fixes #49517
2018-04-08 16:59:14 -06:00
Vadim Petrochenkov
b3b5ef186c Remove more duplicated spans 2018-04-06 11:50:49 +03:00
Vadim Petrochenkov
62000c072e Rename ast::Variant_::name into ident + Fix rebase 2018-04-06 11:48:19 +03:00
Vadim Petrochenkov
43ad972318 Use Span::apply_mark where possible 2018-04-06 11:48:19 +03:00
Vadim Petrochenkov
e2afefd80b Get rid of SpannedIdent 2018-04-06 11:48:19 +03:00
Vadim Petrochenkov
8719d1ed05 Rename PathSegment::identifier to ident 2018-04-06 11:46:26 +03:00
Vadim Petrochenkov
baae274fb7 Use Span instead of SyntaxContext in Ident 2018-04-06 11:46:26 +03:00
Austin Bonander
5d74990ceb expand macro invocations in extern {} blocks 2018-04-03 13:16:11 -07:00
Austin Bonander
7c0124dd35 Expand attribute macros on statements and expressions.
Retains the `stmt_expr_attributes` feature requirement for attributes on expressions.

closes #41475
cc #38356
2018-04-02 01:56:12 -07:00
bors
085c4b43b5 Auto merge of #49201 - Phlosioneer:add-trivial-size-hints, r=SimonSapin
Implement some trivial size_hints for various iterators

This also implements ExactSizeIterator where applicable.

Addresses most of the Iterator traits mentioned in #23708.

I intend to do more, but I don't want to make the PR too large.
2018-03-31 06:40:56 +00:00
bors
14ac1b5faa Auto merge of #49279 - varkor:generated-closure-return-type, r=alexcrichton
Fix implicit closure return type generation for libsyntax

The `lambda` function for constructing closures in libsyntax was explicitly setting the return type to `_`, which resulted in incorrect corresponding syntax (as `|| -> _ x` is not valid, without the enclosing brackets). This meant the generated code, when printed, was invalid.

I also took the opportunity to slightly improve the generated code for the `RustcEncodable::encode` method for unit structs.

Fixes #42213.
2018-03-27 07:16:29 +00:00
varkor
ad50f3389a Optimise decode return expression for unit structs 2018-03-22 16:35:54 +00:00
varkor
0d278ca6a8 Use FunctionRetTy::Default rather than an explicit TyKind::Infer for lambda-building
This prevents explicit `-> _` return type annotations for closures generated by `lambda`.
2018-03-22 15:55:57 +00:00
Phlosioneer
619003d1d4 Implement some trivial size_hints for various iterators
This also implements ExactSizeIterator where applicable.

Addresses most of the Iterator traits mentioned in #23708.
2018-03-20 05:33:59 -04:00
Lymia Aluysia
fad1648e0f
Initial implementation of RFC 2151, Raw Identifiers 2018-03-18 10:07:19 -05:00
bors
5e3ecdce4e Auto merge of #48917 - petrochenkov:import, r=oli-obk
syntax: Make imports in AST closer to the source and cleanup their parsing

This is a continuation of https://github.com/rust-lang/rust/pull/45846 in some sense.
2018-03-18 01:50:52 +00:00
Vadim Petrochenkov
f88162654d Rename Span::empty to Span::shrink_to_lo, add Span::shrink_to_hi 2018-03-17 22:12:21 +03:00
Vadim Petrochenkov
5d06c890fe syntax: Make _ an identifier 2018-03-17 22:08:07 +03:00