Skip to content

Commit dcd70bb

Browse files
author
Ariel Ben-Yehuda
committed
---
yaml --- r: 210162 b: refs/heads/try c: bd1f734 h: refs/heads/master v: v3
1 parent f739cbc commit dcd70bb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+187
-522
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: 3e561f05c00cd180ec02db4ccab2840a4aba93d2
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: ba0e1cd8147d452c356aacb29fb87568ca26f111
5-
refs/heads/try: 5c710b593b429d39ea01375172a9ce968f43ab26
5+
refs/heads/try: bd1f73420ab22faa8087a6cf1618225d09d64f9e
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
88
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596

branches/try/configure

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -544,7 +544,7 @@ fi
544544
BOOL_OPTIONS=""
545545
VAL_OPTIONS=""
546546

547-
opt debug 0 "debug mode; disables optimization unless \`--enable-optimize\` given"
547+
opt debug 0 "debug mode"
548548
opt valgrind 0 "run tests with valgrind (memcheck by default)"
549549
opt helgrind 0 "run tests with helgrind instead of memcheck"
550550
opt valgrind-rpass 1 "run rpass-valgrind tests with valgrind"

branches/try/src/doc/grammar.md

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -176,15 +176,9 @@ excluded from the `ident` rule.
176176

177177
```antlr
178178
lit_suffix : ident;
179-
literal : [ string_lit | char_lit | byte_string_lit | byte_lit | num_lit | bool_lit ] lit_suffix ?;
179+
literal : [ string_lit | char_lit | byte_string_lit | byte_lit | num_lit ] lit_suffix ?;
180180
```
181181

