about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-09-01 09:14:56 +0000
committerbors <bors@rust-lang.org>2018-09-01 09:14:56 +0000
commitb4ec8d46eeadc76760352be94d6fddc4f7936c50 (patch)
treeb48502e1416992ad556dc0206c1c889f4ebd29e8
parent1daa912ad7e02229b87b19b5d596446e1baf3a97 (diff)
parent1aa4bbbe39c4ec9588a7bc8d4dc4b56d1967c432 (diff)
downloadrust-b4ec8d46eeadc76760352be94d6fddc4f7936c50.tar.gz
rust-b4ec8d46eeadc76760352be94d6fddc4f7936c50.zip
Auto merge of #53880 - pietroalbini:beta-backports, r=pietroalbini
[beta] Rollup backports

Merged and approved:

* #53653: Address two regressions
* #53377: std: Use target_pointer_width for BACKTRACE_ELF_SIZE
* #52969: rustbuild: fix local_rebuild

r? @ghost
-rw-r--r--src/bootstrap/builder.rs2
-rw-r--r--src/libstd/build.rs3
-rw-r--r--src/libsyntax_pos/hygiene.rs9
-rw-r--r--src/test/ui/hygiene/expansion-info-reset.rs17
-rw-r--r--src/test/ui/hygiene/expansion-info-reset.stderr12
5 files changed, 33 insertions, 10 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
index 724d3b74190..dc0b0aaf0bb 100644
--- a/src/bootstrap/builder.rs
+++ b/src/bootstrap/builder.rs
@@ -777,7 +777,7 @@ impl<'a> Builder<'a> {
         // compiler, but for tools we just use the precompiled libraries that
         // we've downloaded
         let use_snapshot = mode == Mode::ToolBootstrap;
-        assert!(!use_snapshot || stage == 0);
+        assert!(!use_snapshot || stage == 0 || self.local_rebuild);
 
         let maybe_sysroot = self.sysroot(compiler);
         let sysroot = if use_snapshot {
diff --git a/src/libstd/build.rs b/src/libstd/build.rs
index 26d93f97e69..016e7adb4c9 100644
--- a/src/libstd/build.rs
+++ b/src/libstd/build.rs
@@ -104,7 +104,8 @@ fn build_libbacktrace(target: &str) -> Result<(), ()> {
     } else {
         build.file("../libbacktrace/elf.c");
 
-        if target.contains("64") {
+        let pointer_width = env::var("CARGO_CFG_TARGET_POINTER_WIDTH").unwrap();
+        if pointer_width == "64" {
             build.define("BACKTRACE_ELF_SIZE", "64");
         } else {
             build.define("BACKTRACE_ELF_SIZE", "32");
diff --git a/src/libsyntax_pos/hygiene.rs b/src/libsyntax_pos/hygiene.rs
index 1531f030127..57c3e1e25d1 100644
--- a/src/libsyntax_pos/hygiene.rs
+++ b/src/libsyntax_pos/hygiene.rs
@@ -108,14 +108,7 @@ impl Mark {
 
     #[inline]
     pub fn set_expn_info(self, info: ExpnInfo) {
-        HygieneData::with(|data| {
-            let old_info = &mut data.marks[self.0 as usize].expn_info;
-            if let Some(old_info) = old_info {
-                panic!("expansion info is reset for the mark {}\nold: {:#?}\nnew: {:#?}",
-                       self.0, old_info, info);
-            }
-            *old_info = Some(info);
-        })
+        HygieneData::with(|data| data.marks[self.0 as usize].expn_info = Some(info))
     }
 
     #[inline]
diff --git a/src/test/ui/hygiene/expansion-info-reset.rs b/src/test/ui/hygiene/expansion-info-reset.rs
new file mode 100644
index 00000000000..d80c1129b29
--- /dev/null
+++ b/src/test/ui/hygiene/expansion-info-reset.rs
@@ -0,0 +1,17 @@
+// Copyright 2018 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.
+
+// FIXME: Investigate why expansion info for a single expansion id is reset from
+// `MacroBang(format_args)` to `MacroAttribute(derive(Clone))` (issue #52363).
+
+fn main() {
+    format_args!({ #[derive(Clone)] struct S; });
+    //~^ ERROR format argument must be a string literal
+}
diff --git a/src/test/ui/hygiene/expansion-info-reset.stderr b/src/test/ui/hygiene/expansion-info-reset.stderr
new file mode 100644
index 00000000000..02a7b0d1b02
--- /dev/null
+++ b/src/test/ui/hygiene/expansion-info-reset.stderr
@@ -0,0 +1,12 @@
+error: format argument must be a string literal
+  --> $DIR/expansion-info-reset.rs:15:18
+   |
+LL |     format_args!({ #[derive(Clone)] struct S; });
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+help: you might be missing a string literal to format with
+   |
+LL |     format_args!("{}", { #[derive(Clone)] struct S; });
+   |                  ^^^^^
+
+error: aborting due to previous error
+