Auto merge of #36684 - GuillaumeGomez:rollup, r=GuillaumeGomez

Rollup of 7 pull requests

- Successful merges: #36018, #36498, #36500, #36559, #36566, #36578, #36664
- Failed merges:
This commit is contained in:
bors 2016-09-23 17:00:28 -07:00 committed by GitHub
commit 5a71fb35fd
25 changed files with 112 additions and 75 deletions

2
configure vendored
View File

@ -676,7 +676,7 @@ valopt_nosave local-rust-root "/usr/local" "set prefix for local rust binary"
valopt_nosave host "${CFG_BUILD}" "GNUs ./configure syntax LLVM host triples"
valopt_nosave target "${CFG_HOST}" "GNUs ./configure syntax LLVM target triples"
valopt_nosave mandir "${CFG_PREFIX}/share/man" "install man pages in PATH"
valopt_nosave docdir "${CFG_PREFIX}/share/doc/rust" "install man pages in PATH"
valopt_nosave docdir "${CFG_PREFIX}/share/doc/rust" "install documentation in PATH"
# On Windows this determines root of the subtree for target libraries.
# Host runtime libs always go to 'bin'.

View File

@ -131,7 +131,8 @@ def stage0_data(rust_root):
def format_build_time(duration):
return str(datetime.timedelta(seconds=int(duration)))
class RustBuild:
class RustBuild(object):
def download_stage0(self):
cache_dst = os.path.join(self.build_dir, "cache")
rustc_cache = os.path.join(cache_dst, self.stage0_rustc_date())
@ -142,7 +143,7 @@ class RustBuild:
os.makedirs(cargo_cache)
if self.rustc().startswith(self.bin_root()) and \
(not os.path.exists(self.rustc()) or self.rustc_out_of_date()):
(not os.path.exists(self.rustc()) or self.rustc_out_of_date()):
if os.path.exists(self.bin_root()):
shutil.rmtree(self.bin_root())
channel = self.stage0_rustc_channel()
@ -165,7 +166,7 @@ class RustBuild:
f.write(self.stage0_rustc_date())
if self.cargo().startswith(self.bin_root()) and \
(not os.path.exists(self.cargo()) or self.cargo_out_of_date()):
(not os.path.exists(self.cargo()) or self.cargo_out_of_date()):
channel = self.stage0_cargo_channel()
filename = "cargo-{}-{}.tar.gz".format(channel, self.build)
url = "https://static.rust-lang.org/cargo-dist/" + self.stage0_cargo_date()
@ -238,8 +239,8 @@ class RustBuild:
def get_string(self, line):
start = line.find('"')
end = start + 1 + line[start+1:].find('"')
return line[start+1:end]
end = start + 1 + line[start + 1:].find('"')
return line[start + 1:end]
def exe_suffix(self):
if sys.platform == 'win32':

View File

