Commit Graph

32705 Commits

Author SHA1 Message Date
Michael Kainer
065a5b0424 Fixes ICE when using reexported unit-like structs
Fixes that unit-like structs cannot be used if they are reexported and
used in another crate. The compiler fails with an ICE, because unit-like
structs are exported as DefFn and the expression `UnitStruct` is
interpreted as function pointer instead of a call to the constructor.

To resolve this ambiguity tuple-like struct constructors are now exported
as CtorFn. When `rustc::metadata::decoder` finds a CtorFn it sets a new
flag `is_ctor` in DefFn to true.

Relevant changes are in `rustc::metadata::{encoder, decoder}` and in
`rustc::middle::ty`.

Closes #12660 and #16973.
2014-09-30 16:22:55 +02:00
bors
d2f8d4c505 auto merge of #17563 : brson/rust/wintcbfix, r=thestinger
This is the bare minimum to stop using split stacks on Windows, fixing https://github.com/rust-lang/rust/issues/13259 and #14742, by turning on stack probes for all functions and disabling compiler and runtime support for split stacks on Windows.

It does not restore the out-of-stack error message, which requires more runtime work.

This includes a test that the Windows TCB is no longer being clobbered, but the out-of-stack test itself is pretty weak, only testing that the program exits abnormally, not that it isn't writing to bogus memory, so I haven't truly verified that this is providing the safety we claim.

A more complete solution is in https://github.com/rust-lang/rust/pull/16388, which has some unresolved issues yet.

cc @Zoxc @klutzy @vadimcn
2014-09-30 06:47:25 +00:00
bors
7409050421 auto merge of #17468 : nick29581/rust/dst-bug-nostd, r=nikomatsakis
closes #17392 

r? @nikomatsakis 

Kind of a first draft because I'm not sure if this is the right approach. I believe the general idea of giving an error rather than an ICE in obligation_for_builtin_bound is right, but not sure about returning an Option, etc.

Also, could probably have a better error message.
2014-09-29 23:52:21 +00:00
Nick Cameron
1c36d1c71d Emit an error rather than ICEing for a missing built-in bound lang item.
closes #17392
2014-09-30 11:30:08 +13:00
bors
0c66796525 auto merge of #17475 : pnkfelix/rust/fix-17303, r=huonw
Add deallocate calls to the realloc-16687.rs test.

Fix #17303.
2014-09-29 21:12:16 +00:00
Brian Anderson
bdeb1d7386 Ignore win-tcb test on non-windows 2014-09-29 11:34:53 -07:00
bors
1f3cda8bd8 auto merge of #17629 : alexcrichton/rust/rollup, r=alexcrichton 2014-09-29 17:18:07 +00:00
Alex Crichton
d3e171861f Test fixes from the rollup 2014-09-29 10:13:31 -07:00
Alex Crichton
1ae44c2059 rollup merge of #17621 : sfackler/new-snap 2014-09-29 08:17:18 -07:00
Alex Crichton
dfbf32ff8a rollup merge of #17625 : Boddlnagg/lexer-fix 2014-09-29 08:15:03 -07:00
Alex Crichton
d00cf98ea9 rollup merge of #17623 : bkoropoff/issue-17607 2014-09-29 08:14:58 -07:00
Alex Crichton
1a18258d86 rollup merge of #17619 : wizeman/fix-perm 2014-09-29 08:14:50 -07:00
Alex Crichton
915511ec6d rollup merge of #17614 : nick29581/slice3 2014-09-29 08:14:39 -07:00
Alex Crichton
29216b5e5c rollup merge of #17613 : bkoropoff/issue-17593 2014-09-29 08:14:36 -07:00
Alex Crichton
ea3a3e9a7f rollup merge of #17602 : Tobba/defailbloat-static 2014-09-29 08:14:32 -07:00
Alex Crichton
86b1e6fd8c rollup merge of #17599 : Gankro/enum-ord 2014-09-29 08:14:29 -07:00
Alex Crichton
0358f31127 rollup merge of #17598 : bkoropoff/issue-17441 2014-09-29 08:14:27 -07:00
Alex Crichton
7784a8d397 rollup merge of #17592 : kmcallister/inline-asm-loc 2014-09-29 08:14:23 -07:00
Alex Crichton
b7c002aac1 rollup merge of #17586 : Sawyer47/test-16465 2014-09-29 08:14:19 -07:00
Alex Crichton
735d16b1b0 rollup merge of #17585 : sfackler/string-slice 2014-09-29 08:14:16 -07:00
Alex Crichton
e44393a953 rollup merge of #17582 : kmcallister/gc-box 2014-09-29 08:14:12 -07:00
Alex Crichton
55754ed893 rollup merge of #17577 : squeaky-pl/patch-1 2014-09-29 08:12:54 -07:00
Alex Crichton
792e32bcfc rollup merge of #17576 : kmcallister/hide-quotes 2014-09-29 08:12:51 -07:00
Alex Crichton
757fa6ffba rollup merge of #17573 : iliekturtles/17570-windows-installer-path 2014-09-29 08:12:48 -07:00
Alex Crichton
00009f9789 rollup merge of #17565 : akavel/patch-1 2014-09-29 08:12:45 -07:00
Alex Crichton
bb84afeba1 rollup merge of #17564 : japaric/fix-slicemut-docs 2014-09-29 08:12:42 -07:00
Alex Crichton
e786891d41 rollup merge of #17557 : sfackler/fuse-example 2014-09-29 08:12:37 -07:00
Alex Crichton
94c1b1f30c rollup merge of #17544 : eklitzke/master 2014-09-29 08:12:32 -07:00
Alex Crichton
5fae40c33a rollup merge of #17548 : cgaebel/master 2014-09-29 08:12:14 -07:00
Alex Crichton
01c25e6c7b rollup merge of #17542 : brson/devchannel 2014-09-29 08:12:09 -07:00
Alex Crichton
6c23789ad1 rollup merge of #17531 : tomjakubowski/rustdoc-where-clauses 2014-09-29 08:10:47 -07:00
Alex Crichton
655b7269c8 rollup merge of #17519 : pcwalton/unboxed-closure-move-syntax 2014-09-29 08:10:44 -07:00
Alex Crichton
1ebf456fb0 rollup merge of #17510 : MatejLach/find_fix 2014-09-29 08:10:32 -07:00
Tom Jakubowski
54831f128f rustdoc: Render where clauses as appropriate
Fix #16546
2014-09-29 06:38:47 -07:00
Ricardo M. Correia
991f506248 rustc: Fix permission denied error in 'ar' when lto is enabled
The reason that 'ar' can fail with permission denied is that when
link-time optimizations are enabled, rustc copies libraries into a
temporary directory, preserving file permissions, and subsequently
modifies them using 'ar'.

