Commit Graph

36046 Commits

Author SHA1 Message Date
bors c594959cdf auto merge of #19388 : nick29581/rust/rc-show, r=alexcrichto
r? @huonw or @alexcrichton

Apparently, we have previously rejected an RFC like this. However, since then we removed `{:?}` and so without this debugging gets really difficult as soon as there is a RefCell anywhere, so I believe there is more benefit to adding these impls than there was before. By using "try_borrow" we can avoid panicing in `Show` (I think).

@ huon in response to a comment in #19254: I noticed that `drop()` checks for the ptr being null, so I checked here too. Now I am checking for both, if you're confident I can change to only checking `strong()`.
2015-01-01 06:36:24 +00:00
Nick Cameron f0976e2cf3 Reviewer change 2015-01-01 18:00:32 +13:00
Nick Cameron c8c0391519 Add some impls of Show (RefCell, Weak, some resolve types) 2015-01-01 17:54:15 +13:00
bors 47b8479e73 auto merge of #20363 : japaric/rust/moar-uc, r=nmatsakis
The the last argument of the `ItemDecorator::expand` method has changed to `Box<FnMut>`. Syntax extensions will break.

[breaking-change]

---

This PR removes pretty much all the remaining uses of boxed closures from the libraries. There are still boxed closures under the `test` directory, but I think those should be removed or replaced with unboxed closures at the same time we remove boxed closures from the language.

In a few places I had to do some contortions (see the first commit for an example) to work around issue #19596. I have marked those workarounds with FIXMEs. In the future when `&mut F where F: FnMut` implements the `FnMut` trait, we should be able to remove those workarounds. I've take care to avoid placing the workaround functions in the public API.

Since `let f = || {}` always gets type checked as a boxed closure, I have explictly annotated those closures (with e.g. `|&:| {}`) to force the compiler to type check them as unboxed closures.

Instead of removing the type aliases (like `GetCrateDataCb`), I could have replaced them with newtypes. But this seemed like overcomplicating things for little to no gain.