182-
The optional `lit_suffix` production is only used for certain numeric literals,
183-
but is reserved for future extension. That is, the above gives the lexical
184-
grammar, but a Rust parser will reject everything but the 12 special cases
185-
mentioned in [Number literals](reference.html#number-literals) in the
186-
reference.
187-
188182
#### Character and string literals
189183

190184
```antlr
@@ -244,9 +238,7 @@ dec_lit : [ dec_digit | '_' ] + ;
244238

245239
#### Boolean literals
246240

247-
```antlr
248-
bool_lit : [ "true" | "false" ] ;
249-
```
241+
**FIXME:** write grammar
250242

251243
The two values of the boolean type are written `true` and `false`.
252244

@@ -305,7 +297,7 @@ transcriber : '(' transcriber * ')' | '[' transcriber * ']'
305297

306298
```antlr
307299
item : mod_item | fn_item | type_item | struct_item | enum_item
308-
| const_item | static_item | trait_item | impl_item | extern_block ;
300+
| static_item | trait_item | impl_item | extern_block ;
309301
```
310302

311303
### Type Parameters
@@ -377,10 +369,6 @@ path_item : ident | "mod" ;
377369

378370
**FIXME:** grammar?
379371

380-
### Enumerations
381-
382-
**FIXME:** grammar?
383-
384372
### Constant items
385373

386374
```antlr

branches/try/src/doc/reference.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,11 @@ of tokens, that immediately and directly denotes the value it evaluates to,
130130
rather than referring to it by name or some other evaluation rule. A literal is
131131
a form of constant expression, so is evaluated (primarily) at compile time.
132132

133+
The optional suffix is only used for certain numeric literals, but is
134+
reserved for future extension, that is, the above gives the lexical
135+
grammar, but a Rust parser will reject everything but the 12 special
136+
cases mentioned in [Number literals](#number-literals) below.
137+
133138
#### Examples
134139

135140
##### Characters and strings

branches/try/src/doc/trpl/casting-between-types.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ what it does is very simple, but very scary. It tells Rust to treat a value of
4343
one type as though it were another type. It does this regardless of the
4444
typechecking system, and just completely trusts you.
4545

46-
[intrinsics]: intrinsics.html
46+
[intrinsic]: intrinsics.html
4747

4848
In our previous example, we know that an array of four `u8`s represents a `u32`
4949
properly, and so we want to do the cast. Using `transmute` instead of `as`,

branches/try/src/doc/trpl/inline-assembly.md

Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ but you must add the right number of `:` if you skip them:
5858
asm!("xor %eax, %eax"
5959
:
6060
:
61-
: "{eax}"
61+
: "eax"
6262
);
6363
# } }
6464
```
@@ -69,21 +69,21 @@ Whitespace also doesn't matter:
6969
# #![feature(asm)]
7070
# #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
7171
# fn main() { unsafe {
72-
asm!("xor %eax, %eax" ::: "{eax}");
72+
asm!("xor %eax, %eax" ::: "eax");
7373
# } }
7474
```
7575

7676
## Operands
7777

7878
Input and output operands follow the same format: `:
7979
"constraints1"(expr1), "constraints2"(expr2), ..."`. Output operand
80-
expressions must be mutable lvalues, or not yet assigned:
80+
expressions must be mutable lvalues:
8181

8282
```
8383
# #![feature(asm)]
8484
# #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
8585
fn add(a: i32, b: i32) -> i32 {
86-
let c: i32;
86+
let mut c = 0;
8787
unsafe {
8888
asm!("add $2, $0"
8989
: "=r"(c)
@@ -100,22 +100,6 @@ fn main() {
100100
}
101101
```
102102

103-
If you would like to use real operands in this position, however,
104-
you are required to put curly braces `{}` around the register that
105-
you want, and you are required to put the specific size of the
106-
operand. This is useful for very low level programming, where
107-
which register you use is important:
108-
109-
```
110-
# #![feature(asm)]
111-
# #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
112-
# unsafe fn read_byte_in(port: u16) -> u8 {
113-
let result: u8;
114-
asm!("in %dx, %al" : "={al}"(result) : "{dx}"(port));
115-
result
116-
# }
117-
```
118-
119103
## Clobbers
120104

121105
Some instructions modify registers which might otherwise have held
@@ -128,7 +112,7 @@ stay valid.
128112
# #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
129113
# fn main() { unsafe {
130114
// Put the value 0x200 in eax
131-
asm!("mov $$0x200, %eax" : /* no outputs */ : /* no inputs */ : "{eax}");
115+
asm!("mov $$0x200, %eax" : /* no outputs */ : /* no inputs */ : "eax");
132116
# } }
133117
```
134118

@@ -155,14 +139,3 @@ Current valid options are:
155139
the compiler to insert its usual stack alignment code
156140
3. *intel* - use intel syntax instead of the default AT&T.
157141

158-
```
159-
# #![feature(asm)]
160-
# #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
161-
# fn main() {
162-
let result: i32;
163-
unsafe {
164-
asm!("mov eax, 2" : "={eax}"(result) : : : "intel")
165-
}
166-
println!("eax is currently {}", result);
167-
# }
168-
```

branches/try/src/liballoc/boxed.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,6 @@ impl<T: ?Sized + Hash> Hash for Box<T> {
240240
impl Box<Any> {
241241
#[inline]
242242
#[stable(feature = "rust1", since = "1.0.0")]
243-
/// Attempt to downcast the box to a concrete type.
244243
pub fn downcast<T: Any>(self) -> Result<Box<T>, Box<Any>> {
245244
if self.is::<T>() {
246245
unsafe {
@@ -258,15 +257,11 @@ impl Box<Any> {
258257
}
259258
}
260259

261-
impl Box<Any + Send> {
260+
impl Box<Any+Send> {
262261
#[inline]
263262
#[stable(feature = "rust1", since = "1.0.0")]
264-
/// Attempt to downcast the box to a concrete type.
265-
pub fn downcast<T: Any>(self) -> Result<Box<T>, Box<Any + Send>> {
266-
<Box<Any>>::downcast(self).map_err(|s| unsafe {
267-
// reapply the Send marker
268-
mem::transmute::<Box<Any>, Box<Any + Send>>(s)
269-
})
263+
pub fn downcast<T: Any>(self) -> Result<Box<T>, Box<Any>> {
264+
<Box<Any>>::downcast(self)
270265
}
271266
}
272267

branches/try/src/libcore/any.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,9 @@ pub trait Any: Reflect + 'static {
9797
fn get_type_id(&self) -> TypeId;
9898
}
9999

100-
impl<T: Reflect + 'static> Any for T {
100+
impl<T> Any for T
101+
where T: Reflect + 'static
102+
{
101103
fn get_type_id(&self) -> TypeId { TypeId::of::<T>() }
102104
}
103105

@@ -220,7 +222,7 @@ impl TypeId {
220222
/// Returns the `TypeId` of the type this generic function has been
221223
/// instantiated with
222224
#[stable(feature = "rust1", since = "1.0.0")]
223-
pub fn of<T: ?Sized + Reflect + 'static>() -> TypeId {
225+
pub fn of<T: ?Sized + Any>() -> TypeId {
224226
TypeId {
225227
t: unsafe { intrinsics::type_id::<T>() },
226228
}

branches/try/src/libcore/marker.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -416,8 +416,6 @@ mod impls {
416416
#[rustc_reflect_like]
417417
#[unstable(feature = "core", reason = "requires RFC and more experience")]
418418
#[allow(deprecated)]
419-
#[rustc_on_unimplemented = "`{Self}` does not implement `Any`; \
420-
ensure all type parameters are bounded by `Any`"]
421419
pub trait Reflect {}
422420

423421
impl Reflect for .. { }

branches/try/src/librustc/diagnostics.rs

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -168,12 +168,6 @@ match x {
168168
```
169169
"##,
170170

171-
E0010: r##"
172-
The value of statics and constants must be known at compile time, and they live
173-
for the entire lifetime of a program. Creating a boxed value allocates memory on
174-
the heap at runtime, and therefore cannot be done at compile time.
175-
"##,
176-
177171
E0013: r##"
178172
Static and const variables can refer to other const variables. But a const
179173
variable cannot refer to a static variable. For example, `Y` cannot refer to `X`
@@ -227,31 +221,6 @@ This error indicates that an attempt was made to divide by zero (or take the
227221
remainder of a zero divisor) in a static or constant expression.
228222
"##,
229223

230-
E0079: r##"
231-
Enum variants which contain no data can be given a custom integer
232-
representation. This error indicates that the value provided is not an
233-
integer literal and is therefore invalid.
234-
"##,
235-
236-
E0080: r##"
237-
This error indicates that the compiler was unable to sensibly evaluate an
238-
integer expression provided as an enum discriminant. Attempting to divide by 0
239-
or causing integer overflow are two ways to induce this error. For example:
240-
241-
```
242-
enum Enum {
243-
X = (1 << 500),
244-
Y = (1 / 0)
245-
}
246-
```
247-
248-
Ensure that the expressions given can be evaluated as the desired integer type.
249-
See the FFI section of the Reference for more information about using a custom
250-
integer type:
251-
252-
http://doc.rust-lang.org/reference.html#ffi-attributes
253-
"##,
254-
255224
E0133: r##"
256225
Using unsafe functionality, such as dereferencing raw pointers and calling
257226
functions via FFI or marked as unsafe, is potentially dangerous and disallowed
@@ -525,13 +494,16 @@ a compile-time constant.
525494
}
526495

527496
register_diagnostics! {
497+
E0010,
528498
E0011,
529499
E0012,
530500
E0014,
531501
E0016,
532502
E0017,
533503
E0019,
534504
E0022,
505+
E0079, // enum variant: expected signed integer constant
506+
E0080, // enum variant: constant evaluation error
535507
E0109,
536508
E0110,
537509
E0134,

branches/try/src/librustc/metadata/csearch.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ pub fn get_impl_polarity<'tcx>(tcx: &ty::ctxt<'tcx>,
283283
// if there is one.
284284
pub fn get_impl_trait<'tcx>(tcx: &ty::ctxt<'tcx>,
285285
def: ast::DefId)
286-
-> Option<Rc<ty::TraitRef<'tcx>>> {
286+
-> Option<ty::TraitRef<'tcx>> {
287287
let cstore = &tcx.sess.cstore;
288288
let cdata = cstore.get_crate_data(def.krate);
289289
decoder::get_impl_trait(&*cdata, def.node, tcx)

branches/try/src/librustc/metadata/decoder.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,13 +247,13 @@ pub fn item_type<'tcx>(_item_id: ast::DefId, item: rbml::Doc,
247247
}
248248

