diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/debuginfo/function-names.rs | 2 | ||||
| -rw-r--r-- | tests/ui-fulldeps/internal-lints/ty_tykind_usage.rs | 30 | ||||
| -rw-r--r-- | tests/ui-fulldeps/internal-lints/ty_tykind_usage.stderr | 176 | ||||
| -rw-r--r-- | tests/ui/feature-gates/feature-gate-auto-traits.rs | 2 | ||||
| -rw-r--r-- | tests/ui/feature-gates/feature-gate-auto-traits.stderr | 2 | ||||
| -rw-r--r-- | tests/ui/symbol-names/basic.legacy.stderr | 4 | ||||
| -rw-r--r-- | tests/ui/symbol-names/issue-60925.legacy.stderr | 4 | ||||
| -rw-r--r-- | tests/ui/traits/negative-impls/feature-gate-negative_impls.rs | 2 | ||||
| -rw-r--r-- | tests/ui/traits/negative-impls/feature-gate-negative_impls.stderr | 2 | ||||
| -rw-r--r-- | tests/ui/unsafe-binders/expr.rs | 11 | ||||
| -rw-r--r-- | tests/ui/unsafe-binders/expr.stderr | 24 | ||||
| -rw-r--r-- | tests/ui/unsafe-binders/lifetime-resolution.rs | 7 | ||||
| -rw-r--r-- | tests/ui/unsafe-binders/lifetime-resolution.stderr | 24 | ||||
| -rw-r--r-- | tests/ui/unsafe-binders/mismatch.rs | 43 | ||||
| -rw-r--r-- | tests/ui/unsafe-binders/mismatch.stderr | 68 | ||||
| -rw-r--r-- | tests/ui/unsafe-binders/simple.rs | 3 | ||||
| -rw-r--r-- | tests/ui/unsafe-binders/simple.stderr | 10 |
17 files changed, 153 insertions, 261 deletions
diff --git a/tests/debuginfo/function-names.rs b/tests/debuginfo/function-names.rs index d9b61e73621..c51884451e5 100644 --- a/tests/debuginfo/function-names.rs +++ b/tests/debuginfo/function-names.rs @@ -37,7 +37,7 @@ // Const generic parameter // gdb-command:info functions -q function_names::const_generic_fn.* // gdb-check:[...]static fn function_names::const_generic_fn_bool<false>(); -// gdb-check:[...]static fn function_names::const_generic_fn_non_int<{CONST#a70c39591cb5f53d}>(); +// gdb-check:[...]static fn function_names::const_generic_fn_non_int<{CONST#ffa3db4ca1d52dce}>(); // gdb-check:[...]static fn function_names::const_generic_fn_signed_int<-7>(); // gdb-check:[...]static fn function_names::const_generic_fn_unsigned_int<14>(); diff --git a/tests/ui-fulldeps/internal-lints/ty_tykind_usage.rs b/tests/ui-fulldeps/internal-lints/ty_tykind_usage.rs index f77b318039d..91998a8ec45 100644 --- a/tests/ui-fulldeps/internal-lints/ty_tykind_usage.rs +++ b/tests/ui-fulldeps/internal-lints/ty_tykind_usage.rs @@ -13,34 +13,8 @@ fn main() { let kind = TyKind::Bool; //~ ERROR usage of `ty::TyKind::<kind>` match kind { - TyKind::Bool => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Char => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Int(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Uint(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Float(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Adt(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Foreign(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Str => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Array(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Pat(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Slice(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::RawPtr(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Ref(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::FnDef(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::FnPtr(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Dynamic(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Closure(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::CoroutineClosure(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Coroutine(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::CoroutineWitness(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Never => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Tuple(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Alias(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Param(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Bound(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Placeholder(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Infer(..) => (), //~ ERROR usage of `ty::TyKind::<kind>` - TyKind::Error(_) => (), //~ ERROR usage of `ty::TyKind::<kind>` + TyKind::Bool => {}, //~ ERROR usage of `ty::TyKind::<kind>` + _ => {} } if let ty::Int(int_ty) = kind {} diff --git a/tests/ui-fulldeps/internal-lints/ty_tykind_usage.stderr b/tests/ui-fulldeps/internal-lints/ty_tykind_usage.stderr index 53bf5cb1a82..19a73b36bfe 100644 --- a/tests/ui-fulldeps/internal-lints/ty_tykind_usage.stderr +++ b/tests/ui-fulldeps/internal-lints/ty_tykind_usage.stderr @@ -13,179 +13,17 @@ LL | #[deny(rustc::usage_of_ty_tykind)] error: usage of `ty::TyKind::<kind>` --> $DIR/ty_tykind_usage.rs:16:9 | -LL | TyKind::Bool => (), +LL | TyKind::Bool => {}, | ^^^^^^ help: try using `ty::<kind>` directly: `ty` error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:17:9 - | -LL | TyKind::Char => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:18:9 - | -LL | TyKind::Int(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:19:9 - | -LL | TyKind::Uint(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:20:9 - | -LL | TyKind::Float(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:21:9 - | -LL | TyKind::Adt(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:22:9 - | -LL | TyKind::Foreign(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:23:9 - | -LL | TyKind::Str => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:24:9 - | -LL | TyKind::Array(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:25:9 - | -LL | TyKind::Pat(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:26:9 - | -LL | TyKind::Slice(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:27:9 - | -LL | TyKind::RawPtr(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:28:9 - | -LL | TyKind::Ref(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:29:9 - | -LL | TyKind::FnDef(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:30:9 - | -LL | TyKind::FnPtr(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:31:9 - | -LL | TyKind::Dynamic(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:32:9 - | -LL | TyKind::Closure(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:33:9 - | -LL | TyKind::CoroutineClosure(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:34:9 - | -LL | TyKind::Coroutine(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:35:9 - | -LL | TyKind::CoroutineWitness(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:36:9 - | -LL | TyKind::Never => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:37:9 - | -LL | TyKind::Tuple(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:38:9 - | -LL | TyKind::Alias(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:39:9 - | -LL | TyKind::Param(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:40:9 - | -LL | TyKind::Bound(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:41:9 - | -LL | TyKind::Placeholder(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:42:9 - | -LL | TyKind::Infer(..) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:43:9 - | -LL | TyKind::Error(_) => (), - | ^^^^^^ help: try using `ty::<kind>` directly: `ty` - -error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:48:12 + --> $DIR/ty_tykind_usage.rs:22:12 | LL | if let TyKind::Int(int_ty) = kind {} | ^^^^^^ help: try using `ty::<kind>` directly: `ty` error: usage of `ty::TyKind` - --> $DIR/ty_tykind_usage.rs:50:24 + --> $DIR/ty_tykind_usage.rs:24:24 | LL | fn ty_kind(ty_bad: TyKind<'_>, ty_good: Ty<'_>) {} | ^^^^^^^^^^ @@ -193,7 +31,7 @@ LL | fn ty_kind(ty_bad: TyKind<'_>, ty_good: Ty<'_>) {} = help: try using `Ty` instead error: usage of `ty::TyKind` - --> $DIR/ty_tykind_usage.rs:52:37 + --> $DIR/ty_tykind_usage.rs:26:37 | LL | fn ir_ty_kind<I: Interner>(bad: IrTyKind<I>) -> IrTyKind<I> { | ^^^^^^^^^^^ @@ -201,7 +39,7 @@ LL | fn ir_ty_kind<I: Interner>(bad: IrTyKind<I>) -> IrTyKind<I> { = help: try using `Ty` instead error: usage of `ty::TyKind` - --> $DIR/ty_tykind_usage.rs:52:53 + --> $DIR/ty_tykind_usage.rs:26:53 | LL | fn ir_ty_kind<I: Interner>(bad: IrTyKind<I>) -> IrTyKind<I> { | ^^^^^^^^^^^ @@ -209,12 +47,12 @@ LL | fn ir_ty_kind<I: Interner>(bad: IrTyKind<I>) -> IrTyKind<I> { = help: try using `Ty` instead error: usage of `ty::TyKind::<kind>` - --> $DIR/ty_tykind_usage.rs:55:9 + --> $DIR/ty_tykind_usage.rs:29:9 | LL | IrTyKind::Bool | --------^^^^^^ | | | help: try using `ty::<kind>` directly: `ty` -error: aborting due to 34 previous errors +error: aborting due to 7 previous errors diff --git a/tests/ui/feature-gates/feature-gate-auto-traits.rs b/tests/ui/feature-gates/feature-gate-auto-traits.rs index 80cfa9cee89..aab9e784fe9 100644 --- a/tests/ui/feature-gates/feature-gate-auto-traits.rs +++ b/tests/ui/feature-gates/feature-gate-auto-traits.rs @@ -7,6 +7,6 @@ auto trait AutoDummyTrait {} //~^ ERROR auto traits are experimental and possibly buggy impl !AutoDummyTrait for DummyStruct {} -//~^ ERROR negative trait bounds are not yet fully implemented; use marker types for now +//~^ ERROR negative trait bounds are not fully implemented; use marker types for now fn main() {} diff --git a/tests/ui/feature-gates/feature-gate-auto-traits.stderr b/tests/ui/feature-gates/feature-gate-auto-traits.stderr index 139229ca809..8fa5168b2d0 100644 --- a/tests/ui/feature-gates/feature-gate-auto-traits.stderr +++ b/tests/ui/feature-gates/feature-gate-auto-traits.stderr @@ -8,7 +8,7 @@ LL | auto trait AutoDummyTrait {} = help: add `#![feature(auto_traits)]` to the crate attributes to enable = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date -error[E0658]: negative trait bounds are not yet fully implemented; use marker types for now +error[E0658]: negative trait bounds are not fully implemented; use marker types for now --> $DIR/feature-gate-auto-traits.rs:9:6 | LL | impl !AutoDummyTrait for DummyStruct {} diff --git a/tests/ui/symbol-names/basic.legacy.stderr b/tests/ui/symbol-names/basic.legacy.stderr index 6ce0ae09195..2f26c0cf0d3 100644 --- a/tests/ui/symbol-names/basic.legacy.stderr +++ b/tests/ui/symbol-names/basic.legacy.stderr @@ -1,10 +1,10 @@ -error: symbol-name(_ZN5basic4main17had874e876c8b1028E) +error: symbol-name(_ZN5basic4main17h144191e1523a280eE) --> $DIR/basic.rs:8:1 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ -error: demangling(basic::main::had874e876c8b1028) +error: demangling(basic::main::h144191e1523a280e) --> $DIR/basic.rs:8:1 | LL | #[rustc_symbol_name] diff --git a/tests/ui/symbol-names/issue-60925.legacy.stderr b/tests/ui/symbol-names/issue-60925.legacy.stderr index cc4eec470fb..cc79cc8b516 100644 --- a/tests/ui/symbol-names/issue-60925.legacy.stderr +++ b/tests/ui/symbol-names/issue-60925.legacy.stderr @@ -1,10 +1,10 @@ -error: symbol-name(_ZN11issue_609253foo37Foo$LT$issue_60925..llv$u6d$..Foo$GT$3foo17haf0d0ad2255e29c6E) +error: symbol-name(_ZN11issue_609253foo37Foo$LT$issue_60925..llv$u6d$..Foo$GT$3foo17h71f988fda3b6b180E) --> $DIR/issue-60925.rs:21:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ -error: demangling(issue_60925::foo::Foo<issue_60925::llvm::Foo>::foo::haf0d0ad2255e29c6) +error: demangling(issue_60925::foo::Foo<issue_60925::llvm::Foo>::foo::h71f988fda3b6b180) --> $DIR/issue-60925.rs:21:9 | LL | #[rustc_symbol_name] diff --git a/tests/ui/traits/negative-impls/feature-gate-negative_impls.rs b/tests/ui/traits/negative-impls/feature-gate-negative_impls.rs index 683fd6db6f2..8d3f6ff6d78 100644 --- a/tests/ui/traits/negative-impls/feature-gate-negative_impls.rs +++ b/tests/ui/traits/negative-impls/feature-gate-negative_impls.rs @@ -1,3 +1,3 @@ trait MyTrait {} -impl !MyTrait for u32 {} //~ ERROR negative trait bounds are not yet fully implemented +impl !MyTrait for u32 {} //~ ERROR negative trait bounds are not fully implemented fn main() {} diff --git a/tests/ui/traits/negative-impls/feature-gate-negative_impls.stderr b/tests/ui/traits/negative-impls/feature-gate-negative_impls.stderr index f3dee114116..1777dfcc993 100644 --- a/tests/ui/traits/negative-impls/feature-gate-negative_impls.stderr +++ b/tests/ui/traits/negative-impls/feature-gate-negative_impls.stderr @@ -1,4 +1,4 @@ -error[E0658]: negative trait bounds are not yet fully implemented; use marker types for now +error[E0658]: negative trait bounds are not fully implemented; use marker types for now --> $DIR/feature-gate-negative_impls.rs:2:6 | LL | impl !MyTrait for u32 {} diff --git a/tests/ui/unsafe-binders/expr.rs b/tests/ui/unsafe-binders/expr.rs index d8c4c2df2cd..0fe68751f0a 100644 --- a/tests/ui/unsafe-binders/expr.rs +++ b/tests/ui/unsafe-binders/expr.rs @@ -4,10 +4,11 @@ use std::unsafe_binder::{wrap_binder, unwrap_binder}; fn main() { + unsafe { let x = 1; - let binder: unsafe<'a> &'a i32 = wrap_binder!(x); - //~^ ERROR unsafe binders are not yet implemented - //~| ERROR unsafe binders are not yet implemented - let rx = *unwrap_binder!(binder); - //~^ ERROR unsafe binders are not yet implemented + let binder: unsafe<'a> &'a i32 = wrap_binder!(&x); + //~^ ERROR unsafe binder casts are not fully implemented + let rx = *unwrap_binder!(binder); + //~^ ERROR unsafe binder casts are not fully implemented + } } diff --git a/tests/ui/unsafe-binders/expr.stderr b/tests/ui/unsafe-binders/expr.stderr index 26fae1958b0..78a288e10a3 100644 --- a/tests/ui/unsafe-binders/expr.stderr +++ b/tests/ui/unsafe-binders/expr.stderr @@ -7,23 +7,17 @@ LL | #![feature(unsafe_binders)] = note: see issue #130516 <https://github.com/rust-lang/rust/issues/130516> for more information = note: `#[warn(incomplete_features)]` on by default -error: unsafe binders are not yet implemented - --> $DIR/expr.rs:8:17 +error: unsafe binder casts are not fully implemented + --> $DIR/expr.rs:9:55 | -LL | let binder: unsafe<'a> &'a i32 = wrap_binder!(x); - | ^^^^^^^^^^^^^^^^^^ +LL | let binder: unsafe<'a> &'a i32 = wrap_binder!(&x); + | ^^ -error: unsafe binders are not yet implemented - --> $DIR/expr.rs:8:51 +error: unsafe binder casts are not fully implemented + --> $DIR/expr.rs:11:34 | -LL | let binder: unsafe<'a> &'a i32 = wrap_binder!(x); - | ^ +LL | let rx = *unwrap_binder!(binder); + | ^^^^^^ -error: unsafe binders are not yet implemented - --> $DIR/expr.rs:11:30 - | -LL | let rx = *unwrap_binder!(binder); - | ^^^^^^ - -error: aborting due to 3 previous errors; 1 warning emitted +error: aborting due to 2 previous errors; 1 warning emitted diff --git a/tests/ui/unsafe-binders/lifetime-resolution.rs b/tests/ui/unsafe-binders/lifetime-resolution.rs index aebed9599d4..b352acfadf2 100644 --- a/tests/ui/unsafe-binders/lifetime-resolution.rs +++ b/tests/ui/unsafe-binders/lifetime-resolution.rs @@ -3,16 +3,13 @@ fn foo<'a>() { let good: unsafe<'b> &'a &'b (); - //~^ ERROR unsafe binders are not yet implemented let missing: unsafe<> &'missing (); - //~^ ERROR unsafe binders are not yet implemented - //~| ERROR use of undeclared lifetime name `'missing` + //~^ ERROR use of undeclared lifetime name `'missing` fn inner<'b>() { let outer: unsafe<> &'a &'b (); - //~^ ERROR unsafe binders are not yet implemented - //~| can't use generic parameters from outer item + //~^ can't use generic parameters from outer item } } diff --git a/tests/ui/unsafe-binders/lifetime-resolution.stderr b/tests/ui/unsafe-binders/lifetime-resolution.stderr index 7a8ce929df1..69660c271bf 100644 --- a/tests/ui/unsafe-binders/lifetime-resolution.stderr +++ b/tests/ui/unsafe-binders/lifetime-resolution.stderr @@ -1,5 +1,5 @@ error[E0261]: use of undeclared lifetime name `'missing` - --> $DIR/lifetime-resolution.rs:8:28 + --> $DIR/lifetime-resolution.rs:7:28 | LL | let missing: unsafe<> &'missing (); | ^^^^^^^^ undeclared lifetime @@ -15,7 +15,7 @@ LL | fn foo<'missing, 'a>() { | +++++++++ error[E0401]: can't use generic parameters from outer item - --> $DIR/lifetime-resolution.rs:13:30 + --> $DIR/lifetime-resolution.rs:11:30 | LL | fn foo<'a>() { | -- lifetime parameter from outer item @@ -41,25 +41,7 @@ LL | #![feature(unsafe_binders)] = note: see issue #130516 <https://github.com/rust-lang/rust/issues/130516> for more information = note: `#[warn(incomplete_features)]` on by default -error: unsafe binders are not yet implemented - --> $DIR/lifetime-resolution.rs:5:15 - | -LL | let good: unsafe<'b> &'a &'b (); - | ^^^^^^^^^^^^^^^^^^^^^ - -error: unsafe binders are not yet implemented - --> $DIR/lifetime-resolution.rs:8:18 - | -LL | let missing: unsafe<> &'missing (); - | ^^^^^^^^^^^^^^^^^^^^^ - -error: unsafe binders are not yet implemented - --> $DIR/lifetime-resolution.rs:13:20 - | -LL | let outer: unsafe<> &'a &'b (); - | ^^^^^^^^^^^^^^^^^^^ - -error: aborting due to 5 previous errors; 1 warning emitted +error: aborting due to 2 previous errors; 1 warning emitted Some errors have detailed explanations: E0261, E0401. For more information about an error, try `rustc --explain E0261`. diff --git a/tests/ui/unsafe-binders/mismatch.rs b/tests/ui/unsafe-binders/mismatch.rs new file mode 100644 index 00000000000..731fe2d1ce9 --- /dev/null +++ b/tests/ui/unsafe-binders/mismatch.rs @@ -0,0 +1,43 @@ +#![feature(unsafe_binders)] +//~^ WARN the feature `unsafe_binders` is incomplete + +use std::unsafe_binder::{wrap_binder, unwrap_binder}; + +fn a() { + let _: unsafe<'a> &'a i32 = wrap_binder!(&()); + //~^ ERROR unsafe binder casts are not fully implemented + //~| ERROR mismatched types +} + +fn b() { + let _: i32 = wrap_binder!(&()); + //~^ ERROR unsafe binder casts are not fully implemented + //~| ERROR `wrap_binder!()` can only wrap into unsafe binder +} + +fn c() { + let y = 1; + unwrap_binder!(y); + //~^ ERROR unsafe binder casts are not fully implemented + //~| ERROR expected unsafe binder, found integer as input +} + +fn d() { + let unknown = Default::default(); + unwrap_binder!(unknown); + //~^ ERROR unsafe binder casts are not fully implemented + // FIXME(unsafe_binders): This should report ambiguity once we've removed + // the error above which taints the infcx. +} + +fn e() { + let x = wrap_binder!(&42); + //~^ ERROR unsafe binder casts are not fully implemented + // Currently, type inference doesn't flow backwards for unsafe binders. + // It could, perhaps, but that may cause even more surprising corners. + // FIXME(unsafe_binders): This should report ambiguity once we've removed + // the error above which taints the infcx. + let _: unsafe<'a> &'a i32 = x; +} + +fn main() {} diff --git a/tests/ui/unsafe-binders/mismatch.stderr b/tests/ui/unsafe-binders/mismatch.stderr new file mode 100644 index 00000000000..a720e5dbdc1 --- /dev/null +++ b/tests/ui/unsafe-binders/mismatch.stderr @@ -0,0 +1,68 @@ +warning: the feature `unsafe_binders` is incomplete and may not be safe to use and/or cause compiler crashes + --> $DIR/mismatch.rs:1:12 + | +LL | #![feature(unsafe_binders)] + | ^^^^^^^^^^^^^^ + | + = note: see issue #130516 <https://github.com/rust-lang/rust/issues/130516> for more information + = note: `#[warn(incomplete_features)]` on by default + +error: unsafe binder casts are not fully implemented + --> $DIR/mismatch.rs:7:46 + | +LL | let _: unsafe<'a> &'a i32 = wrap_binder!(&()); + | ^^^ + +error[E0308]: mismatched types + --> $DIR/mismatch.rs:7:46 + | +LL | let _: unsafe<'a> &'a i32 = wrap_binder!(&()); + | ^^^ expected `&i32`, found `&()` + | + = note: expected reference `&i32` + found reference `&()` + +error: unsafe binder casts are not fully implemented + --> $DIR/mismatch.rs:13:31 + | +LL | let _: i32 = wrap_binder!(&()); + | ^^^ + +error: `wrap_binder!()` can only wrap into unsafe binder, not `i32` + --> $DIR/mismatch.rs:13:18 + | +LL | let _: i32 = wrap_binder!(&()); + | ^^^^^^^^^^^^^^^^^ + | + = note: unsafe binders are the only valid output of wrap + = note: this error originates in the macro `wrap_binder` (in Nightly builds, run with -Z macro-backtrace for more info) + +error: unsafe binder casts are not fully implemented + --> $DIR/mismatch.rs:20:20 + | +LL | unwrap_binder!(y); + | ^ + +error: expected unsafe binder, found integer as input of `unwrap_binder!()` + --> $DIR/mismatch.rs:20:20 + | +LL | unwrap_binder!(y); + | ^ + | + = note: only an unsafe binder type can be unwrapped + +error: unsafe binder casts are not fully implemented + --> $DIR/mismatch.rs:27:20 + | +LL | unwrap_binder!(unknown); + | ^^^^^^^ + +error: unsafe binder casts are not fully implemented + --> $DIR/mismatch.rs:34:26 + | +LL | let x = wrap_binder!(&42); + | ^^^ + +error: aborting due to 8 previous errors; 1 warning emitted + +For more information about this error, try `rustc --explain E0308`. diff --git a/tests/ui/unsafe-binders/simple.rs b/tests/ui/unsafe-binders/simple.rs index cebff2cbfb8..6172a9e1e7b 100644 --- a/tests/ui/unsafe-binders/simple.rs +++ b/tests/ui/unsafe-binders/simple.rs @@ -1,7 +1,8 @@ +//@ check-pass + #![feature(unsafe_binders)] //~^ WARN the feature `unsafe_binders` is incomplete fn main() { let x: unsafe<'a> &'a (); - //~^ ERROR unsafe binders are not yet implemented } diff --git a/tests/ui/unsafe-binders/simple.stderr b/tests/ui/unsafe-binders/simple.stderr index a21dbd00b4c..e4b82c12b06 100644 --- a/tests/ui/unsafe-binders/simple.stderr +++ b/tests/ui/unsafe-binders/simple.stderr @@ -1,5 +1,5 @@ warning: the feature `unsafe_binders` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/simple.rs:1:12 + --> $DIR/simple.rs:3:12 | LL | #![feature(unsafe_binders)] | ^^^^^^^^^^^^^^ @@ -7,11 +7,5 @@ LL | #![feature(unsafe_binders)] = note: see issue #130516 <https://github.com/rust-lang/rust/issues/130516> for more information = note: `#[warn(incomplete_features)]` on by default -error: unsafe binders are not yet implemented - --> $DIR/simple.rs:5:12 - | -LL | let x: unsafe<'a> &'a (); - | ^^^^^^^^^^^^^^^^^ - -error: aborting due to 1 previous error; 1 warning emitted +warning: 1 warning emitted |