@ -159,7 +159,7 @@ em {
footer {
border-top: 1px solid #ddd;
font-size: 14.3px;
font-size: 14px;
font-style: italic;
padding-top: 5px;
margin-top: 3em;

View File

@ -328,7 +328,7 @@ def extract_length_and_ptr_from_slice(slice_val):
UNQUALIFIED_TYPE_MARKERS = frozenset(["(", "[", "&", "*"])
def extract_type_name(qualified_type_name):
'''Extracts the type name from a fully qualified path'''
"""Extracts the type name from a fully qualified path"""
if qualified_type_name[0] in UNQUALIFIED_TYPE_MARKERS:
return qualified_type_name

View File

@ -170,7 +170,7 @@ def rust_pretty_printer_lookup_function(gdb_val):
#=------------------------------------------------------------------------------
# Pretty Printer Classes
#=------------------------------------------------------------------------------
class RustStructPrinter:
class RustStructPrinter(object):
def __init__(self, val, omit_first_field, omit_type_name, is_tuple_like):
self.__val = val
self.__omit_first_field = omit_first_field
@ -205,11 +205,12 @@ class RustStructPrinter:
return ""
class RustSlicePrinter:
class RustSlicePrinter(object):
def __init__(self, val):
self.__val = val
def display_hint(self):
@staticmethod
def display_hint():
return "array"
def to_string(self):
@ -226,7 +227,7 @@ class RustSlicePrinter:
yield (str(index), (raw_ptr + index).dereference())
class RustStringSlicePrinter:
class RustStringSlicePrinter(object):
def __init__(self, val):
self.__val = val
@ -236,11 +237,12 @@ class RustStringSlicePrinter:
return '"%s"' % raw_ptr.string(encoding="utf-8", length=length)
class RustStdVecPrinter:
class RustStdVecPrinter(object):
def __init__(self, val):
self.__val = val
def display_hint(self):
@staticmethod
def display_hint():
return "array"
def to_string(self):
@ -255,7 +257,7 @@ class RustStdVecPrinter:
yield (str(index), (gdb_ptr + index).dereference())
class RustStdStringPrinter:
class RustStdStringPrinter(object):
def __init__(self, val):
self.__val = val
@ -266,7 +268,7 @@ class RustStdStringPrinter:
length=length)
class RustCStyleVariantPrinter:
class RustCStyleVariantPrinter(object):
def __init__(self, val):
assert val.type.get_dwarf_type_kind() == rustpp.DWARF_TYPE_CODE_ENUM
self.__val = val
@ -275,7 +277,7 @@ class RustCStyleVariantPrinter:
return str(self.__val.get_wrapped_value())
class IdentityPrinter:
class IdentityPrinter(object):
def __init__(self, string):
self.string = string

View File

@ -37,14 +37,14 @@ DEBUG_OUTPUT = False
def print_debug(s):
"Print something if DEBUG_OUTPUT is True"
"""Print something if DEBUG_OUTPUT is True"""
global DEBUG_OUTPUT
if DEBUG_OUTPUT:
print("DEBUG: " + str(s))
def normalize_whitespace(s):
"Replace newlines, tabs, multiple spaces, etc with exactly one space"
"""Replace newlines, tabs, multiple spaces, etc with exactly one space"""
return re.sub("\s+", " ", s)
@ -71,7 +71,7 @@ registered_breakpoints = set()
def execute_command(command_interpreter, command):
"Executes a single CLI command"
"""Executes a single CLI command"""
global new_breakpoints
global registered_breakpoints

View File

@ -171,10 +171,10 @@ def print_val(lldb_val, internal_dict):
#=--------------------------------------------------------------------------------------------------
def print_struct_val(val, internal_dict, omit_first_field, omit_type_name, is_tuple_like):
'''
"""
Prints a struct, tuple, or tuple struct value with Rust syntax.
Ignores any fields before field_start_index.
'''
"""
assert val.type.get_dwarf_type_kind() == rustpp.DWARF_TYPE_CODE_STRUCT
if omit_type_name:
@ -221,7 +221,7 @@ def print_struct_val(val, internal_dict, omit_first_field, omit_type_name, is_tu
"body": body}
def print_pointer_val(val, internal_dict):
'''Prints a pointer value with Rust syntax'''
"""Prints a pointer value with Rust syntax"""
assert val.type.get_dwarf_type_kind() == rustpp.DWARF_TYPE_CODE_PTR
sigil = "&"
type_name = val.type.get_unqualified_type_name()
@ -275,8 +275,8 @@ def print_std_string_val(val, internal_dict):
#=--------------------------------------------------------------------------------------------------
def print_array_of_values(array_name, data_ptr_val, length, internal_dict):
'''Prints a contigous memory range, interpreting it as values of the
pointee-type of data_ptr_val.'''
"""Prints a contigous memory range, interpreting it as values of the
pointee-type of data_ptr_val."""
data_ptr_type = data_ptr_val.type
assert data_ptr_type.get_dwarf_type_kind() == rustpp.DWARF_TYPE_CODE_PTR

View File

@ -119,16 +119,19 @@ class Void(Type):
def __init__(self):
Type.__init__(self, 0)
def compiler_ctor(self):
@staticmethod
def compiler_ctor():
return '::VOID'
def compiler_ctor_ref(self):
return '&' + self.compiler_ctor()
def rust_name(self):
@staticmethod
def rust_name():
return '()'
def type_info(self, platform_info):
@staticmethod
def type_info(platform_info):
return None
def __eq__(self, other):
@ -282,7 +285,7 @@ class Vector(Type):
class Pointer(Type):
def __init__(self, elem, llvm_elem, const):
self._elem = elem;
self._elem = elem
self._llvm_elem = llvm_elem
self._const = const
Type.__init__(self, BITWIDTH_POINTER)
@ -503,7 +506,7 @@ class GenericIntrinsic(object):
# must be a power of two
assert width & (width - 1) == 0
def recur(processed, untouched):
if untouched == []:
if not untouched:
ret = processed[0]
args = processed[1:]
yield MonomorphicIntrinsic(self._platform, self.intrinsic, width,
@ -756,22 +759,26 @@ class ExternBlock(object):
def __init__(self):
pass
def open(self, platform):
@staticmethod
def open(platform):
return 'extern "platform-intrinsic" {'
def render(self, mono):
@staticmethod
def render(mono):
return ' fn {}{}{};'.format(mono.platform_prefix(),
mono.intrinsic_name(),
mono.intrinsic_signature())
def close(self):
@staticmethod
def close():
return '}'
class CompilerDefs(object):
def __init__(self):
pass
def open(self, platform):
@staticmethod
def open(platform):
return '''\
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
@ -798,7 +805,8 @@ pub fn find(name: &str) -> Option<Intrinsic> {{
if !name.starts_with("{0}") {{ return None }}
Some(match &name["{0}".len()..] {{'''.format(platform.platform_prefix())
def render(self, mono):
@staticmethod
def render(mono):
return '''\
"{}" => Intrinsic {{
inputs: {{ static INPUTS: [&'static Type; {}] = [{}]; &INPUTS }},
@ -810,7 +818,8 @@ pub fn find(name: &str) -> Option<Intrinsic> {{
mono.compiler_ret(),
mono.llvm_name())
def close(self):
@staticmethod
def close():
return '''\
_ => return None,
})

View File

@ -177,7 +177,6 @@ def run(test):
def interact(proc, queue):
line = ""
n = 0
while proc.poll() is None:
line = proc.stdout.readline()
@ -185,7 +184,6 @@ def interact(proc, queue):
continue
assert line.endswith('\n'), "incomplete line: " + repr(line)
queue.put(line)
line = ""
n += 1
if n % UPDATE_EVERY_N == 0:
msg("got", str(n // 1000) + "k", "records")

View File

@ -82,28 +82,28 @@ def load_unicode_data(f):
canon_decomp = {}
compat_decomp = {}
udict = {};
range_start = -1;
udict = {}
range_start = -1
for line in fileinput.input(f):
data = line.split(';');
data = line.split(';')
if len(data) != 15:
continue
cp = int(data[0], 16);
cp = int(data[0], 16)
if is_surrogate(cp):
continue
if range_start >= 0:
for i in xrange(range_start, cp):
udict[i] = data;
range_start = -1;
udict[i] = data
range_start = -1
if data[1].endswith(", First>"):
range_start = cp;
continue;
udict[cp] = data;
range_start = cp
continue
udict[cp] = data
for code in udict:
[code_org, name, gencat, combine, bidi,
(code_org, name, gencat, combine, bidi,
decomp, deci, digit, num, mirror,
old, iso, upcase, lowcase, titlecase ] = udict[code];
old, iso, upcase, lowcase, titlecase) = udict[code]
# generate char to char direct common and simple conversions
# uppercase to lowercase
@ -382,7 +382,7 @@ def emit_bool_trie(f, name, t_data, is_pub=True):
global bytes_old, bytes_new
bytes_old += 8 * len(t_data)
CHUNK = 64
rawdata = [False] * 0x110000;
rawdata = [False] * 0x110000
for (lo, hi) in t_data:
for cp in range(lo, hi + 1):
rawdata[cp] = True

View File

@ -726,18 +726,18 @@ impl<T> VecDeque<T> {
/// ```
/// use std::collections::VecDeque;
///
/// let mut vector: VecDeque<u32> = VecDeque::new();
/// let mut vector = VecDeque::new();
///
/// vector.push_back(0);
/// vector.push_back(1);
/// vector.push_back(2);
///
/// assert_eq!(vector.as_slices(), (&[0u32, 1, 2] as &[u32], &[] as &[u32]));
/// assert_eq!(vector.as_slices(), (&[0, 1, 2][..], &[][..]));
///
/// vector.push_front(10);
/// vector.push_front(9);
///
/// assert_eq!(vector.as_slices(), (&[9u32, 10] as &[u32], &[0u32, 1, 2] as &[u32]));
/// assert_eq!(vector.as_slices(), (&[9, 10][..], &[0, 1, 2][..]));
/// ```
#[inline]
#[stable(feature = "deque_extras_15", since = "1.5.0")]
@ -764,7 +764,7 @@ impl<T> VecDeque<T> {
/// ```
/// use std::collections::VecDeque;
///
/// let mut vector: VecDeque<u32> = VecDeque::new();
/// let mut vector = VecDeque::new();
///
/// vector.push_back(0);
/// vector.push_back(1);
@ -774,7 +774,7 @@ impl<T> VecDeque<T> {
///
/// vector.as_mut_slices().0[0] = 42;
/// vector.as_mut_slices().1[0] = 24;
/// assert_eq!(vector.as_slices(), (&[42u32, 10] as &[u32], &[24u32, 1] as &[u32]));
/// assert_eq!(vector.as_slices(), (&[42, 10][..], &[24, 1][..]));
/// ```
#[inline]
#[stable(feature = "deque_extras_15", since = "1.5.0")]

View File

@ -180,7 +180,7 @@ impl<'tcx> Mir<'tcx> {
Some(Local::new(idx))
}
/// Counts the number of locals, such that that local_index
/// Counts the number of locals, such that local_index
/// will always return an index smaller than this count.
pub fn count_locals(&self) -> usize {
self.arg_decls.len() +

View File

@ -2808,7 +2808,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
/// See `ParameterEnvironment` struct def'n for details.
/// If you were using `free_id: NodeId`, you might try `self.region_maps.item_extent(free_id)`
/// for the `free_id_outlive` parameter. (But note that that is not always quite right.)
/// for the `free_id_outlive` parameter. (But note that this is not always quite right.)
pub fn construct_parameter_environment(self,
span: Span,
def_id: DefId,

View File

@ -473,7 +473,8 @@ impl EmitterWriter {
if spans_updated {
children.push(SubDiagnostic {
level: Level::Note,
message: "this error originates in a macro from the standard library".to_string(),
message:"this error originates in a macro outside of the current \
crate".to_string(),
span: MultiSpan::new(),
render_span: None
});

View File

@ -153,7 +153,7 @@
//! The collection algorithm handles this more or less transparently. If it is
//! about to create a translation item for something with an external `DefId`,
//! it will take a look if the MIR for that item is available, and if so just
//! proceed normally. If the MIR is not available, it assumes that that item is
//! proceed normally. If the MIR is not available, it assumes that the item is
//! just linked to and no node is created; which is exactly what we want, since
//! no machine code should be generated in the current crate for such an item.
//!

View File

@ -17,7 +17,7 @@
//! the `render_inner_with_highlighting` or `render_with_highlighting`
//! functions. For more advanced use cases (if you want to supply your own css
//! classes or control how the HTML is generated, or even generate something
//! other then HTML), then you should implement the the `Writer` trait and use a
//! other then HTML), then you should implement the `Writer` trait and use a
//! `Classifier`.
use html::escape::Escape;

View File

@ -1,3 +1,5 @@
@import "normalize.css";
/**
* Copyright 2013 The Rust Project Developers. See the COPYRIGHT
* file at the top-level directory of this distribution and at
@ -59,8 +61,6 @@
src: local('Source Code Pro Semibold'), url("SourceCodePro-Semibold.woff") format('woff');
}
@import "normalize.css";
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
@ -284,7 +284,7 @@ h3.impl > .out-of-band {
font-size: 21px;
}
h4 > code, h3 > code, invisible > code {
h4 > code, h3 > code, .invisible > code {
position: inherit;
}
@ -459,7 +459,8 @@ a {
.content .search-results td:first-child { padding-right: 0; }
.content .search-results td:first-child a { padding-right: 10px; }
tr.result span.primitive::after { content: ' (primitive type)'; font-style: italic; color: black}
tr.result span.primitive::after { content: ' (primitive type)'; font-style: italic; color: black;
}
body.blur > :not(#help) {
filter: blur(8px);

View File

@ -107,7 +107,7 @@ nav.main .current {
border-bottom-color: #000;
}
nav.main .separator {
border-color: 1px solid #000;
border: 1px solid #000;
}
a {
color: #000;

View File

@ -228,9 +228,14 @@ impl CString {
/// Retakes ownership of a `CString` that was transferred to C.
///
/// Additionally, the length of the string will be recalculated from the pointer.
///
/// # Safety
///
/// This should only ever be called with a pointer that was earlier
/// obtained by calling `into_raw` on a `CString`. Additionally, the length
/// of the string will be recalculated from the pointer.
/// obtained by calling `into_raw` on a `CString`. Other usage (e.g. trying to take
/// ownership of a string that was allocated by foreign code) is likely to lead
/// to undefined behavior or allocator corruption.
#[stable(feature = "cstr_memory", since = "1.4.0")]
pub unsafe fn from_raw(ptr: *mut c_char) -> CString {
let len = libc::strlen(ptr) + 1; // Including the NUL byte

View File

@ -83,7 +83,7 @@ impl Duration {
/// Returns the number of whole seconds represented by this duration.
///
/// The extra precision represented by this duration is ignored (e.g. extra
/// The extra precision represented by this duration is ignored (i.e. extra
/// nanoseconds are not represented in the returned value).
#[stable(feature = "duration", since = "1.3.0")]
#[inline]
@ -93,7 +93,7 @@ impl Duration {
///
/// This method does **not** return the length of the duration when
/// represented by nanoseconds. The returned number always represents a
/// fractional portion of a second (e.g. it is less than one billion).
/// fractional portion of a second (i.e. it is less than one billion).
#[stable(feature = "duration", since = "1.3.0")]
#[inline]
pub fn subsec_nanos(&self) -> u32 { self.nanos }

View File

@ -0,0 +1,20 @@
// Copyright 2016 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.
const C1: i32 = 0x12345678;
const C2: isize = C1 as i16 as isize;
enum E {
V = C2
}
fn main() {
assert_eq!(C2 as u64, E::V as u64);
}

View File

@ -4,7 +4,7 @@ error: requires at least a format string argument
12 | format!();
| ^^^^^^^^^^
|
= note: this error originates in a macro from the standard library
= note: this error originates in a macro outside of the current crate
error: expected token: `,`
--> $DIR/bad-format-args.rs:13:5
@ -12,7 +12,7 @@ error: expected token: `,`
13 | format!("" 1);
| ^^^^^^^^^^^^^^
|
= note: this error originates in a macro from the standard library
= note: this error originates in a macro outside of the current crate
error: expected token: `,`
--> $DIR/bad-format-args.rs:14:5
@ -20,7 +20,7 @@ error: expected token: `,`
14 | format!("", 1 1);
| ^^^^^^^^^^^^^^^^^
|
= note: this error originates in a macro from the standard library
= note: this error originates in a macro outside of the current crate
error: aborting due to 3 previous errors

View File

@ -4,7 +4,7 @@ error: cannot apply unary operator `!` to type `&'static str`
12 | assert!("foo");
| ^^^^^^^^^^^^^^^
|
= note: this error originates in a macro from the standard library
= note: this error originates in a macro outside of the current crate
error: aborting due to previous error

View File

@ -5,7 +5,7 @@ error[E0282]: unable to infer enough type information about `_`
| ^^^^^^ cannot infer type for `_`
|
= note: type annotations or generic parameter binding required
= note: this error originates in a macro from the standard library
= note: this error originates in a macro outside of the current crate
error: aborting due to previous error

View File

@ -4,7 +4,7 @@ error: invalid reference to argument `0` (no arguments given)
16 | myprintln!("{}"); //~ ERROR in this macro
| ^^^^^^^^^^^^^^^^^
|
= note: this error originates in a macro from the standard library
= note: this error originates in a macro outside of the current crate
error: aborting due to previous error