Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
6e8e4f84
R
Rust
项目概览
int
/
Rust
12 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6e8e4f84
编写于
5月 25, 2015
作者:
E
Eduard Burtescu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove #[cfg(stage0)] items.
上级
07503dfb
变更
17
展开全部
隐藏空白更改
内联
并排
Showing
17 changed file
with
14 addition
and
1353 deletion
+14
-1353
src/liballoc/arc_stage0.rs
src/liballoc/arc_stage0.rs
+0
-686
src/liballoc/boxed.rs
src/liballoc/boxed.rs
+2
-7
src/liballoc/lib.rs
src/liballoc/lib.rs
+0
-7
src/liballoc/rc.rs
src/liballoc/rc.rs
+4
-415
src/libcollections/borrow.rs
src/libcollections/borrow.rs
+1
-7
src/libcollections/btree/node.rs
src/libcollections/btree/node.rs
+0
-67
src/libcollections/vec.rs
src/libcollections/vec.rs
+1
-71
src/libcore/intrinsics.rs
src/libcore/intrinsics.rs
+4
-15
src/libcore/marker.rs
src/libcore/marker.rs
+0
-1
src/libcore/mem.rs
src/libcore/mem.rs
+0
-34
src/libcore/nonzero.rs
src/libcore/nonzero.rs
+1
-4
src/libcore/ops.rs
src/libcore/ops.rs
+1
-14
src/libcore/slice.rs
src/libcore/slice.rs
+0
-13
src/librustc/lib.rs
src/librustc/lib.rs
+0
-3
src/librustc_borrowck/lib.rs
src/librustc_borrowck/lib.rs
+0
-3
src/librustc_resolve/lib.rs
src/librustc_resolve/lib.rs
+0
-3
src/librustc_typeck/lib.rs
src/librustc_typeck/lib.rs
+0
-3
未找到文件。
src/liballoc/arc_stage0.rs
已删除
100644 → 0
浏览文件 @
07503dfb
此差异已折叠。
点击以展开。
src/liballoc/boxed.rs
浏览文件 @
6e8e4f84
...
...
@@ -57,16 +57,12 @@
use
core
::
cmp
::
Ordering
;
use
core
::
fmt
;
use
core
::
hash
::{
self
,
Hash
};
use
core
::
marker
::
Unsize
;
use
core
::
mem
;
use
core
::
ops
::{
Deref
,
DerefMut
};
use
core
::
ops
::{
CoerceUnsized
,
Deref
,
DerefMut
};
use
core
::
ptr
::{
Unique
};
use
core
::
raw
::{
TraitObject
};
#[cfg(not(stage0))]
use
core
::
marker
::
Unsize
;
#[cfg(not(stage0))]
use
core
::
ops
::
CoerceUnsized
;
/// A value that represents the heap. This is the default place that the `box`
/// keyword allocates into when no place is supplied.
///
...
...
@@ -392,5 +388,4 @@ extern "rust-call" fn call_once(self, args: A) -> R {
}
}
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
+
Unsize
<
U
>
,
U
:
?
Sized
>
CoerceUnsized
<
Box
<
U
>>
for
Box
<
T
>
{}
src/liballoc/lib.rs
浏览文件 @
6e8e4f84
...
...
@@ -112,14 +112,7 @@
mod
boxed
{
pub
use
std
::
boxed
::{
Box
,
HEAP
};
}
#[cfg(test)]
mod
boxed_test
;
#[cfg(not(stage0))]
pub
mod
arc
;
#[cfg(stage0)]
mod
arc_stage0
;
#[cfg(stage0)]
pub
mod
arc
{
pub
use
arc_stage0
::
*
;
}
pub
mod
rc
;
/// Common out-of-memory routine
...
...
src/liballoc/rc.rs
浏览文件 @
6e8e4f84
...
...
@@ -159,36 +159,19 @@
use
core
::
default
::
Default
;
use
core
::
fmt
;
use
core
::
hash
::{
Hasher
,
Hash
};
use
core
::
marker
::{
self
,
Sized
};
use
core
::
mem
::{
self
,
min_align_of
,
size_of
,
forget
};
use
core
::
intrinsics
::{
assume
,
drop_in_place
};
use
core
::
marker
::{
self
,
Sized
,
Unsize
};
use
core
::
mem
::{
self
,
min_align_of
,
size_of
,
min_align_of_val
,
size_of_val
,
forget
};
use
core
::
nonzero
::
NonZero
;
use
core
::
ops
::{
Deref
,
Drop
};
use
core
::
ops
::{
CoerceUnsized
,
Deref
,
Drop
};
use
core
::
option
::
Option
;
use
core
::
option
::
Option
::{
Some
,
None
};
use
core
::
ptr
;
use
core
::
result
::
Result
;
use
core
::
result
::
Result
::{
Ok
,
Err
};
use
core
::
intrinsics
::
assume
;
#[cfg(not(stage0))]
use
core
::
intrinsics
::
drop_in_place
;
#[cfg(not(stage0))]
use
core
::
marker
::
Unsize
;
#[cfg(not(stage0))]
use
core
::
mem
::{
min_align_of_val
,
size_of_val
};
#[cfg(not(stage0))]
use
core
::
ops
::
CoerceUnsized
;
use
heap
::
deallocate
;
#[cfg(stage0)]
struct
RcBox
<
T
>
{
strong
:
Cell
<
usize
>
,
weak
:
Cell
<
usize
>
,
value
:
T
,
}
#[cfg(not(stage0))]
struct
RcBox
<
T
:
?
Sized
>
{
strong
:
Cell
<
usize
>
,
weak
:
Cell
<
usize
>
,
...
...
@@ -199,15 +182,6 @@ struct RcBox<T: ?Sized> {
/// A reference-counted pointer type over an immutable value.
///
/// See the [module level documentation](./index.html) for more details.
#[cfg(stage0)]
#[unsafe_no_drop_flag]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
pub
struct
Rc
<
T
>
{
// FIXME #12808: strange names to try to avoid interfering with field
// accesses of the contained type via Deref
_
ptr
:
NonZero
<*
mut
RcBox
<
T
>>
,
}
#[cfg(not(stage0))]
#[unsafe_no_drop_flag]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
pub
struct
Rc
<
T
:
?
Sized
>
{
...
...
@@ -216,19 +190,9 @@ pub struct Rc<T: ?Sized> {
_
ptr
:
NonZero
<*
mut
RcBox
<
T
>>
,
}
#[cfg(stage0)]
impl
<
T
>
!
marker
::
Send
for
Rc
<
T
>
{}
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
>
!
marker
::
Send
for
Rc
<
T
>
{}
#[cfg(stage0)]
impl
<
T
>
!
marker
::
Sync
for
Rc
<
T
>
{}
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
>
!
marker
::
Sync
for
Rc
<
T
>
{}
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
+
Unsize
<
U
>
,
U
:
?
Sized
>
CoerceUnsized
<
Rc
<
U
>>
for
Rc
<
T
>
{}
impl
<
T
>
Rc
<
T
>
{
...
...
@@ -259,7 +223,6 @@ pub fn new(value: T) -> Rc<T> {
}
}
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
>
Rc
<
T
>
{
/// Downgrades the `Rc<T>` to a `Weak<T>` reference.
///
...
...
@@ -281,44 +244,12 @@ pub fn downgrade(&self) -> Weak<T> {
}
}
#[cfg(stage0)]
impl
<
T
>
Rc
<
T
>
{
/// Downgrades the `Rc<T>` to a `Weak<T>` reference.
///
/// # Examples
///
/// ```
/// # #![feature(alloc)]
/// use std::rc::Rc;
///
/// let five = Rc::new(5);
///
/// let weak_five = five.downgrade();
/// ```
#[unstable(feature
=
"alloc"
,
reason
=
"Weak pointers may not belong in this module"
)]
pub
fn
downgrade
(
&
self
)
->
Weak
<
T
>
{
self
.inc_weak
();
Weak
{
_
ptr
:
self
._ptr
}
}
}
/// Get the number of weak references to this value.
#[cfg(stage0)]
#[inline]
#[unstable(feature
=
"alloc"
)]
pub
fn
weak_count
<
T
>
(
this
:
&
Rc
<
T
>
)
->
usize
{
this
.weak
()
-
1
}
#[cfg(not(stage0))]
#[inline]
#[unstable(feature
=
"alloc"
)]
pub
fn
weak_count
<
T
:
?
Sized
>
(
this
:
&
Rc
<
T
>
)
->
usize
{
this
.weak
()
-
1
}
/// Get the number of strong references to this value.
#[cfg(stage0)]
#[inline]
#[unstable(feature
=
"alloc"
)]
pub
fn
strong_count
<
T
>
(
this
:
&
Rc
<
T
>
)
->
usize
{
this
.strong
()
}
#[cfg(not(stage0))]
#[inline]
#[unstable(feature
=
"alloc"
)]
pub
fn
strong_count
<
T
:
?
Sized
>
(
this
:
&
Rc
<
T
>
)
->
usize
{
this
.strong
()
}
...
...
@@ -438,17 +369,6 @@ pub fn make_unique(&mut self) -> &mut T {
}
}
#[cfg(stage0)]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
>
Deref
for
Rc
<
T
>
{
type
Target
=
T
;
#[inline(always)]
fn
deref
(
&
self
)
->
&
T
{
&
self
.inner
()
.value
}
}
#[cfg(not(stage0))]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
:
?
Sized
>
Deref
for
Rc
<
T
>
{
type
Target
=
T
;
...
...
@@ -459,58 +379,6 @@ fn deref(&self) -> &T {
}
}
#[cfg(stage0)]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
>
Drop
for
Rc
<
T
>
{
/// Drops the `Rc<T>`.
///
/// This will decrement the strong reference count. If the strong reference
/// count becomes zero and the only other references are `Weak<T>` ones,
/// `drop`s the inner value.
///
/// # Examples
///
/// ```
/// # #![feature(alloc)]
/// use std::rc::Rc;
///
/// {
/// let five = Rc::new(5);
///
/// // stuff
///
/// drop(five); // explicit drop
/// }
/// {
/// let five = Rc::new(5);
///
/// // stuff
///
/// } // implicit drop
/// ```
fn
drop
(
&
mut
self
)
{
unsafe
{
let
ptr
=
*
self
._ptr
;
if
!
ptr
.is_null
()
&&
ptr
as
usize
!=
mem
::
POST_DROP_USIZE
{
self
.dec_strong
();
if
self
.strong
()
==
0
{
ptr
::
read
(
&**
self
);
// destroy the contained object
// remove the implicit "strong weak" pointer now that we've
// destroyed the contents.
self
.dec_weak
();
if
self
.weak
()
==
0
{
deallocate
(
ptr
as
*
mut
u8
,
size_of
::
<
RcBox
<
T
>>
(),
min_align_of
::
<
RcBox
<
T
>>
())
}
}
}
}
}
}
#[cfg(not(stage0))]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
:
?
Sized
>
Drop
for
Rc
<
T
>
{
/// Drops the `Rc<T>`.
...
...
@@ -564,32 +432,6 @@ fn drop(&mut self) {
}
}
#[cfg(stage0)]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
>
Clone
for
Rc
<
T
>
{
/// Makes a clone of the `Rc<T>`.
///
/// When you clone an `Rc<T>`, it will create another pointer to the data and
/// increase the strong reference counter.
///
/// # Examples
///
/// ```
/// # #![feature(alloc)]
/// use std::rc::Rc;
///
/// let five = Rc::new(5);
///
/// five.clone();
/// ```
#[inline]
fn
clone
(
&
self
)
->
Rc
<
T
>
{
self
.inc_strong
();
Rc
{
_
ptr
:
self
._ptr
}
}
}
#[cfg(not(stage0))]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
:
?
Sized
>
Clone
for
Rc
<
T
>
{
...
...
@@ -634,17 +476,6 @@ fn default() -> Rc<T> {
}
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
#[cfg(stage0)]
impl
<
T
:
PartialEq
>
PartialEq
for
Rc
<
T
>
{
#[inline(always)]
fn
eq
(
&
self
,
other
:
&
Rc
<
T
>
)
->
bool
{
**
self
==
**
other
}
#[inline(always)]
fn
ne
(
&
self
,
other
:
&
Rc
<
T
>
)
->
bool
{
**
self
!=
**
other
}
}
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
+
PartialEq
>
PartialEq
for
Rc
<
T
>
{
/// Equality for two `Rc<T>`s.
///
...
...
@@ -680,34 +511,9 @@ fn ne(&self, other: &Rc<T>) -> bool { **self != **other }
}
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
#[cfg(stage0)]
impl
<
T
:
Eq
>
Eq
for
Rc
<
T
>
{}
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
+
Eq
>
Eq
for
Rc
<
T
>
{}
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
#[cfg(stage0)]
impl
<
T
:
PartialOrd
>
PartialOrd
for
Rc
<
T
>
{
#[inline(always)]
fn
partial_cmp
(
&
self
,
other
:
&
Rc
<
T
>
)
->
Option
<
Ordering
>
{
(
**
self
)
.partial_cmp
(
&**
other
)
}
#[inline(always)]
fn
lt
(
&
self
,
other
:
&
Rc
<
T
>
)
->
bool
{
**
self
<
**
other
}
#[inline(always)]
fn
le
(
&
self
,
other
:
&
Rc
<
T
>
)
->
bool
{
**
self
<=
**
other
}
#[inline(always)]
fn
gt
(
&
self
,
other
:
&
Rc
<
T
>
)
->
bool
{
**
self
>
**
other
}
#[inline(always)]
fn
ge
(
&
self
,
other
:
&
Rc
<
T
>
)
->
bool
{
**
self
>=
**
other
}
}
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
+
PartialOrd
>
PartialOrd
for
Rc
<
T
>
{
/// Partial comparison for two `Rc<T>`s.
///
...
...
@@ -793,13 +599,6 @@ fn ge(&self, other: &Rc<T>) -> bool { **self >= **other }
}
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
#[cfg(stage0)]
impl
<
T
:
Ord
>
Ord
for
Rc
<
T
>
{
#[inline]
fn
cmp
(
&
self
,
other
:
&
Rc
<
T
>
)
->
Ordering
{
(
**
self
)
.cmp
(
&**
other
)
}
}
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
+
Ord
>
Ord
for
Rc
<
T
>
{
/// Comparison for two `Rc<T>`s.
///
...
...
@@ -818,14 +617,6 @@ impl<T: ?Sized + Ord> Ord for Rc<T> {
fn
cmp
(
&
self
,
other
:
&
Rc
<
T
>
)
->
Ordering
{
(
**
self
)
.cmp
(
&**
other
)
}
}
#[cfg(stage0)]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
:
Hash
>
Hash
for
Rc
<
T
>
{
fn
hash
<
H
:
Hasher
>
(
&
self
,
state
:
&
mut
H
)
{
(
**
self
)
.hash
(
state
);
}
}
#[cfg(not(stage0))]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
:
?
Sized
+
Hash
>
Hash
for
Rc
<
T
>
{
fn
hash
<
H
:
Hasher
>
(
&
self
,
state
:
&
mut
H
)
{
...
...
@@ -833,14 +624,6 @@ fn hash<H: Hasher>(&self, state: &mut H) {
}
}
#[cfg(stage0)]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
:
fmt
::
Display
>
fmt
::
Display
for
Rc
<
T
>
{
fn
fmt
(
&
self
,
f
:
&
mut
fmt
::
Formatter
)
->
fmt
::
Result
{
fmt
::
Display
::
fmt
(
&**
self
,
f
)
}
}
#[cfg(not(stage0))]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
:
?
Sized
+
fmt
::
Display
>
fmt
::
Display
for
Rc
<
T
>
{
fn
fmt
(
&
self
,
f
:
&
mut
fmt
::
Formatter
)
->
fmt
::
Result
{
...
...
@@ -848,14 +631,6 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
}
}
#[cfg(stage0)]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
:
fmt
::
Debug
>
fmt
::
Debug
for
Rc
<
T
>
{
fn
fmt
(
&
self
,
f
:
&
mut
fmt
::
Formatter
)
->
fmt
::
Result
{
fmt
::
Debug
::
fmt
(
&**
self
,
f
)
}
}
#[cfg(not(stage0))]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
:
?
Sized
+
fmt
::
Debug
>
fmt
::
Debug
for
Rc
<
T
>
{
fn
fmt
(
&
self
,
f
:
&
mut
fmt
::
Formatter
)
->
fmt
::
Result
{
...
...
@@ -876,16 +651,6 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
/// dropped.
///
/// See the [module level documentation](./index.html) for more.
#[cfg(stage0)]
#[unsafe_no_drop_flag]
#[unstable(feature
=
"alloc"
,
reason
=
"Weak pointers may not belong in this module."
)]
pub
struct
Weak
<
T
>
{
// FIXME #12808: strange names to try to avoid interfering with
// field accesses of the contained type via Deref
_
ptr
:
NonZero
<*
mut
RcBox
<
T
>>
,
}
#[cfg(not(stage0))]
#[unsafe_no_drop_flag]
#[unstable(feature
=
"alloc"
,
reason
=
"Weak pointers may not belong in this module."
)]
...
...
@@ -895,51 +660,9 @@ pub struct Weak<T: ?Sized> {
_
ptr
:
NonZero
<*
mut
RcBox
<
T
>>
,
}
#[cfg(stage0)]
impl
<
T
>
!
marker
::
Send
for
Weak
<
T
>
{}
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
>
!
marker
::
Send
for
Weak
<
T
>
{}
#[cfg(stage0)]
impl
<
T
>
!
marker
::
Sync
for
Weak
<
T
>
{}
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
>
!
marker
::
Sync
for
Weak
<
T
>
{}
#[cfg(stage0)]
#[unstable(feature
=
"alloc"
,
reason
=
"Weak pointers may not belong in this module."
)]
impl
<
T
>
Weak
<
T
>
{
/// Upgrades a weak reference to a strong reference.
///
/// Upgrades the `Weak<T>` reference to an `Rc<T>`, if possible.
///
/// Returns `None` if there were no strong references and the data was
/// destroyed.
///
/// # Examples
///
/// ```
/// # #![feature(alloc)]
/// use std::rc::Rc;
///
/// let five = Rc::new(5);
///
/// let weak_five = five.downgrade();
///
/// let strong_five: Option<Rc<_>> = weak_five.upgrade();
/// ```
pub
fn
upgrade
(
&
self
)
->
Option
<
Rc
<
T
>>
{
if
self
.strong
()
==
0
{
None
}
else
{
self
.inc_strong
();
Some
(
Rc
{
_
ptr
:
self
._ptr
})
}
}
}
#[cfg(not(stage0))]
#[unstable(feature
=
"alloc"
,
reason
=
"Weak pointers may not belong in this module."
)]
impl
<
T
:
?
Sized
>
Weak
<
T
>
{
...
...
@@ -973,52 +696,6 @@ pub fn upgrade(&self) -> Option<Rc<T>> {
}
}
#[cfg(stage0)]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
>
Drop
for
Weak
<
T
>
{
/// Drops the `Weak<T>`.
///
/// This will decrement the weak reference count.
///
/// # Examples
///
/// ```
/// # #![feature(alloc)]
/// use std::rc::Rc;
///
/// {
/// let five = Rc::new(5);
/// let weak_five = five.downgrade();
///
/// // stuff
///
/// drop(weak_five); // explicit drop
/// }
/// {
/// let five = Rc::new(5);
/// let weak_five = five.downgrade();
///
/// // stuff
///
/// } // implicit drop
/// ```
fn
drop
(
&
mut
self
)
{
unsafe
{
let
ptr
=
*
self
._ptr
;
if
!
ptr
.is_null
()
&&
ptr
as
usize
!=
mem
::
POST_DROP_USIZE
{
self
.dec_weak
();
// the weak count starts at 1, and will only go to zero if all
// the strong pointers have disappeared.
if
self
.weak
()
==
0
{
deallocate
(
ptr
as
*
mut
u8
,
size_of
::
<
RcBox
<
T
>>
(),
min_align_of
::
<
RcBox
<
T
>>
())
}
}
}
}
}
#[cfg(not(stage0))]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
:
?
Sized
>
Drop
for
Weak
<
T
>
{
/// Drops the `Weak<T>`.
...
...
@@ -1064,32 +741,6 @@ fn drop(&mut self) {
}
}
#[cfg(stage0)]
#[unstable(feature
=
"alloc"
,
reason
=
"Weak pointers may not belong in this module."
)]
impl
<
T
>
Clone
for
Weak
<
T
>
{
/// Makes a clone of the `Weak<T>`.
///
/// This increases the weak reference count.
///
/// # Examples
///
/// ```
/// # #![feature(alloc)]
/// use std::rc::Rc;
///
/// let weak_five = Rc::new(5).downgrade();
///
/// weak_five.clone();
/// ```
#[inline]
fn
clone
(
&
self
)
->
Weak
<
T
>
{
self
.inc_weak
();
Weak
{
_
ptr
:
self
._ptr
}
}
}
#[cfg(not(stage0))]
#[unstable(feature
=
"alloc"
,
reason
=
"Weak pointers may not belong in this module."
)]
impl
<
T
:
?
Sized
>
Clone
for
Weak
<
T
>
{
...
...
@@ -1115,14 +766,6 @@ fn clone(&self) -> Weak<T> {
}
}
#[cfg(stage0)]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
:
fmt
::
Debug
>
fmt
::
Debug
for
Weak
<
T
>
{
fn
fmt
(
&
self
,
f
:
&
mut
fmt
::
Formatter
)
->
fmt
::
Result
{
write!
(
f
,
"(Weak)"
)
}
}
#[cfg(not(stage0))]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
:
?
Sized
+
fmt
::
Debug
>
fmt
::
Debug
for
Weak
<
T
>
{
fn
fmt
(
&
self
,
f
:
&
mut
fmt
::
Formatter
)
->
fmt
::
Result
{
...
...
@@ -1130,30 +773,6 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
}
}
#[cfg(stage0)]
#[doc(hidden)]
trait
RcBoxPtr
<
T
>
{
fn
inner
(
&
self
)
->
&
RcBox
<
T
>
;
#[inline]
fn
strong
(
&
self
)
->
usize
{
self
.inner
()
.strong
.get
()
}
#[inline]
fn
inc_strong
(
&
self
)
{
self
.inner
()
.strong
.set
(
self
.strong
()
+
1
);
}
#[inline]
fn
dec_strong
(
&
self
)
{
self
.inner
()
.strong
.set
(
self
.strong
()
-
1
);
}
#[inline]
fn
weak
(
&
self
)
->
usize
{
self
.inner
()
.weak
.get
()
}
#[inline]
fn
inc_weak
(
&
self
)
{
self
.inner
()
.weak
.set
(
self
.weak
()
+
1
);
}
#[inline]
fn
dec_weak
(
&
self
)
{
self
.inner
()
.weak
.set
(
self
.weak
()
-
1
);
}
}
#[cfg(not(stage0))]
#[doc(hidden)]
trait
RcBoxPtr
<
T
:
?
Sized
>
{
fn
inner
(
&
self
)
->
&
RcBox
<
T
>
;
...
...
@@ -1177,21 +796,6 @@ fn weak(&self) -> usize { self.inner().weak.get() }
fn
dec_weak
(
&
self
)
{
self
.inner
()
.weak
.set
(
self
.weak
()
-
1
);
}
}
#[cfg(stage0)]
impl
<
T
>
RcBoxPtr
<
T
>
for
Rc
<
T
>
{
#[inline(always)]
fn
inner
(
&
self
)
->
&
RcBox
<
T
>
{
unsafe
{
// Safe to assume this here, as if it weren't true, we'd be breaking
// the contract anyway.
// This allows the null check to be elided in the destructor if we
// manipulated the reference count in the same function.
assume
(
!
(
*
(
&
self
._ptr
as
*
const
_
as
*
const
*
const
()))
.is_null
());
&
(
**
self
._ptr
)
}
}
}
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
>
RcBoxPtr
<
T
>
for
Rc
<
T
>
{
#[inline(always)]
fn
inner
(
&
self
)
->
&
RcBox
<
T
>
{
...
...
@@ -1206,21 +810,6 @@ fn inner(&self) -> &RcBox<T> {
}
}
#[cfg(stage0)]
impl
<
T
>
RcBoxPtr
<
T
>
for
Weak
<
T
>
{
#[inline(always)]
fn
inner
(
&
self
)
->
&
RcBox
<
T
>
{
unsafe
{
// Safe to assume this here, as if it weren't true, we'd be breaking
// the contract anyway.
// This allows the null check to be elided in the destructor if we
// manipulated the reference count in the same function.
assume
(
!
(
*
(
&
self
._ptr
as
*
const
_
as
*
const
*
const
()))
.is_null
());
&
(
**
self
._ptr
)
}
}
}
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
>
RcBoxPtr
<
T
>
for
Weak
<
T
>
{
#[inline(always)]
fn
inner
(
&
self
)
->
&
RcBox
<
T
>
{
...
...
src/libcollections/borrow.rs
浏览文件 @
6e8e4f84
...
...
@@ -116,17 +116,11 @@ impl<'a, T: ?Sized> BorrowMut<T> for &'a mut T {
fn
borrow_mut
(
&
mut
self
)
->
&
mut
T
{
&
mut
**
self
}
}
#[cfg(stage0)]
impl
<
T
>
Borrow
<
T
>
for
rc
::
Rc
<
T
>
{
fn
borrow
(
&
self
)
->
&
T
{
&**
self
}
}
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
>
Borrow
<
T
>
for
rc
::
Rc
<
T
>
{
fn
borrow
(
&
self
)
->
&
T
{
&**
self
}
}
impl
<
T
>
Borrow
<
T
>
for
arc
::
Arc
<
T
>
{
impl
<
T
:
?
Sized
>
Borrow
<
T
>
for
arc
::
Arc
<
T
>
{
fn
borrow
(
&
self
)
->
&
T
{
&**
self
}
}
...
...
src/libcollections/btree/node.rs
浏览文件 @
6e8e4f84
...
...
@@ -19,7 +19,6 @@
use
core
::
prelude
::
*
;
use
core
::
cmp
::
Ordering
::{
Greater
,
Less
,
Equal
};
#[cfg(not(stage0))]
use
core
::
intrinsics
::
arith_offset
;
use
core
::
iter
::
Zip
;
use
core
::
marker
::
PhantomData
;
...
...
@@ -207,22 +206,6 @@ unsafe fn from_slice(slice: &[T]) -> RawItems<T> {
RawItems
::
from_parts
(
slice
.as_ptr
(),
slice
.len
())
}
#[cfg(stage0)]
unsafe
fn
from_parts
(
ptr
:
*
const
T
,
len
:
usize
)
->
RawItems
<
T
>
{
if
mem
::
size_of
::
<
T
>
()
==
0
{
RawItems
{
head
:
ptr
,
tail
:
(
ptr
as
usize
+
len
)
as
*
const
T
,
}
}
else
{
RawItems
{
head
:
ptr
,
tail
:
ptr
.offset
(
len
as
isize
),
}
}
}
#[cfg(not(stage0))]
unsafe
fn
from_parts
(
ptr
:
*
const
T
,
len
:
usize
)
->
RawItems
<
T
>
{
if
mem
::
size_of
::
<
T
>
()
==
0
{
RawItems
{
...
...
@@ -237,18 +220,6 @@ unsafe fn from_parts(ptr: *const T, len: usize) -> RawItems<T> {
}
}
#[cfg(stage0)]
unsafe
fn
push
(
&
mut
self
,
val
:
T
)
{
ptr
::
write
(
self
.tail
as
*
mut
T
,
val
);
if
mem
::
size_of
::
<
T
>
()
==
0
{
self
.tail
=
(
self
.tail
as
usize
+
1
)
as
*
const
T
;
}
else
{
self
.tail
=
self
.tail
.offset
(
1
);
}
}
#[cfg(not(stage0))]
unsafe
fn
push
(
&
mut
self
,
val
:
T
)
{
ptr
::
write
(
self
.tail
as
*
mut
T
,
val
);
...
...
@@ -263,26 +234,6 @@ unsafe fn push(&mut self, val: T) {
impl
<
T
>
Iterator
for
RawItems
<
T
>
{
type
Item
=
T
;
#[cfg(stage0)]
fn
next
(
&
mut
self
)
->
Option
<
T
>
{
if
self
.head
==
self
.tail
{
None
}
else
{
unsafe
{
let
ret
=
Some
(
ptr
::
read
(
self
.head
));
if
mem
::
size_of
::
<
T
>
()
==
0
{
self
.head
=
(
self
.head
as
usize
+
1
)
as
*
const
T
;
}
else
{
self
.head
=
self
.head
.offset
(
1
);
}
ret
}
}
}
#[cfg(not(stage0))]
fn
next
(
&
mut
self
)
->
Option
<
T
>
{
if
self
.head
==
self
.tail
{
None
...
...
@@ -303,24 +254,6 @@ fn next(&mut self) -> Option<T> {
}
impl
<
T
>
DoubleEndedIterator
for
RawItems
<
T
>
{
#[cfg(stage0)]
fn
next_back
(
&
mut
self
)
->
Option
<
T
>
{
if
self
.head
==
self
.tail
{
None
}
else
{
unsafe
{
if
mem
::
size_of
::
<
T
>
()
==
0
{
self
.tail
=
(
self
.tail
as
usize
-
1
)
as
*
const
T
;
}
else
{
self
.tail
=
self
.tail
.offset
(
-
1
);
}
Some
(
ptr
::
read
(
self
.tail
))
}
}
}
#[cfg(not(stage0))]
fn
next_back
(
&
mut
self
)
->
Option
<
T
>
{
if
self
.head
==
self
.tail
{
None
...
...
src/libcollections/vec.rs
浏览文件 @
6e8e4f84
...
...
@@ -66,9 +66,7 @@
use
core
::
cmp
::
Ordering
;
use
core
::
fmt
;
use
core
::
hash
::{
self
,
Hash
};
use
core
::
intrinsics
::
assume
;
#[cfg(not(stage0))]
use
core
::
intrinsics
::
arith_offset
;
use
core
::
intrinsics
::{
arith_offset
,
assume
};
use
core
::
iter
::{
repeat
,
FromIterator
};
use
core
::
marker
::
PhantomData
;
use
core
::
mem
;
...
...
@@ -1526,25 +1524,6 @@ impl<T> IntoIterator for Vec<T> {
/// }
/// ```
#[inline]
#[cfg(stage0)]
fn
into_iter
(
self
)
->
IntoIter
<
T
>
{
unsafe
{
let
ptr
=
*
self
.ptr
;
assume
(
!
ptr
.is_null
());
let
cap
=
self
.cap
;
let
begin
=
ptr
as
*
const
T
;
let
end
=
if
mem
::
size_of
::
<
T
>
()
==
0
{
(
ptr
as
usize
+
self
.len
())
as
*
const
T
}
else
{
ptr
.offset
(
self
.len
()
as
isize
)
as
*
const
T
};
mem
::
forget
(
self
);
IntoIter
{
allocation
:
ptr
,
cap
:
cap
,
ptr
:
begin
,
end
:
end
}
}
}
#[inline]
#[cfg(not(stage0))]
fn
into_iter
(
self
)
->
IntoIter
<
T
>
{
unsafe
{
let
ptr
=
*
self
.ptr
;
...
...
@@ -1764,32 +1743,6 @@ impl<T> Iterator for IntoIter<T> {
type
Item
=
T
;
#[inline]
#[cfg(stage0)]
fn
next
(
&
mut
self
)
->
Option
<
T
>
{
unsafe
{
if
self
.ptr
==
self
.end
{
None
}
else
{
if
mem
::
size_of
::
<
T
>
()
==
0
{
// purposefully don't use 'ptr.offset' because for
// vectors with 0-size elements this would return the
// same pointer.
self
.ptr
=
mem
::
transmute
(
self
.ptr
as
usize
+
1
);
// Use a non-null pointer value
Some
(
ptr
::
read
(
EMPTY
as
*
mut
T
))
}
else
{
let
old
=
self
.ptr
;
self
.ptr
=
self
.ptr
.offset
(
1
);
Some
(
ptr
::
read
(
old
))
}
}
}
}
#[inline]
#[cfg(not(stage0))]
fn
next
(
&
mut
self
)
->
Option
<
T
>
{
unsafe
{
if
self
.ptr
==
self
.end
{
...
...
@@ -1830,29 +1783,6 @@ fn count(self) -> usize {
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
impl
<
T
>
DoubleEndedIterator
for
IntoIter
<
T
>
{
#[inline]
#[cfg(stage0)]
fn
next_back
(
&
mut
self
)
->
Option
<
T
>
{
unsafe
{
if
self
.end
==
self
.ptr
{
None
}
else
{
if
mem
::
size_of
::
<
T
>
()
==
0
{
// See above for why 'ptr.offset' isn't used
self
.end
=
mem
::
transmute
(
self
.end
as
usize
-
1
);
// Use a non-null pointer value
Some
(
ptr
::
read
(
EMPTY
as
*
mut
T
))
}
else
{
self
.end
=
self
.end
.offset
(
-
1
);
Some
(
ptr
::
read
(
mem
::
transmute
(
self
.end
)))
}
}
}
}
#[inline]
#[cfg(not(stage0))]
fn
next_back
(
&
mut
self
)
->
Option
<
T
>
{
unsafe
{
if
self
.end
==
self
.ptr
{
...
...
src/libcore/intrinsics.rs
浏览文件 @
6e8e4f84
...
...
@@ -145,13 +145,9 @@
/// but no instructions will be emitted for it. This is appropriate for operations
/// on the same thread that may be preempted, such as when interacting with signal
/// handlers.
#[cfg(not(stage0))]
// SNAP 857ef6e
pub
fn
atomic_singlethreadfence
();
#[cfg(not(stage0))]
// SNAP 857ef6e
pub
fn
atomic_singlethreadfence_acq
();
#[cfg(not(stage0))]
// SNAP 857ef6e
pub
fn
atomic_singlethreadfence_rel
();
#[cfg(not(stage0))]
// SNAP 857ef6e
pub
fn
atomic_singlethreadfence_acqrel
();
/// Aborts the execution of the process.
...
...
@@ -193,11 +189,8 @@
pub
fn
min_align_of
<
T
>
()
->
usize
;
pub
fn
pref_align_of
<
T
>
()
->
usize
;
#[cfg(not(stage0))]
pub
fn
size_of_val
<
T
:
?
Sized
>
(
_
:
&
T
)
->
usize
;
#[cfg(not(stage0))]
pub
fn
min_align_of_val
<
T
:
?
Sized
>
(
_
:
&
T
)
->
usize
;
#[cfg(not(stage0))]
pub
fn
drop_in_place
<
T
:
?
Sized
>
(
_
:
*
mut
T
);
/// Gets a static string slice containing the name of a type.
...
...
@@ -294,7 +287,6 @@
/// resulting pointer to point into or one byte past the end of an allocated
/// object, and it wraps with two's complement arithmetic. The resulting
/// value is not necessarily valid to be used to actually access memory.
#[cfg(not(stage0))]
pub
fn
arith_offset
<
T
>
(
dst
:
*
const
T
,
offset
:
isize
)
->
*
const
T
;
/// Copies `count * size_of<T>` bytes from `src` to `dst`. The source
...
...
@@ -592,13 +584,6 @@ pub fn volatile_copy_nonoverlapping_memory<T>(dst: *mut T, src: *const T,
/// Returns (a * b) mod 2^N, where N is the width of N in bits.
pub
fn
overflowing_mul
<
T
>
(
a
:
T
,
b
:
T
)
->
T
;
/// Returns the value of the discriminant for the variant in 'v',
/// cast to a `u64`; if `T` has no discriminant, returns 0.
pub
fn
discriminant_value
<
T
>
(
v
:
&
T
)
->
u64
;
}
#[cfg(not(stage0))]
extern
"rust-intrinsic"
{
/// Performs an unchecked signed division, which results in undefined behavior,
/// in cases where y == 0, or x == int::MIN and y == -1
pub
fn
unchecked_sdiv
<
T
>
(
x
:
T
,
y
:
T
)
->
T
;
...
...
@@ -612,4 +597,8 @@ pub fn volatile_copy_nonoverlapping_memory<T>(dst: *mut T, src: *const T,
/// Returns the remainder of an unchecked signed division, which results in
/// undefined behavior, in cases where y == 0
pub
fn
unchecked_srem
<
T
>
(
x
:
T
,
y
:
T
)
->
T
;
/// Returns the value of the discriminant for the variant in 'v',
/// cast to a `u64`; if `T` has no discriminant, returns 0.
pub
fn
discriminant_value
<
T
>
(
v
:
&
T
)
->
u64
;
}
src/libcore/marker.rs
浏览文件 @
6e8e4f84
...
...
@@ -55,7 +55,6 @@ pub trait Sized {
/// Types that can be "unsized" to a dynamically sized type.
#[unstable(feature
=
"core"
)]
#[cfg(not(stage0))]
#[lang=
"unsize"
]
pub
trait
Unsize
<
T
>
{
// Empty.
...
...
src/libcore/mem.rs
浏览文件 @
6e8e4f84
...
...
@@ -95,29 +95,12 @@ pub fn size_of<T>() -> usize {
///
/// assert_eq!(4, mem::size_of_val(&5i32));
/// ```
#[cfg(not(stage0))]
#[inline]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
pub
fn
size_of_val
<
T
:
?
Sized
>
(
val
:
&
T
)
->
usize
{
unsafe
{
intrinsics
::
size_of_val
(
val
)
}
}
/// Returns the size of the type that `_val` points to in bytes.
///
/// # Examples
///
/// ```
/// use std::mem;
///
/// assert_eq!(4, mem::size_of_val(&5i32));
/// ```
#[cfg(stage0)]
#[inline]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
pub
fn
size_of_val
<
T
>
(
_
val
:
&
T
)
->
usize
{
size_of
::
<
T
>
()
}
/// Returns the ABI-required minimum alignment of a type
///
/// This is the alignment used for struct fields. It may be smaller than the preferred alignment.
...
...
@@ -144,29 +127,12 @@ pub fn min_align_of<T>() -> usize {
///
/// assert_eq!(4, mem::min_align_of_val(&5i32));
/// ```
#[cfg(not(stage0))]
#[inline]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
pub
fn
min_align_of_val
<
T
:
?
Sized
>
(
val
:
&
T
)
->
usize
{
unsafe
{
intrinsics
::
min_align_of_val
(
val
)
}
}
/// Returns the ABI-required minimum alignment of the type of the value that `_val` points to
///
/// # Examples
///
/// ```
/// use std::mem;
///
/// assert_eq!(4, mem::min_align_of_val(&5i32));
/// ```
#[cfg(stage0)]
#[inline]
#[stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
pub
fn
min_align_of_val
<
T
>
(
_
val
:
&
T
)
->
usize
{
min_align_of
::
<
T
>
()
}
/// Returns the alignment in memory for a type.
///
/// This function will return the alignment, in bytes, of a type in memory. If the alignment
...
...
src/libcore/nonzero.rs
浏览文件 @
6e8e4f84
...
...
@@ -11,9 +11,7 @@
//! Exposes the NonZero lang item which provides optimization hints.
use
marker
::
Sized
;
use
ops
::
Deref
;
#[cfg(not(stage0))]
use
ops
::
CoerceUnsized
;
use
ops
::{
CoerceUnsized
,
Deref
};
/// Unsafe trait to indicate what types are usable with the NonZero struct
pub
unsafe
trait
Zeroable
{}
...
...
@@ -57,5 +55,4 @@ fn deref<'a>(&'a self) -> &'a T {
}
}
#[cfg(not(stage0))]
impl
<
T
:
Zeroable
+
CoerceUnsized
<
U
>
,
U
:
Zeroable
>
CoerceUnsized
<
NonZero
<
U
>>
for
NonZero
<
T
>
{}
src/libcore/ops.rs
浏览文件 @
6e8e4f84
...
...
@@ -67,12 +67,9 @@
#![stable(feature
=
"rust1"
,
since
=
"1.0.0"
)]
use
marker
::
Sized
;
use
marker
::
{
Sized
,
Unsize
}
;
use
fmt
;
#[cfg(not(stage0))]
use
marker
::
Unsize
;
/// The `Drop` trait is used to run some code when a value goes out of scope. This
/// is sometimes called a 'destructor'.
///
...
...
@@ -1214,39 +1211,29 @@ extern "rust-call" fn call_once(mut self, args: A) -> F::Output {
/// Trait that indicates that this is a pointer or a wrapper for one,
/// where unsizing can be performed on the pointee.
#[unstable(feature
=
"core"
)]
#[cfg(not(stage0))]
#[lang=
"coerce_unsized"
]
pub
trait
CoerceUnsized
<
T
>
{
// Empty.
}
// &mut T -> &mut U
#[cfg(not(stage0))]
impl
<
'a
,
T
:
?
Sized
+
Unsize
<
U
>
,
U
:
?
Sized
>
CoerceUnsized
<&
'a
mut
U
>
for
&
'a
mut
T
{}
// &mut T -> &U
#[cfg(not(stage0))]
impl
<
'a
,
'b
:
'a
,
T
:
?
Sized
+
Unsize
<
U
>
,
U
:
?
Sized
>
CoerceUnsized
<&
'a
U
>
for
&
'b
mut
T
{}
// &mut T -> *mut U
#[cfg(not(stage0))]
impl
<
'a
,
T
:
?
Sized
+
Unsize
<
U
>
,
U
:
?
Sized
>
CoerceUnsized
<*
mut
U
>
for
&
'a
mut
T
{}
// &mut T -> *const U
#[cfg(not(stage0))]
impl
<
'a
,
T
:
?
Sized
+
Unsize
<
U
>
,
U
:
?
Sized
>
CoerceUnsized
<*
const
U
>
for
&
'a
mut
T
{}
// &T -> &U
#[cfg(not(stage0))]
impl
<
'a
,
'b
:
'a
,
T
:
?
Sized
+
Unsize
<
U
>
,
U
:
?
Sized
>
CoerceUnsized
<&
'a
U
>
for
&
'b
T
{}
// &T -> *const U
#[cfg(not(stage0))]
impl
<
'a
,
T
:
?
Sized
+
Unsize
<
U
>
,
U
:
?
Sized
>
CoerceUnsized
<*
const
U
>
for
&
'a
T
{}
// *mut T -> *mut U
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
+
Unsize
<
U
>
,
U
:
?
Sized
>
CoerceUnsized
<*
mut
U
>
for
*
mut
T
{}
// *mut T -> *const U
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
+
Unsize
<
U
>
,
U
:
?
Sized
>
CoerceUnsized
<*
const
U
>
for
*
mut
T
{}
// *const T -> *const U
#[cfg(not(stage0))]
impl
<
T
:
?
Sized
+
Unsize
<
U
>
,
U
:
?
Sized
>
CoerceUnsized
<*
const
U
>
for
*
const
T
{}
src/libcore/slice.rs
浏览文件 @
6e8e4f84
...
...
@@ -125,19 +125,6 @@ fn rsplitn_mut<P>(&mut self, n: usize, pred: P) -> RSplitNMut<Self::Item, P>
}
// Use macros to be generic over const/mut
#[cfg(stage0)]
macro_rules!
slice_offset
{
(
$ptr:expr
,
$by:expr
)
=>
{{
let
ptr
=
$ptr
;
if
size_from_ptr
(
ptr
)
==
0
{
transmute
((
ptr
as
isize
)
.wrapping_add
(
$by
))
}
else
{
ptr
.offset
(
$by
)
}
}};
}
#[cfg(not(stage0))]
macro_rules!
slice_offset
{
(
$ptr:expr
,
$by:expr
)
=>
{{
let
ptr
=
$ptr
;
...
...
src/librustc/lib.rs
浏览文件 @
6e8e4f84
...
...
@@ -167,7 +167,4 @@ mod rustc {
}
// Build the diagnostics array at the end so that the metadata includes error use sites.
#[cfg(stage0)]
__
build_diagnostic_array!
{
DIAGNOSTICS
}
#[cfg(not(stage0))]
__
build_diagnostic_array!
{
librustc
,
DIAGNOSTICS
}
src/librustc_borrowck/lib.rs
浏览文件 @
6e8e4f84
...
...
@@ -47,7 +47,4 @@
pub
mod
graphviz
;
#[cfg(stage0)]
__
build_diagnostic_array!
{
DIAGNOSTICS
}
#[cfg(not(stage0))]
__
build_diagnostic_array!
{
librustc_borrowck
,
DIAGNOSTICS
}
src/librustc_resolve/lib.rs
浏览文件 @
6e8e4f84
...
...
@@ -3723,7 +3723,4 @@ pub fn resolve_crate<'a, 'tcx>(session: &'a Session,
}
}
#[cfg(stage0)]
__
build_diagnostic_array!
{
DIAGNOSTICS
}
#[cfg(not(stage0))]
__
build_diagnostic_array!
{
librustc_resolve
,
DIAGNOSTICS
}
src/librustc_typeck/lib.rs
浏览文件 @
6e8e4f84
...
...
@@ -344,7 +344,4 @@ pub fn check_crate(tcx: &ty::ctxt, trait_map: ty::TraitMap) {
tcx
.sess
.abort_if_errors
();
}
#[cfg(stage0)]
__
build_diagnostic_array!
{
DIAGNOSTICS
}
#[cfg(not(stage0))]
__
build_diagnostic_array!
{
librustc_typeck
,
DIAGNOSTICS
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录