249249
fn doc_trait_ref<'tcx>(doc: rbml::Doc, tcx: &ty::ctxt<'tcx>, cdata: Cmd)
250-
-> Rc<ty::TraitRef<'tcx>> {
250+
-> ty::TraitRef<'tcx> {
251251
parse_trait_ref_data(doc.data, cdata.cnum, doc.start, tcx,
252252
|_, did| translate_def_id(cdata, did))
253253
}
254254

255255
fn item_trait_ref<'tcx>(doc: rbml::Doc, tcx: &ty::ctxt<'tcx>, cdata: Cmd)
256-
-> Rc<ty::TraitRef<'tcx>> {
256+
-> ty::TraitRef<'tcx> {
257257
let tp = reader::get_doc(doc, tag_item_trait_ref);
258258
doc_trait_ref(tp, tcx, cdata)
259259
}
@@ -490,7 +490,7 @@ pub fn get_impl_polarity<'tcx>(cdata: Cmd,
490490
pub fn get_impl_trait<'tcx>(cdata: Cmd,
491491
id: ast::NodeId,
492492
tcx: &ty::ctxt<'tcx>)
493-
-> Option<Rc<ty::TraitRef<'tcx>>>
493+
-> Option<ty::TraitRef<'tcx>>
494494
{
495495
let item_doc = lookup_item(id, cdata.data());
496496
let fam = item_family(item_doc);

branches/try/src/librustc/metadata/encoder.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ struct entry<T> {
103103

104104
fn encode_trait_ref<'a, 'tcx>(rbml_w: &mut Encoder,
105105
ecx: &EncodeContext<'a, 'tcx>,
106-
trait_ref: &ty::TraitRef<'tcx>,
106+
trait_ref: ty::TraitRef<'tcx>,
107107
tag: usize) {
108108
let ty_str_ctxt = &tyencode::ctxt {
109109
diag: ecx.diag,
@@ -191,7 +191,7 @@ pub fn write_trait_ref<'a, 'tcx>(ecx: &EncodeContext<'a, 'tcx>,
191191
tcx: ecx.tcx,
192192
abbrevs: &ecx.type_abbrevs
193193
};
194-
tyencode::enc_trait_ref(rbml_w, ty_str_ctxt, trait_ref);
194+
tyencode::enc_trait_ref(rbml_w, ty_str_ctxt, *trait_ref);
195195
}
196196

197197
pub fn write_region(ecx: &EncodeContext,
@@ -1201,7 +1201,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
12011201
encode_unsafety(rbml_w, unsafety);
12021202

12031203
let trait_ref = ty::impl_id_to_trait_ref(tcx, item.id);
1204-
encode_trait_ref(rbml_w, ecx, &*trait_ref, tag_item_trait_ref);
1204+
encode_trait_ref(rbml_w, ecx, trait_ref, tag_item_trait_ref);
12051205
rbml_w.end_tag();
12061206
}
12071207
ast::ItemImpl(unsafety, polarity, _, ref opt_trait, ref ty, ref ast_items) => {
@@ -1246,7 +1246,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
12461246
}
12471247
if opt_trait.is_some() {
12481248
let trait_ref = ty::impl_id_to_trait_ref(tcx, item.id);
1249-
encode_trait_ref(rbml_w, ecx, &*trait_ref, tag_item_trait_ref);
1249+
encode_trait_ref(rbml_w, ecx, trait_ref, tag_item_trait_ref);
12501250
}
12511251
encode_path(rbml_w, path.clone());
12521252
encode_stability(rbml_w, stab);
@@ -1314,7 +1314,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
13141314
tag_item_generics);
13151315
encode_predicates(rbml_w, ecx, &ty::lookup_super_predicates(tcx, def_id),
13161316
tag_item_super_predicates);
1317-
encode_trait_ref(rbml_w, ecx, &*trait_def.trait_ref, tag_item_trait_ref);
1317+
encode_trait_ref(rbml_w, ecx, trait_def.trait_ref, tag_item_trait_ref);
13181318
encode_name(rbml_w, item.ident.name);
13191319
encode_attributes(rbml_w, &item.attrs);
13201320
encode_visibility(rbml_w, vis);

0 commit comments

Comments
 (0)