diff options
| author | bors <bors@rust-lang.org> | 2015-03-01 06:32:54 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-03-01 06:32:54 +0000 |
| commit | 0905c8a5ec856a6b972fcb239df2b8f6e82d2418 (patch) | |
| tree | dae5d3ebde7eaaeeaad8b0e67bfb835b33fb5258 /src | |
| parent | 341a9ca1e324d7b7427334b32e99e6d8bc82e9a6 (diff) | |
| parent | 60f7732ccd9b0ad50490457ddd02a4a48cf74e74 (diff) | |
| download | rust-0905c8a5ec856a6b972fcb239df2b8f6e82d2418.tar.gz rust-0905c8a5ec856a6b972fcb239df2b8f6e82d2418.zip | |
Auto merge of #22909 - Manishearth:rollup, r=Manishearth
r? @Manishearth
Diffstat (limited to 'src')
| -rw-r--r-- | src/libcollections/str.rs | 6 | ||||
| -rw-r--r-- | src/libcore/fmt/mod.rs | 2 | ||||
| -rw-r--r-- | src/librustc_trans/back/write.rs | 4 | ||||
| -rw-r--r-- | src/librustc_trans/trans/base.rs | 5 | ||||
| -rw-r--r-- | src/libstd/sys/unix/thread.rs | 2 | ||||
| -rw-r--r-- | src/test/compile-fail/nonbool_static_assert.rs | 16 | ||||
| -rw-r--r-- | src/test/run-pass/ifmt.rs | 8 |
7 files changed, 37 insertions, 6 deletions
diff --git a/src/libcollections/str.rs b/src/libcollections/str.rs index c58cca828d8..86fcac3e4b8 100644 --- a/src/libcollections/str.rs +++ b/src/libcollections/str.rs @@ -1455,9 +1455,9 @@ pub trait StrExt: Index<RangeFull, Output = str> { /// /// `is_cjk` determines behavior for characters in the Ambiguous category: if `is_cjk` is /// `true`, these are 2 columns wide; otherwise, they are 1. In CJK locales, `is_cjk` should be - /// `true`, else it should be `false`. [Unicode Standard Annex - /// #11](http://www.unicode.org/reports/tr11/) recommends that these characters be treated as 1 - /// column (i.e., `is_cjk` = `false`) if the locale is unknown. + /// `true`, else it should be `false`. + /// [Unicode Standard Annex #11](http://www.unicode.org/reports/tr11/) recommends that these + /// characters be treated as 1 column (i.e., `is_cjk = false`) if the locale is unknown. #[unstable(feature = "collections", reason = "this functionality may only be provided by libunicode")] fn width(&self, is_cjk: bool) -> usize { diff --git a/src/libcore/fmt/mod.rs b/src/libcore/fmt/mod.rs index 117b829fdff..9544fbaa55b 100644 --- a/src/libcore/fmt/mod.rs +++ b/src/libcore/fmt/mod.rs @@ -700,7 +700,7 @@ impl Display for char { impl<T> Pointer for *const T { fn fmt(&self, f: &mut Formatter) -> Result { f.flags |= 1 << (FlagV1::Alternate as u32); - let ret = LowerHex::fmt(&(*self as u32), f); + let ret = LowerHex::fmt(&(*self as usize), f); f.flags &= !(1 << (FlagV1::Alternate as u32)); ret } diff --git a/src/librustc_trans/back/write.rs b/src/librustc_trans/back/write.rs index a1fc63778ce..cd14fe529b1 100644 --- a/src/librustc_trans/back/write.rs +++ b/src/librustc_trans/back/write.rs @@ -851,7 +851,9 @@ pub fn run_passes(sess: &Session, // FIXME: time_llvm_passes support - does this use a global context or // something? - //if sess.time_llvm_passes() { llvm::LLVMRustPrintPassTimings(); } + if sess.opts.cg.codegen_units == 1 && sess.time_llvm_passes() { + unsafe { llvm::LLVMRustPrintPassTimings(); } + } } struct WorkItem { diff --git a/src/librustc_trans/trans/base.rs b/src/librustc_trans/trans/base.rs index 5db9f2bc10c..fdeef11f36c 100644 --- a/src/librustc_trans/trans/base.rs +++ b/src/librustc_trans/trans/base.rs @@ -2332,6 +2332,11 @@ pub fn trans_item(ccx: &CrateContext, item: &ast::Item) { // Do static_assert checking. It can't really be done much earlier // because we need to get the value of the bool out of LLVM if attr::contains_name(&item.attrs, "static_assert") { + if !ty::type_is_bool(ty::expr_ty(ccx.tcx(), expr)) { + ccx.sess().span_fatal(expr.span, + "can only have static_assert on a static \ + with type `bool`"); + } if m == ast::MutMutable { ccx.sess().span_fatal(expr.span, "cannot have static_assert on a mutable \ diff --git a/src/libstd/sys/unix/thread.rs b/src/libstd/sys/unix/thread.rs index f4791d39da1..827e2afdca8 100644 --- a/src/libstd/sys/unix/thread.rs +++ b/src/libstd/sys/unix/thread.rs @@ -164,7 +164,7 @@ pub mod guard { if pthread_main_np() == 1 { // main thread - current_stack.ss_sp as uint - current_stack.ss_size as uint + 3 * PAGE_SIZE as uint + current_stack.ss_sp as uint - current_stack.ss_size as uint + PAGE_SIZE as uint } else { // new thread diff --git a/src/test/compile-fail/nonbool_static_assert.rs b/src/test/compile-fail/nonbool_static_assert.rs new file mode 100644 index 00000000000..d85f58edc90 --- /dev/null +++ b/src/test/compile-fail/nonbool_static_assert.rs @@ -0,0 +1,16 @@ +// Copyright 2015 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![allow(dead_code)] + +#[static_assert] +static E: i32 = 1; //~ ERROR can only have static_assert on a static with type `bool` + +fn main() {} diff --git a/src/test/run-pass/ifmt.rs b/src/test/run-pass/ifmt.rs index ab83fb90d3f..62b8ff528a5 100644 --- a/src/test/run-pass/ifmt.rs +++ b/src/test/run-pass/ifmt.rs @@ -17,6 +17,7 @@ #![feature(box_syntax)] use std::fmt; +use std::usize; struct A; struct B; @@ -137,6 +138,13 @@ pub fn main() { t!(format!("{:+10.3e}", 1.2345e6f64), " +1.234e6"); t!(format!("{:+10.3e}", -1.2345e6f64), " -1.234e6"); + // Test that pointers don't get truncated. + { + let val = usize::MAX; + let exp = format!("{:#x}", val); + t!(format!("{:p}", val as *const isize), exp); + } + // Escaping t!(format!("{{"), "{"); t!(format!("}}"), "}"); |
