about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-03-01 06:32:54 +0000
committerbors <bors@rust-lang.org>2015-03-01 06:32:54 +0000
commit0905c8a5ec856a6b972fcb239df2b8f6e82d2418 (patch)
treedae5d3ebde7eaaeeaad8b0e67bfb835b33fb5258 /src
parent341a9ca1e324d7b7427334b32e99e6d8bc82e9a6 (diff)
parent60f7732ccd9b0ad50490457ddd02a4a48cf74e74 (diff)
downloadrust-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.rs6
-rw-r--r--src/libcore/fmt/mod.rs2
-rw-r--r--src/librustc_trans/back/write.rs4
-rw-r--r--src/librustc_trans/trans/base.rs5
-rw-r--r--src/libstd/sys/unix/thread.rs2
-rw-r--r--src/test/compile-fail/nonbool_static_assert.rs16
-rw-r--r--src/test/run-pass/ifmt.rs8
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!("}}"), "}");