Commit Graph

47497 Commits

Author SHA1 Message Date
bors
293966694c Auto merge of #28816 - petrochenkov:unistruct, r=nrc
This patch uses the same data structures for structs and enum variants in AST and HIR. These changes in data structures lead to noticeable simplification in most of code dealing with them.
I didn't touch the top level, i.e. `ItemStruct` is still `ItemStruct` and not `ItemEnum` with one variant, like in the type checker.
As part of this patch, structures and variants get the `kind` field making distinction between "normal" structs, tuple structs and unit structs explicit instead of relying on the number of fields and presence of constructor `NodeId`. In particular, we can now distinguish empty tuple structs from unit structs, which was impossible before! Comprehensive tests for empty structs are added and some improvements to empty struct feature gates are made. Some tests don't pass due to issue https://github.com/rust-lang/rust/issues/28692 , they are still there for completeness, but are commented out.
This patch fixes issue mentioned in https://github.com/rust-lang/rust/issues/16819#issuecomment-139509861, now emptiness of tuple structs is checked after expansion.
It also touches https://github.com/rust-lang/rust/issues/28750 by providing span for visit_struct_def
cc https://github.com/rust-lang/rust/pull/28336

r? @nrc
2015-10-14 04:21:58 +00:00
bors
c0dc2cb81d Auto merge of #29026 - steveklabnik:rollup, r=steveklabnik
- Successful merges: #28988, #28989, #28990, #28997, #29007, #29015
- Failed merges: #28906
2015-10-14 00:06:32 +00:00
Vladimir Rutsky
fda2f733c5 fix link on std::result::Result
The link is broken here: <https://doc.rust-lang.org/std/io/#types>.

Looks like crate documentation generator uses only first paragraph of the module documentation and 
so doesn't resolve the link defined below.
2015-10-14 02:17:31 +03:00
Marcello Seri
1454b426f0 Revert "fixups"
This reverts commit 5b8335ede4.
2015-10-13 23:21:05 +01:00
Jose Narvaez
19a2a769a5 Rustfmt-ing librustc_bitflags. 2015-10-13 23:14:32 +01:00
Steve Klabnik
70c70b739f Document the free functions of std::iter
Flesh the docs out with examples.
2015-10-13 14:46:17 -04:00
Seeker14491
12224bec21 Unhide some code from the Traits section
Having this code section hidden is misleading because it makes it look like implementing Circle for Foo automatically makes Foo implement Shape.
2015-10-13 13:45:10 -05:00
Steve Klabnik
1537545133 Rollup merge of #29015 - dripton:master, r=alexcrichton
Just a single-character typo fix.
2015-10-13 13:09:53 -04:00
Steve Klabnik
53bec74bc5 Rollup merge of #29007 - dnwade:patch-2, r=alexcrichton
r? @steveklabnik
2015-10-13 13:09:53 -04:00
Steve Klabnik
7868fbd824 Rollup merge of #28997 - bezelga:master, r=steveklabnik
Fixing some words in the beginning of the Ownership system chapters.
2015-10-13 13:09:53 -04:00
Steve Klabnik
be76fb6410 Rollup merge of #28990 - ahmedcharles:libarena, r=nrc 2015-10-13 13:09:53 -04:00
Steve Klabnik
749e93d313 Rollup merge of #28989 - ahmedcharles:liballoc_system, r=nrc 2015-10-13 13:09:52 -04:00
Steve Klabnik
5ae9456629 Rollup merge of #28988 - ahmedcharles:liballoc_jemalloc, r=nrc 2015-10-13 13:09:52 -04:00
Guillaume Gomez
4618aada4d Add E0511 error explanation 2015-10-13 17:42:17 +02:00
Oliver Schneider
09d3adf52e implement RFC 1229
const eval errors outside of true constant enviroments are not reported anymore, but instead forwarded to a lint.
2015-10-13 17:01:03 +02:00
Marcello Seri
5b8335ede4 fixups 2015-10-13 15:12:34 +01:00
Marcello Seri
1bdf4ad8dc rustfmt libfmt_macros 2015-10-13 15:10:51 +01:00
Vadim Petrochenkov
03468330bd Some additional tests 2015-10-13 17:00:47 +03:00
Andrew Paseltiner
1162b3752c Correct spelling in docs 2015-10-13 09:44:11 -04:00
Vadim Petrochenkov
607b8c3892 Comment on the purpose(s) of NodeId in VariantData 2015-10-13 16:18:33 +03:00
Vadim Petrochenkov
46750d0409 Merge VariantData and VariantData_ 2015-10-13 15:19:27 +03:00
Vadim Petrochenkov
a5225cbe92 Fix rebase 2 2015-10-13 15:19:26 +03:00
Vadim Petrochenkov
40aa09e4c9 Merge struct fields and struct kind 2015-10-13 15:19:25 +03:00
Vadim Petrochenkov
30af54dede Dict -> Struct, StructDef -> VariantData, def -> data 2015-10-13 15:19:24 +03:00
Vadim Petrochenkov
f4e3851aa7 Fix rebase 2015-10-13 15:19:22 +03:00
Vadim Petrochenkov
b404ded15b Fix failing privacy test 2015-10-13 15:19:21 +03:00
Vadim Petrochenkov
8a12c19171 Test and gate empty structures and variants better 2015-10-13 15:19:20 +03:00
Vadim Petrochenkov
beda1f88a7 Provide span for visit_struct_def + remove some dead code 2015-10-13 15:19:19 +03:00
Vadim Petrochenkov
877c35e8a2 Remove now redundant NodeId from Variant 2015-10-13 15:19:18 +03:00
Vadim Petrochenkov
495566ee61 Decouple structure kinds from NodeIds 2015-10-13 15:19:17 +03:00
Vadim Petrochenkov
2314ab29c2 Unify structures and enum variants in HIR 2015-10-13 15:19:16 +03:00
Vadim Petrochenkov
ea47c2b6b3 Unify structures and enum variants in AST 2015-10-13 15:19:15 +03:00
Ben S
b40163beb9 Make the Metadata struct Clone
This commit adds #[derive(Clone)] to std::fs::Metadata, making that struct
cloneable. Although the exact contents of that struct differ between OSes,
they all have it contain only value types, meaning that the data can be re-used without repercussions.