The modification can fail because some package managers may install
libraries in system directories as read-only files, which means the
temporary file also becomes read-only when it is copied.

I have fixed this by giving the temporary file's owner read+write
permissions after the copy.

I have also added a regression test for this issue.
2014-09-29 15:07:14 +02:00
bors
5079a10b1e auto merge of #17538 : brson/rust/winmk, r=alexcrichton 2014-09-29 12:43:13 +00:00
Patrick Reisert
9cc366311d Update ANTLR float suffix grammar
- Removes f128 from the grammar, which is no longer support in rustc
- The fragment modifier is added so it won't parse float suffix as a separate token
2014-09-29 12:52:35 +02:00
bors
40b86baca0 auto merge of #17409 : farcaller/rust/patch-1, r=huonw
Parser.parse_method now has a second argument, I assume ast::Inherited is the correct visibility in this case.
2014-09-29 10:08:04 +00:00
Vladimir Pouzanov
75d49c8203 Fixed quote_method!() implementation
Parser.parse_method now has a second argument, I assume ast::Inherited is the correct visibility in this case.
2014-09-29 09:45:36 +01:00
bors
eb816eee0f auto merge of #17535 : Manishearth/rust/patch-2, r=steveklabnik
It's a rather useful syntax, and non-obvious.

A friend of mine is learning Rust and was trying to find a way to easily do such an initialization — he couldn't find it in the guide and was pretty surprised when I showed him. Looks like something that should be mentioned.

r? @steveklabnik
2014-09-29 07:43:07 +00:00
bors
b9478ee251 auto merge of #17321 : apoelstra/rust/error-on-unknown-impl, r=alexcrichton
Followup to RFC 57.

Fixes #7607
Fixes #8767
Fixes #12729
Fixes #15060
2014-09-29 05:13:08 +00:00
Brian Koropoff
ae3d42ef0d Use the same JSON schema for encoding enums in PrettyEncoder as in Encoder
Closes issue #17607
2014-09-28 20:30:06 -07:00
Steven Fackler
fa419d3d21 Register new snapshots 2014-09-28 19:28:48 -07:00
bors
496b68d485 auto merge of #17533 : michaelwoerister/rust/function-call-locs, r=luqmana
This PR makes rustc emit debug locations for *all* call and invoke statements in LLVM IR, if they are contained within a function that debuginfo is enabled for. This is important because LLVM does not handle the case where a function body containing debuginfo is inlined into another function with debuginfo, but the inlined call statement does not have a debug location. In this case, LLVM will not know where (in terms of source code coordinates) the function was inlined to and we end up with some statements still linked to the source locations in there original, non-inlined function without any indication that they are indeed an inline-copy. Later, when generating DWARF from the IR, LLVM will interpret this as corrupt IR and abort.

Unfortunately, the undesirable case described above can still occur when using LTO. If there is a crate compiled without debuginfo calling into a crate compiled with debuginfo, we again end up with the conditions triggering the error. This is why some LTO tests still fail with the dreaded assertion, if the standard library was built with debuginfo enabled. That is, `RUSTFLAGS_STAGE2=-g make rustc-stage2` will succeed but `RUSTFLAGS_STAGE2=-g make check` will still fail after this PR has been merged. I will open a separate issue for this problem.
2014-09-29 01:03:06 +00:00
Brian Koropoff
69d570fbec Add regression test for issue #17441 2014-09-28 17:57:35 -07:00
Brian Koropoff
ca15637b7c Reject casts to unsized types and suggest use of reference or box
This prevents ICEs or less helpful diagnostics if typeck proceeds
further.  Closes issue #17441
2014-09-28 17:57:34 -07:00
Nick Cameron
2c589df6a2 Test for .. in range patterns 2014-09-29 11:45:20 +13:00
Brian Koropoff
cab84be812 Correctly populate trait impl map when checking for impl overlaps
Also fix an existing compile-fail test which was intended to cover
this case.

This closes issue #17593
2014-09-28 14:28:48 -07:00
Andrew Poelstra
bb5807919a Cleanup error messages for anonymous impl for types not declared in the current module
Followup to RFC 57.

Fixes #7607
Fixes #8767
Fixes #12729
Fixes #15060
2014-09-28 12:58:10 -05:00
Keegan McAllister
8826fdfe37 Keep ExpnId abstract by providing conversions 2014-09-28 09:25:48 -07:00