- 25 11月, 2013 5 次提交
-
-
由 Corey Richardson 提交于
Closes #10623
-
由 bors 提交于
Issue #8763 is about improving a particular error message. * added case & better error message for "impl trait for module" * added compile-fail test trait-impl-for-module.rs * updated copyright dates * revised compile-fail test trait-or-new-type-instead (the error message for the modified test is still unclear, but that's a different bug https://github.com/mozilla/rust/issues/8767)
-
由 Leah Hanson 提交于
* added case & better error message for "impl trait for module" * used better way to print the module * switched from //error-pattern to //~ ERROR * added compile-fail test trait-impl-for-module.rs * revised compile-fail test trait-or-new-type-instead (the error message for the modified test is still unclear, but that's a different bug) * added FIXME to trait-or-new-type-instead
-
由 bors 提交于
-
由 Léo Testard 提交于
-
- 24 11月, 2013 8 次提交
-
-
由 bors 提交于
r? @Luqmana
-
由 Corey Richardson 提交于
-
由 bors 提交于
Fixes #4244.
-
由 bors 提交于
-
由 bors 提交于
With these changes I was able to cross compile for windows from a linux box. (Using the mingw-w64 package on Debian Testing). Fixed a bug where the `target_family` cfg would be wrong when targeting something with a different value than the host. (i.e windows -> unix or unix -> windows). Also, removed `LIBUV_FLAGS` in `mk/rt.mk` because of the redundancy between it and `CFG_GCCISH_CFLAGS_(target)`. After this we can create a snapshot and migrate to mingw64 instead of mingw32.
-
由 bors 提交于
This is based off of @blake2-ppc's work on #9429. That PR bitrotted and I haven't been able to contact the original author so I decided to take up the cause. Overview ====== `Mut` encapsulates a mutable, non-nullable slot. The `Cell` type is currently used to do this, but `Cell` is much more commonly used as a workaround for the inability to move values into non-once functions. `Mut` provides a more robust API. `Mut` duplicates the semantics of borrowed pointers with enforcement at runtime instead of compile time. ```rust let x = Mut::new(0); { // make some immutable borrows let p = x.borrow(); let y = *p.get() + 10; // multiple immutable borrows are allowed simultaneously let p2 = x.borrow(); // this would throw a runtime failure // let p_mut = x.borrow_mut(); } // now we can mutably borrow let p = x.borrow_mut(); *p.get() = 10; ``` `borrow` returns a `Ref` type and `borrow_mut` returns a `RefMut` type, both of which are simple smart pointer types with a single method, `get`, which returns a reference to the wrapped data. This also allows `RcMut<T>` to be deleted, as it can be replaced with `Rc<Mut<T>>`. Changes ====== I've done things a little bit differently than the original proposal. * I've added `try_borrow` and `try_borrow_mut` methods that return `Option<Ref<T>>` and `Option<RefMut<T>>` respectively instead of failing on a borrow check failure. I'm not totally sure when that'd be useful, but I don't see any reason to not put them in and @cmr requested them. * `ReadPtr` and `WritePtr` have been renamed to `Ref` and `RefMut` respectively, as `Ref` is to `ref foo` and `RefMut` is to `ref mut foo` as `Mut` is to `mut foo`. * `get` on `MutRef` now takes `&self` instead of `&mut self` for consistency with `&mut`. As @alexcrichton pointed, out this violates soundness by allowing aliasing `&mut` references. * `Cell` is being left as is. It solves a different problem than `Mut` is designed to solve. * There are no longer methods implemented for `Mut<Option<T>>`. Since `Cell` isn't going away, there's less of a need for these, and I didn't feel like they provided a huge benefit, especially as that kind of `impl` is very uncommon in the standard library. Open Questions ============ * `Cell` should now be used exclusively for movement into closures. Should this be enforced by reducing its API to `new` and `take`? It seems like this use case will be completely going away once the transition to `proc` and co. finishes. * Should there be `try_map` and `try_map_mut` methods along with `map` and `map_mut`?
-
由 Huon Wilson 提交于
Fixes #4244.
-
由 Steven Fackler 提交于
-
- 23 11月, 2013 22 次提交
-
-
由 Corey Richardson 提交于
-
由 Luqman Aden 提交于
-
由 bors 提交于
These are super boring. I can add tests if really desired, but they'd be long and even more boring than the methods.
-
由 Corey Richardson 提交于
-
由 Luqman Aden 提交于
-
由 Steven Fackler 提交于
-
由 Steven Fackler 提交于
-
由 Steven Fackler 提交于
-
由 Steven Fackler 提交于
-
由 Steven Fackler 提交于
-
由 Steven Fackler 提交于
-
由 Steven Fackler 提交于
-
由 Steven Fackler 提交于
Rc<Mut<T>> should be used instead
-
由 Steven Fackler 提交于
Based off of blake2-ppc's work in #9429.
-
由 Luqman Aden 提交于
-
由 Luqman Aden 提交于
-
-
-
由 bors 提交于
I cannot tell whether the original comment was unsure about the arithmetic calculations, or if it was unsure about the assumptions being made about the alignment of the current allocation pointer. The arithmetic calculation looks fine to me, though. This technique is documented e.g. in Henry Warren's "Hacker's Delight" (section 3-1). (I am sure one can find it elsewhere too, its not an obscure property.)
-
由 bors 提交于
I added a test case which does not compile today, and required changes on privacy's side of things to get right. Additionally, this moves a good bit of logic which did not belong in reachability into privacy. All of reachability should solely be responsible for determining what the reachable surface area of a crate is given the exported surface area (where the exported surface area is that which is usable by external crates). Privacy will now correctly figure out what's exported by deeply looking through reexports. Previously if a module were reexported under another name, nothing in the module would actually get exported in the executable. I also consolidated the phases of privacy to be clearer about what's an input to what. The privacy checking pass no longer uses the notion of an "all public" path, and the embargo visitor is no longer an input to the checking pass. Currently the embargo visitor is built as a saturating analysis because it's unknown what portions of the AST are going to get re-exported. This also cracks down on exported methods from impl blocks and trait blocks. If you implement a private trait, none of the symbols are exported, and if you have an impl for a private type none of the symbols are exported either. On the other hand, if you implement a public trait for a private type, the symbols are still exported. I'm unclear on whether this last part is correct, but librustc will fail to link unless it's in place.
-
由 Alex Crichton 提交于
I added a test case which does not compile today, and required changes on privacy's side of things to get right. Additionally, this moves a good bit of logic which did not belong in reachability into privacy. All of reachability should solely be responsible for determining what the reachable surface area of a crate is given the exported surface area (where the exported surface area is that which is usable by external crates). Privacy will now correctly figure out what's exported by deeply looking through reexports. Previously if a module were reexported under another name, nothing in the module would actually get exported in the executable. I also consolidated the phases of privacy to be clearer about what's an input to what. The privacy checking pass no longer uses the notion of an "all public" path, and the embargo visitor is no longer an input to the checking pass. Currently the embargo visitor is built as a saturating analysis because it's unknown what portions of the AST are going to get re-exported.
-
由 Felix S. Klock II 提交于
I cannot tell whether the original comment was unsure about the arithmetic calculations, or if it was unsure about the assumptions being made about the alignment of the current allocation pointer. The arithmetic calculation looks fine to me, though. This technique is documented e.g. in Henry Warren's "Hacker's Delight" (section 3-1). (I am sure one can find it elsewhere too, its not an obscure property.)
-
- 22 11月, 2013 5 次提交
-
-
由 bors 提交于
This can be used to grab the attention of a debugger, and unlike `abort` execution can be resumed.
-
由 Daniel Micay 提交于
This can be used to grab the attention of a debugger, and unlike `abort` execution can be resumed.
-
由 bors 提交于
-
由 bors 提交于
Add a test for the case I mentioned on #10599.
-
由 Huon Wilson 提交于
-