It also adds #[derive(Clone)] to every type used by that struct across all
OSes, including the various Unix `stat` structs and Windows's
`WIN32_FILE_ATTRIBUTE_DATA`.
2015-10-13 13:06:00 +01:00
Jose Narvaez
82ec34332f Rustfmt-ing libarena. 2015-10-13 10:53:57 +01:00
Jose Narvaez
94946db60d Manually alligned comments. 2015-10-13 10:46:41 +01:00
Jose Narvaez
5943af31e7 Re-running updated rustfmt on liblog. 2015-10-13 10:44:09 +01:00
Jose Narvaez
3db5012680 rustfmt suggested changes. 2015-10-13 10:36:53 +01:00
Guillaume Gomez
35f8184f7d Update test error compilation message for E0512 2015-10-13 10:26:45 +02:00
Florian Hahn
b21ae1ab1a Reword note about missing trait implementation 2015-10-13 09:59:46 +02:00
Scott Olson
0d3d6e40fd Fix typo in custom allocator docs. 2015-10-13 01:23:42 -06:00
Yoshito Komatsu
6ee31347b3 Fix some typos 2015-10-13 15:59:59 +09:00
Seo Sanghyeon
22dc408217 Avoid using getDataLayout, deprecated in LLVM 3.7 2015-10-13 15:11:59 +09:00
David Ripton
07e0161106 Typo fix 2015-10-12 23:24:27 -04:00
bors
ec4362da56 Auto merge of #28993 - frewsxcv:regression-test-17336, r=alexcrichton
Closes #17336
2015-10-13 03:19:11 +00:00
Vadim Petrochenkov
ab671552c3 Refactor attr::Stability
Stricter checking + enforcement of invariants at compile time
2015-10-13 06:01:31 +03:00
Chris C Cerami
42e0b8bc7e Fix Lifetime Elision link in lifetimes.md 2015-10-12 22:24:51 -04:00
bors
60c18c8f34 Auto merge of #28987 - ahmedcharles:liballoc, r=brson 2015-10-13 00:37:09 +00:00
Dan W.
6406dcb2c4 typo 2015-10-12 15:29:20 -07:00
Peter Marheine
039f0f4e7e win64/msvc: large or oddly-sized types pass by-ref 2015-10-12 16:23:47 -06:00
Ariel Ben-Yehuda
ed2a11da89 require a method callee's type to outlive the call
This rather crucial requirement was not checked. In most cases, that
didn't cause any trouble because the argument types are required to
outlive the call and are subtypes of a subformula of the callee type.

However, binary ops are taken by ref only indirectly, without it being
marked in the argument types, which led to the argument types not being
constrained anywhere causing spurious errors (as these are basically
unconstrainable, I don't think this change can break code). Of course,
the old way was also incorrent with contravariance, but that is still
unsound for other reasons.

This also improves rustc::front to get RUST_LOG to *somewhat* work.

Fixes #28999
2015-10-12 23:51:59 +03:00