I think we should be able to remove the boxed closures from the languge after this PR lands. (I'm being optimistic here)

r? @alexcrichton or @aturon 
cc @nikomatsakis
2015-01-01 04:01:02 +00:00
Jorge Aparicio 10bbf69488 rustc_trans: replace EnterPatterns alias with an unboxed closure 2014-12-31 22:50:27 -05:00
Jorge Aparicio c8cf3a307b rustc: replace pick alias with an unboxed closure 2014-12-31 22:50:27 -05:00
Jorge Aparicio 1d21dad1d2 rustc: replace GetCrateDataCb alias with an unboxed closure 2014-12-31 22:50:27 -05:00
Jorge Aparicio 63af3e6cd2 time: unbox closures used in let bindings 2014-12-31 22:50:27 -05:00
Jorge Aparicio ab402c0744 syntax: unbox closures used in let bindings 2014-12-31 22:50:27 -05:00
Jorge Aparicio 12dd7781d6 std: unbox closures used in let bindings 2014-12-31 22:50:27 -05:00
Jorge Aparicio fb14dad4d6 rustdoc: unbox closures used in let bindings 2014-12-31 22:50:27 -05:00
Jorge Aparicio e9ddd825ba rustc_typeck: unbox closures used in let bindings 2014-12-31 22:50:27 -05:00
Jorge Aparicio e47035b9a5 rustc_trans: unbox closures used in let bindings 2014-12-31 22:50:27 -05:00
Jorge Aparicio 1e4bbefae1 rustc_resolve: unbox closures used in let bindings 2014-12-31 22:50:27 -05:00
Jorge Aparicio a49cdb8c36 rustc_driver: unbox closures used in let bindings 2014-12-31 22:50:27 -05:00
Jorge Aparicio 28ea99eaa6 rustc_borrowck: unbox closures used in let bindings 2014-12-31 22:50:26 -05:00
Jorge Aparicio a6f3053208 rustc_back: unbox closures used in let bindings 2014-12-31 22:50:26 -05:00
Jorge Aparicio 06408b4dd3 rustc: unbox closures used in let bindings 2014-12-31 22:50:26 -05:00
Jorge Aparicio 16a4ba8fa5 getopts: unbox closures used in let bindings 2014-12-31 22:50:26 -05:00
Jorge Aparicio ddb4e43fa5 core: unbox closures used in let bindings 2014-12-31 22:50:26 -05:00
Jorge Aparicio bcc2120c21 rustc_borrowck: unbox closures used in function arguments 2014-12-31 22:50:26 -05:00
Jorge Aparicio 24b49228f0 rustc_trans: unbox closures used in function arguments 2014-12-31 22:50:26 -05:00
Jorge Aparicio 5de9f47e49 rustc: unbox closures used in function arguments 2014-12-31 22:50:26 -05:00
Jorge Aparicio 70ce68eed4 syntax: unbox closures used in function arguments 2014-12-31 22:50:26 -05:00
Jorge Aparicio 371f04d433 std: unbox closures used in function arguments 2014-12-31 22:50:25 -05:00
bors 7d4f4876d6 auto merge of #20374 : nikomatsakis/rust/assoc-types, r=nikomatsakis
These mostly derive from problems that @japaric encountered.

r? @pcwalton
2015-01-01 01:20:56 +00:00
Jorge Aparicio a17c2b60e1 collections: fix fallout 2014-12-31 19:14:44 -05:00
Jorge Aparicio ea94a90488 unicode: unbox closures used in function arguments 2014-12-31 19:14:44 -05:00
Niko Matsakis 004a567de3 Convert TODO to FIXME for now 2014-12-31 16:23:49 -05:00
Niko Matsakis 7ae1c6bc26 Remove a TODO now that we handle normalization-derived bounds properly. 2014-12-31 16:02:58 -05:00
bors 10d99a9734 auto merge of #20360 : alexcrichton/rust/rollup, r=alexcrichton 2014-12-31 21:01:42 +00:00
Niko Matsakis cadd4335b4 Fix whitespace. 2014-12-31 15:05:46 -05:00
Niko Matsakis 0a2d531b94 Teach trans to drain fulfillment context. japaric encountered problems
due to this but we were not able to isolate a smaller test case.
2014-12-31 14:42:06 -05:00
Niko Matsakis 67dab2af81 Include projection bounds in superpredicates.
Fixes #19451.
Fixes #20345.
2014-12-31 14:41:39 -05:00
Alex Crichton 139f44bae8 rollup merge of #20375: brson/windistfix 2014-12-31 11:13:37 -08:00
Alex Crichton aec67c2ee0 Revert "std: Re-enable at_exit()"
This reverts commit 9e224c2bf1.

Conflicts:
	src/libstd/sys/windows/os.rs
2014-12-31 10:20:31 -08:00
Brian Anderson 7608dbad65 mk: Fix the location of a temp dir when building installer on win 2014-12-31 10:06:21 -08:00
Niko Matsakis 9675488ef9 Add tests for two random issues that seem to be fixed on this branch.
Fixes #20346.
Fixes #20371.
2014-12-31 12:52:16 -05:00
Niko Matsakis 6cb425d964 Rework normalization so that it works recursively, since the types extracted from an impl are potentially in need of normalization. This also lays groundwork for further cleanup in other areas by disconnecting normalization from the fulfillment context. 2014-12-31 12:50:30 -05:00
Alex Crichton 582cba183f Test fixes and rebase conflicts 2014-12-31 08:33:13 -08:00
Niko Matsakis 0aa7ba9f5e Normalize bounds also in the UFCS cases (and get more systematic about it) 2014-12-31 11:16:28 -05:00
Niko Matsakis 90252b8ddb Add ignore pretty. 2014-12-31 11:15:42 -05:00
Niko Matsakis 23eec0c955 Incorporate fix from japaric for cross-crate ICE 2014-12-31 11:15:42 -05:00
Niko Matsakis 4f05ec7d2c Patch projection to not be so eager to unify type variables. This code
is still probably wrong since it fails to incorporate the ambiguity
resolution measures that `select` uses. Also, made more complicated by
the fact that trait object types do not impl their own traits yet.
2014-12-31 11:15:42 -05:00
Alex Crichton 67d13883f8 rollup merge of #20061: aturon/stab-2-vec-slice
Conflicts:
	src/libcollections/slice.rs
	src/libcollections/vec.rs
	src/libstd/sys/windows/os.rs
2014-12-30 18:51:51 -08:00
Aaron Turon 6abfac083f Fallout from stabilization 2014-12-30 17:06:08 -08:00
Alex Crichton dd0f29ad0f rollup merge of #20353: alexcrichton/snapshots 2014-12-30 16:26:24 -08:00
Alex Crichton 49f14d36e1 rollup merge of #20350: fhahn/issue-20340-rustdoc-version
Patch for #20340. `rustdoc --version` panics because it uses `rustc_driver::version`, which in turn checks the `verbose` flag, which was not defined for rustdoc.  In this patch I have added a verbose flag to rustdoc, because I think it should be useful for other things besides --version.

Another possible fix would be to check if a verbose option was defined in `rustc_driver` or add an extra `version` function for rustdoc.
2014-12-30 16:26:24 -08:00
Alex Crichton 38f9805f11 rollup merge of #20348: frewsxcv/rm-reexports
Part of #19253

[breaking-change]
2014-12-30 16:26:22 -08:00
Alex Crichton 04f42212a3 rollup merge of #20344: brson/srctarballs
Easier for scripts to figure out which artifact is the source code.
2014-12-30 16:26:21 -08:00