mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-29 19:47:38 +00:00
Auto merge of #63029 - petrochenkov:rpass, r=Centril
Move run-pass tests to ui This is the second attempt at doing https://github.com/rust-lang/rust/pull/53994 (which was previously reverted in https://github.com/rust-lang/rust/pull/54530). The issue with inability to run the test suite in a faster way (https://github.com/rust-lang/rust/issues/54047) that motivated the revert was recently addressed by https://github.com/rust-lang/rust/pull/61755. r? @Centril
This commit is contained in:
commit
c798dffac9
@ -55,11 +55,11 @@ The script accepts commands, flags, and arguments to determine what to do:
|
|||||||
# run all unit tests
|
# run all unit tests
|
||||||
./x.py test
|
./x.py test
|
||||||
|
|
||||||
# execute the run-pass test suite
|
# execute the UI test suite
|
||||||
./x.py test src/test/run-pass
|
./x.py test src/test/ui
|
||||||
|
|
||||||
# execute only some tests in the run-pass test suite
|
# execute only some tests in the UI test suite
|
||||||
./x.py test src/test/run-pass --test-args substring-of-test-name
|
./x.py test src/test/ui --test-args substring-of-test-name
|
||||||
|
|
||||||
# execute tests in the standard library in stage0
|
# execute tests in the standard library in stage0
|
||||||
./x.py test --stage 0 src/libstd
|
./x.py test --stage 0 src/libstd
|
||||||
@ -215,7 +215,7 @@ build/
|
|||||||
|
|
||||||
# Output for all compiletest-based test suites
|
# Output for all compiletest-based test suites
|
||||||
test/
|
test/
|
||||||
run-pass/
|
ui/
|
||||||
compile-fail/
|
compile-fail/
|
||||||
debuginfo/
|
debuginfo/
|
||||||
...
|
...
|
||||||
|
@ -371,7 +371,6 @@ impl<'a> Builder<'a> {
|
|||||||
Kind::Test => describe!(
|
Kind::Test => describe!(
|
||||||
test::Tidy,
|
test::Tidy,
|
||||||
test::Ui,
|
test::Ui,
|
||||||
test::RunPass,
|
|
||||||
test::CompileFail,
|
test::CompileFail,
|
||||||
test::RunFail,
|
test::RunFail,
|
||||||
test::RunPassValgrind,
|
test::RunPassValgrind,
|
||||||
@ -382,10 +381,8 @@ impl<'a> Builder<'a> {
|
|||||||
test::Incremental,
|
test::Incremental,
|
||||||
test::Debuginfo,
|
test::Debuginfo,
|
||||||
test::UiFullDeps,
|
test::UiFullDeps,
|
||||||
test::RunPassFullDeps,
|
|
||||||
test::Rustdoc,
|
test::Rustdoc,
|
||||||
test::Pretty,
|
test::Pretty,
|
||||||
test::RunPassPretty,
|
|
||||||
test::RunFailPretty,
|
test::RunFailPretty,
|
||||||
test::RunPassValgrindPretty,
|
test::RunPassValgrindPretty,
|
||||||
test::Crate,
|
test::Crate,
|
||||||
|
@ -629,7 +629,6 @@ fn test_with_no_doc_stage0() {
|
|||||||
fn test_exclude() {
|
fn test_exclude() {
|
||||||
let mut config = configure(&[], &[]);
|
let mut config = configure(&[], &[]);
|
||||||
config.exclude = vec![
|
config.exclude = vec![
|
||||||
"src/test/run-pass".into(),
|
|
||||||
"src/tools/tidy".into(),
|
"src/tools/tidy".into(),
|
||||||
];
|
];
|
||||||
config.cmd = Subcommand::Test {
|
config.cmd = Subcommand::Test {
|
||||||
@ -648,11 +647,9 @@ fn test_exclude() {
|
|||||||
let builder = Builder::new(&build);
|
let builder = Builder::new(&build);
|
||||||
builder.run_step_descriptions(&Builder::get_step_descriptions(Kind::Test), &[]);
|
builder.run_step_descriptions(&Builder::get_step_descriptions(Kind::Test), &[]);
|
||||||
|
|
||||||
// Ensure we have really excluded run-pass & tidy
|
// Ensure we have really excluded tidy
|
||||||
assert!(!builder.cache.contains::<test::RunPass>());
|
|
||||||
assert!(!builder.cache.contains::<test::Tidy>());
|
assert!(!builder.cache.contains::<test::Tidy>());
|
||||||
|
|
||||||
// Ensure other tests are not affected.
|
// Ensure other tests are not affected.
|
||||||
assert!(builder.cache.contains::<test::RunPassFullDeps>());
|
|
||||||
assert!(builder.cache.contains::<test::RustdocUi>());
|
assert!(builder.cache.contains::<test::RustdocUi>());
|
||||||
}
|
}
|
||||||
|
@ -330,7 +330,7 @@ Arguments:
|
|||||||
This subcommand accepts a number of paths to directories to tests that
|
This subcommand accepts a number of paths to directories to tests that
|
||||||
should be compiled and run. For example:
|
should be compiled and run. For example:
|
||||||
|
|
||||||
./x.py test src/test/run-pass
|
./x.py test src/test/ui
|
||||||
./x.py test src/libstd --test-args hash_map
|
./x.py test src/libstd --test-args hash_map
|
||||||
./x.py test src/libstd --stage 0 --no-doc
|
./x.py test src/libstd --stage 0 --no-doc
|
||||||
./x.py test src/test/ui --bless
|
./x.py test src/test/ui --bless
|
||||||
|
@ -48,10 +48,8 @@ check:
|
|||||||
$(Q)$(BOOTSTRAP) test $(BOOTSTRAP_ARGS)
|
$(Q)$(BOOTSTRAP) test $(BOOTSTRAP_ARGS)
|
||||||
check-aux:
|
check-aux:
|
||||||
$(Q)$(BOOTSTRAP) test \
|
$(Q)$(BOOTSTRAP) test \
|
||||||
src/test/run-pass/pretty \
|
|
||||||
src/test/run-fail/pretty \
|
src/test/run-fail/pretty \
|
||||||
src/test/run-pass-valgrind/pretty \
|
src/test/run-pass-valgrind/pretty \
|
||||||
src/test/run-pass-fulldeps/pretty \
|
|
||||||
$(AUX_ARGS) \
|
$(AUX_ARGS) \
|
||||||
$(BOOTSTRAP_ARGS)
|
$(BOOTSTRAP_ARGS)
|
||||||
check-bootstrap:
|
check-bootstrap:
|
||||||
@ -75,9 +73,7 @@ check-stage2-T-x86_64-unknown-linux-musl-H-x86_64-unknown-linux-gnu:
|
|||||||
|
|
||||||
TESTS_IN_2 := \
|
TESTS_IN_2 := \
|
||||||
src/test/ui \
|
src/test/ui \
|
||||||
src/test/run-pass \
|
|
||||||
src/test/compile-fail \
|
src/test/compile-fail \
|
||||||
src/test/run-pass-fulldeps \
|
|
||||||
src/tools/linkchecker
|
src/tools/linkchecker
|
||||||
|
|
||||||
ci-subset-1:
|
ci-subset-1:
|
||||||
|
@ -547,7 +547,7 @@ impl Step for TestHelpers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Compiles the `rust_test_helpers.c` library which we used in various
|
/// Compiles the `rust_test_helpers.c` library which we used in various
|
||||||
/// `run-pass` test suites for ABI testing.
|
/// `run-pass` tests for ABI testing.
|
||||||
fn run(self, builder: &Builder<'_>) {
|
fn run(self, builder: &Builder<'_>) {
|
||||||
if builder.config.dry_run {
|
if builder.config.dry_run {
|
||||||
return;
|
return;
|
||||||
|
@ -820,13 +820,6 @@ default_test_with_compare_mode!(Ui {
|
|||||||
compare_mode: "nll"
|
compare_mode: "nll"
|
||||||
});
|
});
|
||||||
|
|
||||||
default_test_with_compare_mode!(RunPass {
|
|
||||||
path: "src/test/run-pass",
|
|
||||||
mode: "run-pass",
|
|
||||||
suite: "run-pass",
|
|
||||||
compare_mode: "nll"
|
|
||||||
});
|
|
||||||
|
|
||||||
default_test!(CompileFail {
|
default_test!(CompileFail {
|
||||||
path: "src/test/compile-fail",
|
path: "src/test/compile-fail",
|
||||||
mode: "compile-fail",
|
mode: "compile-fail",
|
||||||
@ -881,12 +874,6 @@ host_test!(UiFullDeps {
|
|||||||
suite: "ui-fulldeps"
|
suite: "ui-fulldeps"
|
||||||
});
|
});
|
||||||
|
|
||||||
host_test!(RunPassFullDeps {
|
|
||||||
path: "src/test/run-pass-fulldeps",
|
|
||||||
mode: "run-pass",
|
|
||||||
suite: "run-pass-fulldeps"
|
|
||||||
});
|
|
||||||
|
|
||||||
host_test!(Rustdoc {
|
host_test!(Rustdoc {
|
||||||
path: "src/test/rustdoc",
|
path: "src/test/rustdoc",
|
||||||
mode: "rustdoc",
|
mode: "rustdoc",
|
||||||
@ -898,13 +885,6 @@ host_test!(Pretty {
|
|||||||
mode: "pretty",
|
mode: "pretty",
|
||||||
suite: "pretty"
|
suite: "pretty"
|
||||||
});
|
});
|
||||||
test!(RunPassPretty {
|
|
||||||
path: "src/test/run-pass/pretty",
|
|
||||||
mode: "pretty",
|
|
||||||
suite: "run-pass",
|
|
||||||
default: false,
|
|
||||||
host: true
|
|
||||||
});
|
|
||||||
test!(RunFailPretty {
|
test!(RunFailPretty {
|
||||||
path: "src/test/run-fail/pretty",
|
path: "src/test/run-fail/pretty",
|
||||||
mode: "pretty",
|
mode: "pretty",
|
||||||
|
@ -32,7 +32,7 @@ ENV TARGETS=asmjs-unknown-emscripten
|
|||||||
ENV RUST_CONFIGURE_ARGS --enable-emscripten --disable-optimize-tests
|
ENV RUST_CONFIGURE_ARGS --enable-emscripten --disable-optimize-tests
|
||||||
|
|
||||||
ENV SCRIPT python2.7 ../x.py test --target $TARGETS \
|
ENV SCRIPT python2.7 ../x.py test --target $TARGETS \
|
||||||
src/test/run-pass \
|
src/test/ui \
|
||||||
src/test/run-fail \
|
src/test/run-fail \
|
||||||
src/libstd \
|
src/libstd \
|
||||||
src/liballoc \
|
src/liballoc \
|
||||||
|
@ -43,7 +43,6 @@ ENV WASM_TARGETS=wasm32-unknown-unknown
|
|||||||
ENV WASM_SCRIPT python2.7 /checkout/x.py test --target $WASM_TARGETS \
|
ENV WASM_SCRIPT python2.7 /checkout/x.py test --target $WASM_TARGETS \
|
||||||
src/test/run-make \
|
src/test/run-make \
|
||||||
src/test/ui \
|
src/test/ui \
|
||||||
src/test/run-pass \
|
|
||||||
src/test/compile-fail \
|
src/test/compile-fail \
|
||||||
src/test/mir-opt \
|
src/test/mir-opt \
|
||||||
src/test/codegen-units \
|
src/test/codegen-units \
|
||||||
|
@ -44,7 +44,7 @@ code that manipulates syntax trees at
|
|||||||
compile time.
|
compile time.
|
||||||
|
|
||||||
Let's write a plugin
|
Let's write a plugin
|
||||||
[`roman_numerals.rs`](https://github.com/rust-lang/rust/blob/master/src/test/run-pass-fulldeps/auxiliary/roman_numerals.rs)
|
[`roman_numerals.rs`](https://github.com/rust-lang/rust/blob/master/src/test/ui-fulldeps/auxiliary/roman_numerals.rs)
|
||||||
that implements Roman numeral integer literals.
|
that implements Roman numeral integer literals.
|
||||||
|
|
||||||
```rust,ignore
|
```rust,ignore
|
||||||
|
@ -2172,5 +2172,5 @@ impl<T: ?Sized + Debug> Debug for UnsafeCell<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If you expected tests to be here, look instead at the run-pass/ifmt.rs test,
|
// If you expected tests to be here, look instead at the ui/ifmt.rs test,
|
||||||
// it's a lot easier than creating all of the rt::Piece structures here.
|
// it's a lot easier than creating all of the rt::Piece structures here.
|
||||||
|
@ -747,7 +747,7 @@ However, it is not always unsafe to freeze the base pointer. In
|
|||||||
particular, if the referent is frozen, there is no harm in it:
|
particular, if the referent is frozen, there is no harm in it:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
// src/test/run-pass/borrowck-borrow-of-mut-base-ptr-safe.rs
|
// src/test/ui/borrowck-borrow-of-mut-base-ptr-safe.rs
|
||||||
fn foo<'a>(mut t0: &'a mut i32,
|
fn foo<'a>(mut t0: &'a mut i32,
|
||||||
mut t1: &'a mut i32) {
|
mut t1: &'a mut i32) {
|
||||||
let p: &i32 = &*t0; // Freezes `*t0`
|
let p: &i32 = &*t0; // Freezes `*t0`
|
||||||
@ -763,7 +763,7 @@ already frozen. In particular, we cannot assign to `*t0` through the
|
|||||||
new alias `t2`, as demonstrated in this test case:
|
new alias `t2`, as demonstrated in this test case:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
// src/test/run-pass/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs
|
// src/test/ui/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs
|
||||||
fn foo(t0: & &mut i32) {
|
fn foo(t0: & &mut i32) {
|
||||||
let t1 = t0;
|
let t1 = t0;
|
||||||
let p: &i32 = &**t0;
|
let p: &i32 = &**t0;
|
||||||
|
@ -88,7 +88,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||||||
// For each ampersand peeled off, update the binding mode and push the original
|
// For each ampersand peeled off, update the binding mode and push the original
|
||||||
// type into the adjustments vector.
|
// type into the adjustments vector.
|
||||||
//
|
//
|
||||||
// See the examples in `run-pass/match-defbm*.rs`.
|
// See the examples in `ui/match-defbm*.rs`.
|
||||||
let mut pat_adjustments = vec![];
|
let mut pat_adjustments = vec![];
|
||||||
while let ty::Ref(_, inner_ty, inner_mutability) = exp_ty.sty {
|
while let ty::Ref(_, inner_ty, inner_mutability) = exp_ty.sty {
|
||||||
debug!("inspecting {:?}", exp_ty);
|
debug!("inspecting {:?}", exp_ty);
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
//! useful for freezing mut/const things (that is, when the expected is &T
|
//! useful for freezing mut/const things (that is, when the expected is &T
|
||||||
//! but you have &const T or &mut T) and also for avoiding the linearity
|
//! but you have &const T or &mut T) and also for avoiding the linearity
|
||||||
//! of mut things (when the expected is &mut T and you have &mut T). See
|
//! of mut things (when the expected is &mut T and you have &mut T). See
|
||||||
//! the various `src/test/run-pass/coerce-reborrow-*.rs` tests for
|
//! the various `src/test/ui/coerce-reborrow-*.rs` tests for
|
||||||
//! examples of where this is useful.
|
//! examples of where this is useful.
|
||||||
//!
|
//!
|
||||||
//! ## Subtle note
|
//! ## Subtle note
|
||||||
@ -346,7 +346,7 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> {
|
|||||||
// too strong. Consider a coercion from `&'a &'x Rc<T>` to
|
// too strong. Consider a coercion from `&'a &'x Rc<T>` to
|
||||||
// `&'b T`. In this case, `'a` is actually irrelevant.
|
// `&'b T`. In this case, `'a` is actually irrelevant.
|
||||||
// The pointer we want is `LUB('x, 'b`). If we choose `LUB('a,'b)`
|
// The pointer we want is `LUB('x, 'b`). If we choose `LUB('a,'b)`
|
||||||
// we get spurious errors (`run-pass/regions-lub-ref-ref-rc.rs`).
|
// we get spurious errors (`ui/regions-lub-ref-ref-rc.rs`).
|
||||||
// (The errors actually show up in borrowck, typically, because
|
// (The errors actually show up in borrowck, typically, because
|
||||||
// this extra edge causes the region `'a` to be inferred to something
|
// this extra edge causes the region `'a` to be inferred to something
|
||||||
// too big, which then results in borrowck errors.)
|
// too big, which then results in borrowck errors.)
|
||||||
|
@ -1394,7 +1394,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> {
|
|||||||
/// probe. This will result in a pending obligation so when more type-info is available we can
|
/// probe. This will result in a pending obligation so when more type-info is available we can
|
||||||
/// make the final decision.
|
/// make the final decision.
|
||||||
///
|
///
|
||||||
/// Example (`src/test/run-pass/method-two-trait-defer-resolution-1.rs`):
|
/// Example (`src/test/ui/method-two-trait-defer-resolution-1.rs`):
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
/// trait Foo { ... }
|
/// trait Foo { ... }
|
||||||
|
@ -312,7 +312,7 @@ impl<'a, 'tcx> Expectation<'tcx> {
|
|||||||
/// It is only the `&[1, 2, 3]` expression as a whole that can be coerced
|
/// It is only the `&[1, 2, 3]` expression as a whole that can be coerced
|
||||||
/// to the type `&[isize]`. Therefore, we propagate this more limited hint,
|
/// to the type `&[isize]`. Therefore, we propagate this more limited hint,
|
||||||
/// which still is useful, because it informs integer literals and the like.
|
/// which still is useful, because it informs integer literals and the like.
|
||||||
/// See the test case `test/run-pass/coerce-expect-unsized.rs` and #20169
|
/// See the test case `test/ui/coerce-expect-unsized.rs` and #20169
|
||||||
/// for examples of where this comes up,.
|
/// for examples of where this comes up,.
|
||||||
fn rvalue_hint(fcx: &FnCtxt<'a, 'tcx>, ty: Ty<'tcx>) -> Expectation<'tcx> {
|
fn rvalue_hint(fcx: &FnCtxt<'a, 'tcx>, ty: Ty<'tcx>) -> Expectation<'tcx> {
|
||||||
match fcx.tcx.struct_tail_without_normalization(ty).sty {
|
match fcx.tcx.struct_tail_without_normalization(ty).sty {
|
||||||
|
@ -1742,6 +1742,6 @@ mod tests {
|
|||||||
assert!(thread::current().id() != spawned_id);
|
assert!(thread::current().id() != spawned_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: the corresponding test for stderr is in run-pass/thread-stderr, due
|
// NOTE: the corresponding test for stderr is in ui/thread-stderr, due
|
||||||
// to the test harness apparently interfering with stderr configuration.
|
// to the test harness apparently interfering with stderr configuration.
|
||||||
}
|
}
|
||||||
|
@ -238,7 +238,7 @@ fn check_binders(
|
|||||||
match *lhs {
|
match *lhs {
|
||||||
TokenTree::Token(..) => {}
|
TokenTree::Token(..) => {}
|
||||||
// This can only happen when checking a nested macro because this LHS is then in the RHS of
|
// This can only happen when checking a nested macro because this LHS is then in the RHS of
|
||||||
// the outer macro. See run-pass/macros/macro-of-higher-order.rs where $y:$fragment in the
|
// the outer macro. See ui/macros/macro-of-higher-order.rs where $y:$fragment in the
|
||||||
// LHS of the nested macro (and RHS of the outer macro) is parsed as MetaVar(y) Colon
|
// LHS of the nested macro (and RHS of the outer macro) is parsed as MetaVar(y) Colon
|
||||||
// MetaVar(fragment) and not as MetaVarDecl(y, fragment).
|
// MetaVar(fragment) and not as MetaVarDecl(y, fragment).
|
||||||
TokenTree::MetaVar(span, name) => {
|
TokenTree::MetaVar(span, name) => {
|
||||||
|
@ -305,7 +305,7 @@ impl HygieneData {
|
|||||||
// was defined at its invocation (i.e., inside the macros 2.0 definition)
|
// was defined at its invocation (i.e., inside the macros 2.0 definition)
|
||||||
// so that the macros 2.0 definition remains hygienic.
|
// so that the macros 2.0 definition remains hygienic.
|
||||||
//
|
//
|
||||||
// See the example at `test/run-pass/hygiene/legacy_interaction.rs`.
|
// See the example at `test/ui/hygiene/legacy_interaction.rs`.
|
||||||
for (expn_id, transparency) in self.marks(ctxt) {
|
for (expn_id, transparency) in self.marks(ctxt) {
|
||||||
call_site_ctxt = self.apply_mark_internal(call_site_ctxt, expn_id, transparency);
|
call_site_ctxt = self.apply_mark_internal(call_site_ctxt, expn_id, transparency);
|
||||||
}
|
}
|
||||||
|
1
src/test/run-pass/.gitattributes
vendored
1
src/test/run-pass/.gitattributes
vendored
@ -1 +0,0 @@
|
|||||||
lexer-crlf-line-endings-string-literal-doc-comment.rs -text
|
|
@ -1,22 +0,0 @@
|
|||||||
// no-prefer-dynamic
|
|
||||||
|
|
||||||
// This aux-file will require the eh_personality function to be codegen'd, but
|
|
||||||
// it hasn't been defined just yet. Make sure we don't explode.
|
|
||||||
|
|
||||||
#![no_std]
|
|
||||||
#![crate_type = "rlib"]
|
|
||||||
|
|
||||||
struct A;
|
|
||||||
|
|
||||||
impl core::ops::Drop for A {
|
|
||||||
fn drop(&mut self) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn foo() {
|
|
||||||
let _a = A;
|
|
||||||
panic!("wut");
|
|
||||||
}
|
|
||||||
|
|
||||||
mod std {
|
|
||||||
pub use core::{option, fmt};
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
#![crate_type = "rlib"]
|
|
||||||
#![feature(fundamental)]
|
|
||||||
|
|
||||||
pub trait MyCopy { }
|
|
||||||
impl MyCopy for i32 { }
|
|
||||||
|
|
||||||
pub struct MyStruct<T>(T);
|
|
||||||
|
|
||||||
#[fundamental]
|
|
||||||
pub struct MyFundamentalStruct<T>(T);
|
|
@ -1,15 +0,0 @@
|
|||||||
#![crate_type="lib"]
|
|
||||||
|
|
||||||
pub trait Remote {
|
|
||||||
fn foo(&self) { }
|
|
||||||
}
|
|
||||||
|
|
||||||
pub trait Remote1<T> {
|
|
||||||
fn foo(&self, t: T) { }
|
|
||||||
}
|
|
||||||
|
|
||||||
pub trait Remote2<T, U> {
|
|
||||||
fn foo(&self, t: T, u: U) { }
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct Pair<T,U>(T,U);
|
|
@ -1,5 +0,0 @@
|
|||||||
// Crate that exports a const fn. Used for testing cross-crate.
|
|
||||||
|
|
||||||
#![crate_type="rlib"]
|
|
||||||
|
|
||||||
pub const fn foo() -> usize { 22 }
|
|
@ -1,8 +0,0 @@
|
|||||||
warning: unreachable block in `if` expression
|
|
||||||
--> $DIR/if-ret.rs:4:24
|
|
||||||
|
|
|
||||||
LL | fn foo() { if (return) { } }
|
|
||||||
| ^^^
|
|
||||||
|
|
|
||||||
= note: `#[warn(unreachable_code)]` on by default
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
|||||||
pub fn increment(x: usize) -> usize {
|
|
||||||
x + 1
|
|
||||||
}
|
|
||||||
|
|
||||||
#[macro_export]
|
|
||||||
macro_rules! increment {
|
|
||||||
($x:expr) => ($crate::increment($x))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn check_local() {
|
|
||||||
assert_eq!(increment!(3), 4);
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
#![feature(staged_api)]
|
|
||||||
#![stable(feature = "unit_test", since = "1.0.0")]
|
|
||||||
|
|
||||||
#[unstable(feature = "unstable_macros", issue = "0")]
|
|
||||||
#[macro_export]
|
|
||||||
macro_rules! unstable_macro{ () => () }
|
|
@ -1,8 +0,0 @@
|
|||||||
warning: unused attribute
|
|
||||||
--> $DIR/macro-use-all-and-none.rs:5:1
|
|
||||||
|
|
|
||||||
LL | #[macro_use()]
|
|
||||||
| ^^^^^^^^^^^^^^
|
|
||||||
|
|
|
||||||
= note: `#[warn(unused_attributes)]` on by default
|
|
||||||
|
|
@ -1 +0,0 @@
|
|||||||
pub fn foo() {}
|
|
@ -1,42 +0,0 @@
|
|||||||
// run-pass
|
|
||||||
#![feature(crate_in_paths)]
|
|
||||||
#![allow(dead_code)]
|
|
||||||
use crate::m::f;
|
|
||||||
use crate as root;
|
|
||||||
|
|
||||||
mod m {
|
|
||||||
pub fn f() -> u8 { 1 }
|
|
||||||
pub fn g() -> u8 { 2 }
|
|
||||||
pub fn h() -> u8 { 3 }
|
|
||||||
|
|
||||||
// OK, visibilities are implicitly absolute like imports
|
|
||||||
pub(in crate::m) struct S;
|
|
||||||
}
|
|
||||||
|
|
||||||
mod n {
|
|
||||||
use crate::m::f;
|
|
||||||
use crate as root;
|
|
||||||
pub fn check() {
|
|
||||||
assert_eq!(f(), 1);
|
|
||||||
assert_eq!(crate::m::g(), 2);
|
|
||||||
assert_eq!(root::m::h(), 3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mod p {
|
|
||||||
use {super::f, crate::m::g, self::root::m::h};
|
|
||||||
use crate as root;
|
|
||||||
pub fn check() {
|
|
||||||
assert_eq!(f(), 1);
|
|
||||||
assert_eq!(g(), 2);
|
|
||||||
assert_eq!(h(), 3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
assert_eq!(f(), 1);
|
|
||||||
assert_eq!(crate::m::g(), 2);
|
|
||||||
assert_eq!(root::m::h(), 3);
|
|
||||||
n::check();
|
|
||||||
p::check();
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
warning: the feature `crate_in_paths` has been stable since 1.30.0 and no longer requires an attribute to enable
|
|
||||||
--> $DIR/crate-path-absolute.rs:2:12
|
|
||||||
|
|
|
||||||
LL | #![feature(crate_in_paths)]
|
|
||||||
| ^^^^^^^^^^^^^^
|
|
||||||
|
|
|
||||||
= note: `#[warn(stable_features)]` on by default
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
|||||||
// run-pass
|
|
||||||
#![feature(crate_in_paths)]
|
|
||||||
#![feature(crate_visibility_modifier)]
|
|
||||||
#![allow(dead_code)]
|
|
||||||
mod m {
|
|
||||||
pub struct Z;
|
|
||||||
pub struct S1(crate (::m::Z)); // OK
|
|
||||||
pub struct S2((crate ::m::Z)); // OK
|
|
||||||
pub struct S3(crate ::m::Z); // OK
|
|
||||||
pub struct S4(crate crate::m::Z); // OK
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
crate struct S; // OK (item in statement position)
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
warning: the feature `crate_in_paths` has been stable since 1.30.0 and no longer requires an attribute to enable
|
|
||||||
--> $DIR/crate-path-visibility-ambiguity.rs:2:12
|
|
||||||
|
|
|
||||||
LL | #![feature(crate_in_paths)]
|
|
||||||
| ^^^^^^^^^^^^^^
|
|
||||||
|
|
|
||||||
= note: `#[warn(stable_features)]` on by default
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
|||||||
#[derive(Debug, PartialEq)]
|
|
||||||
pub struct S;
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
|
||||||
pub struct Z;
|
|
||||||
|
|
||||||
pub trait Tr<'a> {}
|
|
@ -1,25 +0,0 @@
|
|||||||
// run-pass
|
|
||||||
#![allow(dead_code)]
|
|
||||||
// aux-build:xcrate.rs
|
|
||||||
// compile-flags:--extern xcrate
|
|
||||||
// edition:2018
|
|
||||||
|
|
||||||
#![allow(unused_imports)]
|
|
||||||
|
|
||||||
use xcrate::Z;
|
|
||||||
|
|
||||||
fn f() {
|
|
||||||
use xcrate;
|
|
||||||
use xcrate as ycrate;
|
|
||||||
let s = xcrate::S;
|
|
||||||
assert_eq!(format!("{:?}", s), "S");
|
|
||||||
let z = ycrate::Z;
|
|
||||||
assert_eq!(format!("{:?}", z), "Z");
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
let s = ::xcrate::S;
|
|
||||||
assert_eq!(format!("{:?}", s), "S");
|
|
||||||
let z = Z;
|
|
||||||
assert_eq!(format!("{:?}", z), "Z");
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
// run-pass
|
|
||||||
// Check that `#[test]` works with extern-absolute-paths enabled.
|
|
||||||
//
|
|
||||||
// Regression test for #47075.
|
|
||||||
|
|
||||||
// edition:2018
|
|
||||||
// compile-flags: --test
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test() {}
|
|
@ -1,14 +0,0 @@
|
|||||||
// run-pass
|
|
||||||
// edition:2018
|
|
||||||
|
|
||||||
// Tests that `core` and `std` are always available.
|
|
||||||
use core::iter;
|
|
||||||
use std::io;
|
|
||||||
// FIXME(eddyb) Add a `meta` crate to the distribution.
|
|
||||||
// use meta;
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
for _ in iter::once(()) {
|
|
||||||
io::stdout();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
// Simple smoke test that unsafe traits can be compiled etc.
|
|
||||||
|
|
||||||
pub unsafe trait Foo {
|
|
||||||
fn foo(&self) -> isize;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsafe impl Foo for isize {
|
|
||||||
fn foo(&self) -> isize { *self }
|
|
||||||
}
|
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(unused_imports)]
|
#![allow(unused_imports)]
|
||||||
// ignore-cross-compile
|
// ignore-cross-compile
|
||||||
|
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// Test that the Callbacks interface to the compiler works.
|
// Test that the Callbacks interface to the compiler works.
|
||||||
|
|
||||||
// ignore-cross-compile
|
// ignore-cross-compile
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
#![feature(rustc_private)]
|
#![feature(rustc_private)]
|
||||||
#![no_std]
|
#![no_std]
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(unused_imports)]
|
#![allow(unused_imports)]
|
||||||
|
|
||||||
#![feature(box_syntax)]
|
#![feature(box_syntax)]
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(unused_imports)]
|
#![allow(unused_imports)]
|
||||||
// This briefly tests the capability of `Cell` and `RefCell` to implement the
|
// This briefly tests the capability of `Cell` and `RefCell` to implement the
|
||||||
// `Encodable` and `Decodable` traits via `#[derive(Encodable, Decodable)]`
|
// `Encodable` and `Decodable` traits via `#[derive(Encodable, Decodable)]`
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![feature(rustc_private)]
|
#![feature(rustc_private)]
|
||||||
|
|
||||||
extern crate serialize;
|
extern crate serialize;
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(non_upper_case_globals)]
|
#![allow(non_upper_case_globals)]
|
||||||
#![feature(rustc_private)]
|
#![feature(rustc_private)]
|
||||||
extern crate serialize;
|
extern crate serialize;
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(unknown_lints)]
|
#![allow(unknown_lints)]
|
||||||
// Check that an arena (TypedArena) can carry elements whose drop
|
// Check that an arena (TypedArena) can carry elements whose drop
|
||||||
// methods might access borrowed data, as long as the borrowed data
|
// methods might access borrowed data, as long as the borrowed data
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// `#[derive(Trait)]` works for empty structs/variants with braces or parens.
|
// `#[derive(Trait)]` works for empty structs/variants with braces or parens.
|
||||||
|
|
||||||
#![feature(rustc_private)]
|
#![feature(rustc_private)]
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(unused_imports)]
|
#![allow(unused_imports)]
|
||||||
#![feature(rustc_private)]
|
#![feature(rustc_private)]
|
||||||
|
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(unused_must_use)]
|
#![allow(unused_must_use)]
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
#![allow(unused_imports)]
|
#![allow(unused_imports)]
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// aux-build:issue-13560-1.rs
|
// aux-build:issue-13560-1.rs
|
||||||
// aux-build:issue-13560-2.rs
|
// aux-build:issue-13560-2.rs
|
||||||
// aux-build:issue-13560-3.rs
|
// aux-build:issue-13560-3.rs
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(unused_mut)]
|
#![allow(unused_mut)]
|
||||||
#![allow(unused_imports)]
|
#![allow(unused_imports)]
|
||||||
#![feature(rustc_private)]
|
#![feature(rustc_private)]
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(unused_variables)]
|
#![allow(unused_variables)]
|
||||||
// no-prefer-dynamic
|
// no-prefer-dynamic
|
||||||
// ignore-cross-compile
|
// ignore-cross-compile
|
@ -1,10 +1,11 @@
|
|||||||
// aux-build:lint-for-crate.rs
|
// run-pass
|
||||||
|
// aux-build:lint-for-crate-rpass.rs
|
||||||
// ignore-stage1
|
// ignore-stage1
|
||||||
// compile-flags: -D crate-not-okay
|
// compile-flags: -D crate-not-okay
|
||||||
|
|
||||||
#![feature(plugin, custom_attribute, custom_inner_attributes, rustc_attrs)]
|
#![feature(plugin, custom_attribute, custom_inner_attributes, rustc_attrs)]
|
||||||
|
|
||||||
#![plugin(lint_for_crate)]
|
#![plugin(lint_for_crate_rpass)]
|
||||||
#![rustc_crate_okay]
|
#![rustc_crate_okay]
|
||||||
#![rustc_crate_blue]
|
#![rustc_crate_blue]
|
||||||
#![rustc_crate_red]
|
#![rustc_crate_red]
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(unused_imports)]
|
#![allow(unused_imports)]
|
||||||
#![allow(unused_must_use)]
|
#![allow(unused_must_use)]
|
||||||
// pretty-expanded FIXME #23616
|
// pretty-expanded FIXME #23616
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// aux-build:issue-16822.rs
|
// aux-build:issue-16822.rs
|
||||||
|
|
||||||
extern crate issue_16822 as lib;
|
extern crate issue_16822 as lib;
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// aux-build:issue-18502.rs
|
// aux-build:issue-18502.rs
|
||||||
|
|
||||||
extern crate issue_18502 as fmt;
|
extern crate issue_18502 as fmt;
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// aux-build:issue-24106.rs
|
// aux-build:issue-24106.rs
|
||||||
|
|
||||||
extern crate issue_24106;
|
extern crate issue_24106;
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
#![feature(rustc_private)]
|
#![feature(rustc_private)]
|
||||||
|
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(non_camel_case_types)]
|
#![allow(non_camel_case_types)]
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
#![feature(rustc_private)]
|
#![feature(rustc_private)]
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// aux-build:issue-40001-plugin.rs
|
// aux-build:issue-40001-plugin.rs
|
||||||
// ignore-stage1
|
// ignore-stage1
|
||||||
|
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
|
|
||||||
#![feature(rustc_private)]
|
#![feature(rustc_private)]
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// Issue #4036: Test for an issue that arose around fixing up type inference
|
// Issue #4036: Test for an issue that arose around fixing up type inference
|
||||||
// byproducts in vtable records.
|
// byproducts in vtable records.
|
||||||
|
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// aux-build:linkage-visibility.rs
|
// aux-build:linkage-visibility.rs
|
||||||
// ignore-android: FIXME(#10356)
|
// ignore-android: FIXME(#10356)
|
||||||
// ignore-windows: std::dynamic_lib does not work on Windows well
|
// ignore-windows: std::dynamic_lib does not work on Windows well
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// aux-build:llvm-pass-plugin.rs
|
// aux-build:llvm-pass-plugin.rs
|
||||||
// ignore-stage1
|
// ignore-stage1
|
||||||
|
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// aux-build:lto-syntax-extension-lib.rs
|
// aux-build:lto-syntax-extension-lib.rs
|
||||||
// aux-build:lto-syntax-extension-plugin.rs
|
// aux-build:lto-syntax-extension-plugin.rs
|
||||||
// compile-flags:-C lto
|
// compile-flags:-C lto
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(plugin_as_library)]
|
#![allow(plugin_as_library)]
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
#![allow(unused_variables)]
|
#![allow(unused_variables)]
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// Testing that a libsyntax can parse modules with canonicalized base path
|
// Testing that a libsyntax can parse modules with canonicalized base path
|
||||||
// ignore-cross-compile
|
// ignore-cross-compile
|
||||||
|
|
@ -1 +1,3 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
pub fn foo() -> isize { 10 }
|
pub fn foo() -> isize { 10 }
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// This test case tests whether we can handle code bases that contain a high
|
// This test case tests whether we can handle code bases that contain a high
|
||||||
// number of closures, something that needs special handling in the MingGW
|
// number of closures, something that needs special handling in the MingGW
|
||||||
// toolchain.
|
// toolchain.
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![feature(rustc_private)]
|
#![feature(rustc_private)]
|
||||||
|
|
||||||
extern crate rustc_data_structures;
|
extern crate rustc_data_structures;
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// aux-build:outlive-expansion-phase.rs
|
// aux-build:outlive-expansion-phase.rs
|
||||||
// ignore-stage1
|
// ignore-stage1
|
||||||
|
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// aux-build:plugin-args.rs
|
// aux-build:plugin-args.rs
|
||||||
// ignore-stage1
|
// ignore-stage1
|
||||||
|
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// aux-build:plugin-args.rs
|
// aux-build:plugin-args.rs
|
||||||
// ignore-stage1
|
// ignore-stage1
|
||||||
|
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// aux-build:plugin-args.rs
|
// aux-build:plugin-args.rs
|
||||||
// ignore-stage1
|
// ignore-stage1
|
||||||
|
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// ignore-cross-compile
|
// ignore-cross-compile
|
||||||
|
|
||||||
// The general idea of this test is to enumerate all "interesting" expressions and check that
|
// The general idea of this test is to enumerate all "interesting" expressions and check that
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
#![allow(unused_imports)]
|
#![allow(unused_imports)]
|
||||||
|
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![allow(unused_must_use)]
|
#![allow(unused_must_use)]
|
||||||
#![allow(unused_imports)]
|
#![allow(unused_imports)]
|
||||||
// This test can't be a unit test in std,
|
// This test can't be a unit test in std,
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// aux-build:roman-numerals.rs
|
// aux-build:roman-numerals.rs
|
||||||
// ignore-stage1
|
// ignore-stage1
|
||||||
|
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
#![feature(rustc_private)]
|
#![feature(rustc_private)]
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
@ -1,3 +1,4 @@
|
|||||||
|
// run-pass
|
||||||
// ignore-cross-compile
|
// ignore-cross-compile
|
||||||
|
|
||||||
use std::env;
|
use std::env;
|
@ -1,3 +1,5 @@
|
|||||||
|
// run-pass
|
||||||
|
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::{Read, Write};
|
use std::io::{Read, Write};
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user