Auto merge of #28529 - Manishearth:rollup, r=Manishearth
- Successful merges: #28463, #28507, #28522, #28525, #28526 - Failed merges:
This commit is contained in:
@@ -321,7 +321,7 @@ there's a lot of concurrent access happening.
|
||||
|
||||
# Composition
|
||||
|
||||
A common gripe when reading Rust code is with types like `Rc<RefCell<Vec<T>>>` (or even more more
|
||||
A common gripe when reading Rust code is with types like `Rc<RefCell<Vec<T>>>` (or even more
|
||||
complicated compositions of such types). It's not always clear what the composition does, or why the
|
||||
author chose one like this (and when one should be using such a composition in one's own code)
|
||||
|
||||
|
||||
@@ -26,8 +26,8 @@ to help us make sense of code that can possibly be concurrent.
|
||||
### `Send`
|
||||
|
||||
The first trait we're going to talk about is
|
||||
[`Send`](../std/marker/trait.Send.html). When a type `T` implements `Send`, it indicates
|
||||
to the compiler that something of this type is able to have ownership transferred
|
||||
[`Send`](../std/marker/trait.Send.html). When a type `T` implements `Send`, it
|
||||
indicates that something of this type is able to have ownership transferred
|
||||
safely between threads.
|
||||
|
||||
This is important to enforce certain restrictions. For example, if we have a
|
||||
@@ -42,13 +42,19 @@ us enforce that it can't leave the current thread.
|
||||
### `Sync`
|
||||
|
||||
The second of these traits is called [`Sync`](../std/marker/trait.Sync.html).
|
||||
When a type `T` implements `Sync`, it indicates to the compiler that something
|
||||
When a type `T` implements `Sync`, it indicates that something
|
||||
of this type has no possibility of introducing memory unsafety when used from
|
||||
multiple threads concurrently.
|
||||
multiple threads concurrently through shared references. This implies that
|
||||
types which don't have [interior mutability](mutability.html) are inherently
|
||||
`Sync`, which includes simple primitive types (like `u8`) and aggregate types
|
||||
containing them.
|
||||
|
||||
For example, sharing immutable data with an atomic reference count is
|
||||
threadsafe. Rust provides a type like this, `Arc<T>`, and it implements `Sync`,
|
||||
so it is safe to share between threads.
|
||||
For sharing references across threads, Rust provides a wrapper type called
|
||||
`Arc<T>`. `Arc<T>` implements `Send` and `Sync` if and only if `T` implements
|
||||
both `Send` and `Sync`. For example, an object of type `Arc<RefCell<U>>` cannot
|
||||
be transferred across threads because
|
||||
[`RefCell`](choosing-your-guarantees.html#refcell%3Ct%3E) does not implement
|
||||
`Sync`, consequently `Arc<RefCell<U>>` would not implement `Send`.
|
||||
|
||||
These two traits allow you to use the type system to make strong guarantees
|
||||
about the properties of your code under concurrency. Before we demonstrate
|
||||
@@ -70,7 +76,7 @@ fn main() {
|
||||
}
|
||||
```
|
||||
|
||||
The `thread::spawn()` method accepts a closure, which is executed in a
|
||||
The `thread::spawn()` method accepts a [closure](closures.html), which is executed in a
|
||||
new thread. It returns a handle to the thread, that can be used to
|
||||
wait for the child thread to finish and extract its result:
|
||||
|
||||
@@ -215,29 +221,18 @@ fn main() {
|
||||
}
|
||||
```
|
||||
|
||||
Note that the value of `i` is bound (copied) to the closure and not shared
|
||||
among the threads.
|
||||
|
||||
If we'd tried to use `Mutex<T>` without wrapping it in an `Arc<T>` we would have
|
||||
seen another error like:
|
||||
|
||||
```text
|
||||
error: the trait `core::marker::Send` is not implemented for the type `std::sync::mutex::MutexGuard<'_, collections::vec::Vec<u32>>` [E0277]
|
||||
thread::spawn(move || {
|
||||
^~~~~~~~~~~~~
|
||||
note: `std::sync::mutex::MutexGuard<'_, collections::vec::Vec<u32>>` cannot be sent between threads safely
|
||||
thread::spawn(move || {
|
||||
^~~~~~~~~~~~~
|
||||
```
|
||||
|
||||
You see, [`Mutex`](../std/sync/struct.Mutex.html) has a
|
||||
[`lock`](../std/sync/struct.Mutex.html#method.lock)
|
||||
method which has this signature:
|
||||
Also note that [`lock`](../std/sync/struct.Mutex.html#method.lock) method of
|
||||
[`Mutex`](../std/sync/struct.Mutex.html) has this signature:
|
||||
|
||||
```ignore
|
||||
fn lock(&self) -> LockResult<MutexGuard<T>>
|
||||
```
|
||||
|
||||
and because `Send` is not implemented for `MutexGuard<T>`, we couldn't have
|
||||
transferred the guard across thread boundaries on it's own.
|
||||
and because `Send` is not implemented for `MutexGuard<T>`, the guard cannot
|
||||
cross thread boundaries, ensuring thread-locality of lock acquire and release.
|
||||
|
||||
Let's examine the body of the thread more closely:
|
||||
|
||||
@@ -317,22 +312,24 @@ use std::sync::mpsc;
|
||||
fn main() {
|
||||
let (tx, rx) = mpsc::channel();
|
||||
|
||||
for _ in 0..10 {
|
||||
for i in 0..10 {
|
||||
let tx = tx.clone();
|
||||
|
||||
thread::spawn(move || {
|
||||
let answer = 42;
|
||||
let answer = i * i;
|
||||
|
||||
tx.send(answer);
|
||||
});
|
||||
}
|
||||
|
||||
rx.recv().ok().expect("Could not receive answer");
|
||||
for _ in 0..10 {
|
||||
println!("{}", rx.recv().unwrap());
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
A `u32` is `Send` because we can make a copy. So we create a thread, ask it to calculate
|
||||
the answer, and then it `send()`s us the answer over the channel.
|
||||
Here we create 10 threads, asking each to calculate the square of a number (`i`
|
||||
at the time of `spawn()`), and then `send()` back the answer over the channel.
|
||||
|
||||
|
||||
## Panics
|
||||
|
||||
@@ -298,10 +298,18 @@ const FOO: i32 = { 0 }; // but brackets are useless here
|
||||
```
|
||||
"##,
|
||||
|
||||
// FIXME(#24111) Change the language here when const fn stabilizes
|
||||
E0015: r##"
|
||||
The only functions that can be called in static or constant expressions are
|
||||
`const` functions. Rust currently does not support more general compile-time
|
||||
function execution.
|
||||
`const` functions, and struct/enum constructors. `const` functions are only
|
||||
available on a nightly compiler. Rust currently does not support more general
|
||||
compile-time function execution.
|
||||
|
||||
```
|
||||
const FOO: Option<u8> = Some(1); // enum constructor
|
||||
struct Bar {x: u8}
|
||||
const BAR: Bar = Bar {x: 1}; // struct constructor
|
||||
```
|
||||
|
||||
See [RFC 911] for more details on the design of `const fn`s.
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ use util::nodemap::NodeMap;
|
||||
use rustc_front::hir;
|
||||
use syntax::ast;
|
||||
use syntax::codemap::Span;
|
||||
use syntax::feature_gate::UnstableFeatures;
|
||||
use rustc_front::visit::{self, FnKind, Visitor};
|
||||
|
||||
use std::collections::hash_map::Entry;
|
||||
@@ -709,10 +710,21 @@ fn check_expr<'a, 'tcx>(v: &mut CheckCrateVisitor<'a, 'tcx>,
|
||||
if !is_const {
|
||||
v.add_qualif(ConstQualif::NOT_CONST);
|
||||
if v.mode != Mode::Var {
|
||||
span_err!(v.tcx.sess, e.span, E0015,
|
||||
"function calls in {}s are limited to \
|
||||
constant functions, \
|
||||
struct and enum constructors", v.msg());
|
||||
// FIXME(#24111) Remove this check when const fn stabilizes
|
||||
if let UnstableFeatures::Disallow = v.tcx.sess.opts.unstable_features {
|
||||
span_err!(v.tcx.sess, e.span, E0015,
|
||||
"function calls in {}s are limited to \
|
||||
struct and enum constructors", v.msg());
|
||||
v.tcx.sess.span_note(e.span,
|
||||
"a limited form of compile-time function \
|
||||
evaluation is available on a nightly \
|
||||
compiler via `const fn`");
|
||||
} else {
|
||||
span_err!(v.tcx.sess, e.span, E0015,
|
||||
"function calls in {}s are limited to \
|
||||
constant functions, \
|
||||
struct and enum constructors", v.msg());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -684,15 +684,15 @@ fn contains_macro_use(fld: &mut MacroExpander, attrs: &[ast::Attribute]) -> bool
|
||||
// logic as for expression-position macro invocations.
|
||||
pub fn expand_item_mac(it: P<ast::Item>,
|
||||
fld: &mut MacroExpander) -> SmallVector<P<ast::Item>> {
|
||||
let (extname, path_span, tts) = match it.node {
|
||||
let (extname, path_span, tts, span, attrs, ident) = it.and_then(|it| { match it.node {
|
||||
ItemMac(codemap::Spanned {
|
||||
node: MacInvocTT(ref pth, ref tts, _),
|
||||
node: MacInvocTT(pth, tts, _),
|
||||
..
|
||||
}) => {
|
||||
(pth.segments[0].identifier.name, pth.span, (*tts).clone())
|
||||
(pth.segments[0].identifier.name, pth.span, tts, it.span, it.attrs, it.ident)
|
||||
}
|
||||
_ => fld.cx.span_bug(it.span, "invalid item macro invocation")
|
||||
};
|
||||
}});
|
||||
|
||||
let fm = fresh_mark();
|
||||
let items = {
|
||||
@@ -706,48 +706,48 @@ pub fn expand_item_mac(it: P<ast::Item>,
|
||||
}
|
||||
|
||||
Some(rc) => match *rc {
|
||||
NormalTT(ref expander, span, allow_internal_unstable) => {
|
||||
if it.ident.name != parse::token::special_idents::invalid.name {
|
||||
NormalTT(ref expander, tt_span, allow_internal_unstable) => {
|
||||
if ident.name != parse::token::special_idents::invalid.name {
|
||||
fld.cx
|
||||
.span_err(path_span,
|
||||
&format!("macro {}! expects no ident argument, given '{}'",
|
||||
extname,
|
||||
it.ident));
|
||||
ident));
|
||||
return SmallVector::zero();
|
||||
}
|
||||
fld.cx.bt_push(ExpnInfo {
|
||||
call_site: it.span,
|
||||
call_site: span,
|
||||
callee: NameAndSpan {
|
||||
format: MacroBang(extname),
|
||||
span: span,
|
||||
span: tt_span,
|
||||
allow_internal_unstable: allow_internal_unstable,
|
||||
}
|
||||
});
|
||||
// mark before expansion:
|
||||
let marked_before = mark_tts(&tts[..], fm);
|
||||
expander.expand(fld.cx, it.span, &marked_before[..])
|
||||
expander.expand(fld.cx, span, &marked_before[..])
|
||||
}
|
||||
IdentTT(ref expander, span, allow_internal_unstable) => {
|
||||
if it.ident.name == parse::token::special_idents::invalid.name {
|
||||
IdentTT(ref expander, tt_span, allow_internal_unstable) => {
|
||||
if ident.name == parse::token::special_idents::invalid.name {
|
||||
fld.cx.span_err(path_span,
|
||||
&format!("macro {}! expects an ident argument",
|
||||
extname));
|
||||
return SmallVector::zero();
|
||||
}
|
||||
fld.cx.bt_push(ExpnInfo {
|
||||
call_site: it.span,
|
||||
call_site: span,
|
||||
callee: NameAndSpan {
|
||||
format: MacroBang(extname),
|
||||
span: span,
|
||||
span: tt_span,
|
||||
allow_internal_unstable: allow_internal_unstable,
|
||||
}
|
||||
});
|
||||
// mark before expansion:
|
||||
let marked_tts = mark_tts(&tts[..], fm);
|
||||
expander.expand(fld.cx, it.span, it.ident, marked_tts)
|
||||
expander.expand(fld.cx, span, ident, marked_tts)
|
||||
}
|
||||
MacroRulesTT => {
|
||||
if it.ident.name == parse::token::special_idents::invalid.name {
|
||||
if ident.name == parse::token::special_idents::invalid.name {
|
||||
fld.cx.span_err(path_span,
|
||||
&format!("macro_rules! expects an ident argument")
|
||||
);
|
||||
@@ -755,7 +755,7 @@ pub fn expand_item_mac(it: P<ast::Item>,
|
||||
}
|
||||
|
||||
fld.cx.bt_push(ExpnInfo {
|
||||
call_site: it.span,
|
||||
call_site: span,
|
||||
callee: NameAndSpan {
|
||||
format: MacroBang(extname),
|
||||
span: None,
|
||||
@@ -767,7 +767,7 @@ pub fn expand_item_mac(it: P<ast::Item>,
|
||||
});
|
||||
// DON'T mark before expansion.
|
||||
|
||||
let allow_internal_unstable = attr::contains_name(&it.attrs,
|
||||
let allow_internal_unstable = attr::contains_name(&attrs,
|
||||
"allow_internal_unstable");
|
||||
|
||||
// ensure any #[allow_internal_unstable]s are
|
||||
@@ -777,18 +777,19 @@ pub fn expand_item_mac(it: P<ast::Item>,
|
||||
feature_gate::emit_feature_err(
|
||||
&fld.cx.parse_sess.span_diagnostic,
|
||||
"allow_internal_unstable",
|
||||
it.span,
|
||||
span,
|
||||
feature_gate::GateIssue::Language,
|
||||
feature_gate::EXPLAIN_ALLOW_INTERNAL_UNSTABLE)
|
||||
}
|
||||
|
||||
let export = attr::contains_name(&attrs, "macro_export");
|
||||
let def = ast::MacroDef {
|
||||
ident: it.ident,
|
||||
attrs: it.attrs.clone(),
|
||||
ident: ident,
|
||||
attrs: attrs,
|
||||
id: ast::DUMMY_NODE_ID,
|
||||
span: it.span,
|
||||
span: span,
|
||||
imported_from: None,
|
||||
export: attr::contains_name(&it.attrs, "macro_export"),
|
||||
export: export,
|
||||
use_locally: true,
|
||||
allow_internal_unstable: allow_internal_unstable,
|
||||
body: tts,
|
||||
@@ -800,7 +801,7 @@ pub fn expand_item_mac(it: P<ast::Item>,
|
||||
return SmallVector::zero();
|
||||
}
|
||||
_ => {
|
||||
fld.cx.span_err(it.span,
|
||||
fld.cx.span_err(span,
|
||||
&format!("{}! is not legal in item position",
|
||||
extname));
|
||||
return SmallVector::zero();
|
||||
|
||||
@@ -197,6 +197,12 @@ const KNOWN_FEATURES: &'static [(&'static str, &'static str, Option<u32>, Status
|
||||
|
||||
// allow overloading augmented assignment operations like `a += b`
|
||||
("augmented_assignments", "1.5.0", None, Active),
|
||||
|
||||
// allow `#[no_debug]`
|
||||
("no_debug", "1.5.0", None, Active),
|
||||
|
||||
// allow `#[omit_gdb_pretty_printer_section]`
|
||||
("omit_gdb_pretty_printer_section", "1.5.0", None, Active),
|
||||
];
|
||||
// (changing above list without updating src/doc/reference.md makes @cmr sad)
|
||||
|
||||
@@ -320,8 +326,13 @@ pub const KNOWN_ATTRIBUTES: &'static [(&'static str, AttributeType, AttributeGat
|
||||
("link_section", Whitelisted, Ungated),
|
||||
("no_builtins", Whitelisted, Ungated),
|
||||
("no_mangle", Whitelisted, Ungated),
|
||||
("no_debug", Whitelisted, Ungated),
|
||||
("omit_gdb_pretty_printer_section", Whitelisted, Ungated),
|
||||
("no_debug", Whitelisted, Gated("no_debug",
|
||||
"the `#[no_debug]` attribute \
|
||||
is an experimental feature")),
|
||||
("omit_gdb_pretty_printer_section", Whitelisted, Gated("omit_gdb_pretty_printer_section",
|
||||
"the `#[omit_gdb_pretty_printer_section]` \
|
||||
attribute is just used for the Rust test \
|
||||
suite")),
|
||||
("unsafe_no_drop_flag", Whitelisted, Gated("unsafe_no_drop_flag",
|
||||
"unsafe_no_drop_flag has unstable semantics \
|
||||
and may be removed in the future")),
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#![crate_type = "rlib"]
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
// no-prefer-dynamic
|
||||
|
||||
12
src/test/compile-fail/feature-gate-no-debug.rs
Normal file
12
src/test/compile-fail/feature-gate-no-debug.rs
Normal file
@@ -0,0 +1,12 @@
|
||||
// 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.
|
||||
|
||||
#[no_debug] //~ ERROR the `#[no_debug]` attribute is
|
||||
fn main() {}
|
||||
@@ -0,0 +1,12 @@
|
||||
// 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.
|
||||
|
||||
#[omit_gdb_pretty_printer_section] //~ ERROR the `#[omit_gdb_pretty_printer_section]` attribute is
|
||||
fn main() {}
|
||||
@@ -80,6 +80,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![allow(dead_code)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
trait TraitWithAssocType {
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![allow(dead_code)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
// N.B. These are `mut` only so they don't constant fold away.
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
// gdb-command:continue
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
// N.B. These are `mut` only so they don't constant fold away.
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
// gdb-command:continue
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -82,6 +82,7 @@
|
||||
// gdb-check:$28 = 9.25
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
static mut B: bool = false;
|
||||
|
||||
@@ -87,6 +87,7 @@
|
||||
// lldb-check:[...]$12 = 3.5
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -108,6 +108,7 @@
|
||||
// lldb-check:[...]$12 = 3.5
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
// lldb-check:[...]$2 = TheC
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
enum ABC { TheA, TheB, TheC }
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
// lldb-check:[...]$2 = TheOnlyCase(4820353753753434)
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
// The first element is to ensure proper alignment, irrespective of the machines word size. Since
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct SomeStruct {
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -112,6 +112,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct StructWithSomePadding {
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
// lldb-check:[...]$6 = Case1 { x: 0, y: 8970181431921507452 }
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
#[derive(Clone)]
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
// lldb-check:[...]$2 = (4444.5, 5555, 6666, 7777.5)
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
trait Trait {
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
// lldb-check:[...]$6 = (StructWithDrop { a: OneHundred, b: Vienna }, 9)
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
use self::AnEnum::{OneHundred, OneThousand, OneMillion};
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![allow(dead_code)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
use self::AutoDiscriminant::{One, Two, Three};
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn some_generic_fun<T1, T2>(a: T1, b: T2) -> (T2, T1) {
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
// compile-flags:-g
|
||||
|
||||
#![allow(dead_code, unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
#![feature(const_fn)]
|
||||
#![feature(static_mutex)]
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
// compile-flags:-g
|
||||
|
||||
#![allow(dead_code, unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
// This test makes sure that the compiler doesn't crash when trying to assign
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
// min-lldb-version: 310
|
||||
@@ -20,7 +21,7 @@ extern crate cross_crate_spans;
|
||||
|
||||
// === GDB TESTS ===================================================================================
|
||||
|
||||
// gdb-command:break cross_crate_spans.rs:23
|
||||
// gdb-command:break cross_crate_spans.rs:24
|
||||
// gdb-command:run
|
||||
|
||||
// gdb-command:print result
|
||||
@@ -43,7 +44,7 @@ extern crate cross_crate_spans;
|
||||
|
||||
// === LLDB TESTS ==================================================================================
|
||||
|
||||
// lldb-command:b cross_crate_spans.rs:23
|
||||
// lldb-command:b cross_crate_spans.rs:24
|
||||
// lldb-command:run
|
||||
|
||||
// lldb-command:print result
|
||||
|
||||
@@ -312,6 +312,7 @@
|
||||
#![allow(unused_variables)]
|
||||
#![feature(box_patterns)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
use self::Univariant::Unit;
|
||||
|
||||
@@ -154,6 +154,7 @@
|
||||
#![allow(unused_variables)]
|
||||
#![feature(box_patterns)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct Struct {
|
||||
|
||||
@@ -245,6 +245,7 @@
|
||||
#![allow(unused_variables)]
|
||||
#![feature(box_patterns)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
use self::Univariant::Unit;
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
// lldb-check:[...]$4 = StructPaddedAtEnd { x: [22, 23], y: [24, 25] }
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct NoPadding1 {
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![allow(dead_code)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
|
||||
|
||||
@@ -224,6 +224,7 @@
|
||||
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn immediate_args(a: isize, b: bool, c: f64) {
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
// lldb-command:continue
|
||||
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -247,6 +247,7 @@
|
||||
// lldb-command:continue
|
||||
|
||||
#![allow(dead_code, unused_assignments, unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
#[no_stack_check]
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
// lldb-command:continue
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn immediate_args(a: isize, b: bool, c: f64) {
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![allow(dead_code)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
// This test case makes sure that we get correct type descriptions for the enum
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
// lldb-check:[...]$8 = ((5, Struct { a: 6, b: 7.5 }), (Struct { a: 6, b: 7.5 }, 5))
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
#[derive(Clone)]
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
// lldb-command:continue
|
||||
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn outer<TA: Clone>(a: TA) {
|
||||
|
||||
@@ -112,6 +112,7 @@
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
// gdb-command:continue
|
||||
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct Struct {
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
// gdb-check:$4 = {{a = -1}}
|
||||
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
use self::Regular::{Case1, Case2, Case3};
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
// lldb-check:[...]$3 = AGenericStruct<f64, generic_struct::AGenericStruct<i32, f64>> { key: 6.5, value: AGenericStruct<i32, f64> { key: 7, value: 8.5 } }
|
||||
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct AGenericStruct<TKey, TValue> {
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
// lldb-command:print univariant
|
||||
// lldb-check:[...]$3 = TheOnlyCase(-1)
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
use self::Regular::{Case1, Case2, Case3};
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
// lldb-command:continue
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
// This test case makes sure that debug info does not ICE when include_str is
|
||||
|
||||
@@ -16,9 +16,10 @@
|
||||
|
||||
// gdb-command:run
|
||||
// gdb-command:next
|
||||
// gdb-check:[...]34[...]s
|
||||
// gdb-check:[...]35[...]s
|
||||
// gdb-command:continue
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
// IF YOU MODIFY THIS FILE, BE CAREFUL TO ADAPT THE LINE NUMBERS IN THE DEBUGGER COMMANDS
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![allow(dead_code)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct ZeroSizedStruct;
|
||||
|
||||
@@ -85,6 +85,7 @@
|
||||
// lldb-check:[...]$6 = 1000000
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -133,6 +133,7 @@
|
||||
// lldb-check:[...]$15 = -1
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -125,6 +125,7 @@
|
||||
// lldb-check:[...]$17 = 232
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct Struct {
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
// lldb-check:[...]$5 = false
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -131,6 +131,7 @@
|
||||
// lldb-check:[...]$12 = 2
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
// lldb-command:continue
|
||||
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -131,6 +131,7 @@
|
||||
// lldb-check:[...]$12 = 2
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -110,6 +110,7 @@
|
||||
// lldb-command:continue
|
||||
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
macro_rules! trivial {
|
||||
|
||||
@@ -348,6 +348,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![allow(unused_assignments)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
static mut MUT_INT: isize = 0;
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct Struct {
|
||||
|
||||
@@ -113,6 +113,7 @@
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
|
||||
@@ -113,6 +113,7 @@
|
||||
|
||||
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
|
||||
@@ -113,6 +113,7 @@
|
||||
|
||||
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
|
||||
@@ -113,6 +113,7 @@
|
||||
|
||||
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
|
||||
@@ -113,6 +113,7 @@
|
||||
|
||||
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
// lldb-check:[...]$2 = 30303
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn function_one() {
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
// lldb-check:[...]$2 = 30303
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn function_one() {
|
||||
|
||||
@@ -93,6 +93,7 @@
|
||||
// lldb-check:[...]$11 = 20
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
// gdb-check:$2 = {<No data fields>}
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
enum ANilEnum {}
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
// gdb-command:continue
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(no_debug)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn function_with_debuginfo() {
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
// lldb-check:[...]$9 = Nope
|
||||
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
// If a struct has exactly two variants, one of them is empty, and the other one
|
||||
|
||||
@@ -73,6 +73,7 @@
|
||||
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
#[repr(packed)]
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
// lldb-check:[...]$5 = 40
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
#[repr(packed)]
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
// is taken from issue #11083.
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
pub struct Window<'a> {
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
use self::Opt::{Empty, Val};
|
||||
|
||||
@@ -112,6 +112,7 @@
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
|
||||
@@ -112,6 +112,7 @@
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
// lldb-command:continue
|
||||
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn a_function(x: bool, y: bool) {
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
// lldb-check:[...]$5 = 20
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
// gdb-command:continue
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
#![feature(core_simd)]
|
||||
|
||||
|
||||
@@ -78,6 +78,7 @@
|
||||
// lldb-command:continue
|
||||
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -96,6 +96,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![allow(dead_code)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct NoPadding16 {
|
||||
|
||||
@@ -91,6 +91,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![allow(dead_code)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
static mut NO_PADDING_8: (i8, u8) = (-50, 50);
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
// lldb-check:[...]$4 = 5
|
||||
// lldb-command:continue
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct Struct {
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
// lldb-check:[...]$2 = TheOnlyCase(Struct { x: 123, y: 456, z: 789 })
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
use self::Regular::{Case1, Case2};
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
// lldb-check:[...]$7 = Tree { x: Simple { x: 25 }, y: InternalPaddingParent { x: InternalPadding { x: 26, y: 27 }, y: InternalPadding { x: 28, y: 29 }, z: InternalPadding { x: 30, y: 31 } }, z: BagInBag { x: Bag { x: Simple { x: 32 } } } }
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct Simple {
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
// lldb-check:[...]$3 = TheOnlyCase { a: -1 }
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
use self::Regular::{Case1, Case2, Case3};
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
// lldb-check:[...]$3 = NestedOuter { a: NestedInner { a: WithDestructor { x: 7890, y: 9870 } } }
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct NoDestructor {
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
trait Trait {
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
// gdb-check:$10 = {x = {__0 = {__0 = 40, __1 = 41, __2 = 42}, __1 = {__0 = 43, __1 = 44}}, y = {__0 = 45, __1 = 46, __2 = 47, __3 = 48}}
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct NoPadding1 {
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
// lldb-check:[...]$6 = ((21, 22), 23)
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
// structs.
|
||||
|
||||
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct NoPadding16(u16, i16);
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
// lldb-check:[...]$3 = TheOnlyCase(-1)
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
use self::Regular::{Case1, Case2, Case3};
|
||||
|
||||
@@ -175,6 +175,7 @@
|
||||
|
||||
#![feature(box_syntax)]
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
use self::Enum1::{Variant1, Variant2};
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
// The first element is to ensure proper alignment, irrespective of the machines word size. Since
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
// compile-flags:-g
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
// No need to actually run the debugger, just make sure that the compiler can
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct Struct {
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
|
||||
#![allow(unused_variables)]
|
||||
#![feature(unboxed_closures, box_syntax)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct Struct {
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
|
||||
#![feature(unboxed_closures, box_syntax)]
|
||||
#![allow(unused_variables)]
|
||||
#![feature(omit_gdb_pretty_printer_section)]
|
||||
#![omit_gdb_pretty_printer_section]
|
||||
|
||||
struct Struct {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user