librustc: Make the compiler ignore purity.
For bootstrapping purposes, this commit does not remove all uses of the keyword "pure" -- doing so would cause the compiler to no longer bootstrap due to some syntax extensions ("deriving" in particular). Instead, it makes the compiler ignore "pure". Post-snapshot, we can remove "pure" from the language. There are quite a few (~100) borrow check errors that were essentially all the result of mutable fields or partial borrows of `@mut`. Per discussions with Niko I think we want to allow partial borrows of `@mut` but detect obvious footguns. We should also improve the error message when `@mut` is erroneously reborrowed.
This commit is contained in:
parent
c4db4faefa
commit
e78f2e2ac5
72 changed files with 373 additions and 540 deletions
|
@ -223,8 +223,8 @@ pub unsafe fn array_each<T>(arr: **T, cb: &fn(*T)) {
|
|||
}
|
||||
|
||||
pub trait Ptr<T> {
|
||||
pure fn is_null(&self) -> bool;
|
||||
pure fn is_not_null(&self) -> bool;
|
||||
pure fn is_null(&const self) -> bool;
|
||||
pure fn is_not_null(&const self) -> bool;
|
||||
pure fn offset(&self, count: uint) -> Self;
|
||||
}
|
||||
|
||||
|
@ -232,11 +232,11 @@ pub trait Ptr<T> {
|
|||
impl<T> Ptr<T> for *T {
|
||||
/// Returns true if the pointer is equal to the null pointer.
|
||||
#[inline(always)]
|
||||
pure fn is_null(&self) -> bool { is_null(*self) }
|
||||
pure fn is_null(&const self) -> bool { is_null(*self) }
|
||||
|
||||
/// Returns true if the pointer is not equal to the null pointer.
|
||||
#[inline(always)]
|
||||
pure fn is_not_null(&self) -> bool { is_not_null(*self) }
|
||||
pure fn is_not_null(&const self) -> bool { is_not_null(*self) }
|
||||
|
||||
/// Calculates the offset from a pointer.
|
||||
#[inline(always)]
|
||||
|
@ -247,11 +247,11 @@ impl<T> Ptr<T> for *T {
|
|||
impl<T> Ptr<T> for *mut T {
|
||||
/// Returns true if the pointer is equal to the null pointer.
|
||||
#[inline(always)]
|
||||
pure fn is_null(&self) -> bool { is_null(*self) }
|
||||
pure fn is_null(&const self) -> bool { is_null(*self) }
|
||||
|
||||
/// Returns true if the pointer is not equal to the null pointer.
|
||||
#[inline(always)]
|
||||
pure fn is_not_null(&self) -> bool { is_not_null(*self) }
|
||||
pure fn is_not_null(&const self) -> bool { is_not_null(*self) }
|
||||
|
||||
/// Calculates the offset from a mutable pointer.
|
||||
#[inline(always)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue